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/llb1Sched.c.ll b/bench/abc/optimized/llb1Sched.c.ll index f9fa31176dc..d505f0684a4 100644 --- a/bench/abc/optimized/llb1Sched.c.ll +++ b/bench/abc/optimized/llb1Sched.c.ll @@ -235,7 +235,7 @@ define range(i32 -2147483648, 2147483646) i32 @Llb_MtrFindBestColumn(ptr nocaptu %86 = icmp sgt i32 %.lcssa164, 0 %87 = getelementptr inbounds i8, ptr %0, i64 40 %88 = getelementptr inbounds i8, ptr %0, i64 64 - br i1 %86, label %.preheader.lr.ph.split.us, label %.preheader + br i1 %86, label %.preheader.lr.ph.split.us, label %.loopexit .preheader.lr.ph.split.us: ; preds = %.preheader.lr.ph %89 = getelementptr inbounds i8, ptr %0, i64 56 @@ -307,19 +307,8 @@ define range(i32 -2147483648, 2147483646) i32 @Llb_MtrFindBestColumn(ptr nocaptu %116 = icmp sgt i32 %.087129.us, %.192.us br i1 %116, label %95, label %92 -.preheader: ; preds = %.preheader.lr.ph, %.preheader - %.2132 = phi i32 [ %spec.select167, %.preheader ], [ %.074.lcssa163, %.preheader.lr.ph ] - %.4131 = phi i32 [ %118, %.preheader ], [ %1, %.preheader.lr.ph ] - %.087129 = phi i32 [ %spec.select166, %.preheader ], [ 1000000000, %.preheader.lr.ph ] - %117 = icmp sgt i32 %.087129, 0 - %spec.select166 = tail call i32 @llvm.smin.i32(i32 %.087129, i32 0) - %spec.select167 = select i1 %117, i32 %.4131, i32 %.2132 - %118 = add nsw i32 %.4131, 1 - %exitcond145.not = icmp eq i32 %118, %84 - br i1 %exitcond145.not, label %.loopexit, label %.preheader, !llvm.loop !8 - -.loopexit: ; preds = %.preheader, %97, %.preheader101, %._crit_edge119 - %.093 = phi i32 [ %.175, %._crit_edge119 ], [ %.074.lcssa163, %.preheader101 ], [ %.3.us, %97 ], [ %spec.select167, %.preheader ] +.loopexit: ; preds = %97, %.preheader.lr.ph, %.preheader101, %._crit_edge119 + %.093 = phi i32 [ %.175, %._crit_edge119 ], [ %.074.lcssa163, %.preheader101 ], [ %1, %.preheader.lr.ph ], [ %.3.us, %97 ] ret i32 %.093 } @@ -331,7 +320,7 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #1 { br i1 %.not, label %23, label %5 5: ; preds = %2 - %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #8 + %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #7 %.not8 = icmp eq i32 %6, 0 br i1 %.not8, label %7, label %9 @@ -341,26 +330,26 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #1 { 9: ; preds = %5 %10 = load ptr, ptr @stdout, align 8 - %11 = tail call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef 7, ptr noundef nonnull @.str.3) #8 + %11 = tail call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef 7, ptr noundef nonnull @.str.3) #7 br label %12 12: ; preds = %9, %7 call void @llvm.va_start.p0(ptr nonnull %3) - %13 = call i32 (...) @Abc_FrameIsBridgeMode() #8 + %13 = call i32 (...) @Abc_FrameIsBridgeMode() #7 %.not9 = icmp eq i32 %13, 0 br i1 %.not9, label %20, label %14 14: ; preds = %12 - %15 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #8 + %15 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #7 %16 = load ptr, ptr @stdout, align 8 - %17 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %15) #9 + %17 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %15) #8 %18 = trunc i64 %17 to i32 - %19 = call i32 @Gia_ManToBridgeText(ptr noundef %16, i32 noundef %18, ptr noundef %15) #8 - call void @free(ptr noundef %15) #8 + %19 = call i32 @Gia_ManToBridgeText(ptr noundef %16, i32 noundef %18, ptr noundef %15) #7 + call void @free(ptr noundef %15) #7 br label %22 20: ; preds = %12 - %21 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #8 + %21 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #7 br label %22 22: ; preds = %20, %14 @@ -587,7 +576,7 @@ define void @Llb_MtrSchedule(ptr noundef %0) local_unnamed_addr #1 { br i1 %35, label %9, label %._crit_edge, !llvm.loop !13 ._crit_edge: ; preds = %30, %1 - tail call void @Llb_MtrVerifyMatrix(ptr noundef nonnull %0) #8 + tail call void @Llb_MtrVerifyMatrix(ptr noundef nonnull %0) #7 %36 = getelementptr inbounds i8, ptr %0, i64 12 %37 = load i32, ptr %36, align 4 %38 = icmp sgt i32 %37, 2 @@ -783,7 +772,7 @@ Llb_MtrSwapColumns.exit: ; preds = %Llb_MtrUseSelectedC br i1 %143, label %45, label %._crit_edge43, !llvm.loop !14 ._crit_edge43: ; preds = %Llb_MtrSwapColumns.exit, %._crit_edge - tail call void @Llb_MtrVerifyMatrix(ptr noundef nonnull %0) #8 + tail call void @Llb_MtrVerifyMatrix(ptr noundef nonnull %0) #7 ret void } @@ -813,9 +802,6 @@ declare void @llvm.va_start.p0(ptr) #6 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.va_end.p0(ptr) #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #7 - attributes #0 = { 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" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -823,9 +809,8 @@ attributes #3 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true attributes #4 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn } -attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nounwind } -attributes #9 = { nounwind willreturn memory(read) } +attributes #7 = { nounwind } +attributes #8 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/abc/optimized/pdrUtil.c.ll b/bench/abc/optimized/pdrUtil.c.ll index 9cd49142774..286fbd6425c 100644 --- a/bench/abc/optimized/pdrUtil.c.ll +++ b/bench/abc/optimized/pdrUtil.c.ll @@ -88,7 +88,7 @@ define noalias noundef ptr @Pdr_SetCreate(ptr nocapture noundef readonly %0, ptr %.024.i = phi i32 [ %29, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %30 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv29.i %31 = load i32, ptr %30, align 4 - %32 = sext i32 %.024.i to i64 + %32 = zext nneg i32 %.024.i to i64 %33 = getelementptr inbounds i32, ptr %27, i64 %32 %34 = load i32, ptr %33, align 4 %35 = icmp slt i32 %31, %34 @@ -102,49 +102,42 @@ define noalias noundef ptr @Pdr_SetCreate(ptr nocapture noundef readonly %0, ptr %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %37 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv32.i %38 = load i32, ptr %37, align 4 - %39 = sext i32 %spec.select.i to i64 + %39 = zext nneg i32 %spec.select.i to i64 %40 = getelementptr inbounds i32, ptr %27, i64 %39 %41 = load i32, ptr %40, align 4 store i32 %41, ptr %37, align 4 store i32 %38, ptr %40, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond36.not.i = icmp eq i64 %indvars.iv.next33.i, %wide.trip.count35.i - br i1 %exitcond36.not.i, label %Vec_IntSelectSort.exit.loopexit, label %.lr.ph.preheader.i, !llvm.loop !7 - -Vec_IntSelectSort.exit.loopexit: ; preds = %._crit_edge.i - %.pre = load i32, ptr %10, align 8 - %.pre45 = load i32, ptr %11, align 4 - br label %Vec_IntSelectSort.exit + br i1 %exitcond36.not.i, label %Vec_IntSelectSort.exit, label %.lr.ph.preheader.i, !llvm.loop !7 -Vec_IntSelectSort.exit: ; preds = %2, %Vec_IntSelectSort.exit.loopexit, %26 - %42 = phi i32 [ %.pre45, %Vec_IntSelectSort.exit.loopexit ], [ %5, %26 ], [ %5, %2 ] - %43 = phi i32 [ %.pre, %Vec_IntSelectSort.exit.loopexit ], [ %.val, %26 ], [ %.val, %2 ] - %44 = icmp slt i32 %43, %42 - br i1 %44, label %.lr.ph39, label %._crit_edge40 +Vec_IntSelectSort.exit: ; preds = %._crit_edge.i, %2, %26 + %42 = icmp sgt i32 %.val31, 0 + br i1 %42, label %.lr.ph39, label %._crit_edge40 .lr.ph39: ; preds = %Vec_IntSelectSort.exit - %45 = getelementptr i8, ptr %1, i64 8 - %.val36 = load ptr, ptr %45, align 8 - %46 = sext i32 %43 to i64 - %47 = getelementptr inbounds i8, ptr %9, i64 20 - br label %48 - -48: ; preds = %.lr.ph39, %48 - %indvars.iv42 = phi i64 [ %46, %.lr.ph39 ], [ %indvars.iv.next43, %48 ] - %49 = load i32, ptr %10, align 8 - %50 = sext i32 %49 to i64 - %51 = sub nsw i64 %indvars.iv42, %50 - %52 = getelementptr inbounds i32, ptr %.val36, i64 %51 - %53 = load i32, ptr %52, align 4 - %54 = getelementptr inbounds [0 x i32], ptr %47, i64 0, i64 %indvars.iv42 - store i32 %53, ptr %54, align 4 + %43 = getelementptr i8, ptr %1, i64 8 + %.val36 = load ptr, ptr %43, align 8 + %44 = sext i32 %.val to i64 + %45 = getelementptr inbounds i8, ptr %9, i64 20 + br label %46 + +46: ; preds = %.lr.ph39, %46 + %indvars.iv42 = phi i64 [ %44, %.lr.ph39 ], [ %indvars.iv.next43, %46 ] + %47 = load i32, ptr %10, align 8 + %48 = sext i32 %47 to i64 + %49 = sub nsw i64 %indvars.iv42, %48 + %50 = getelementptr inbounds i32, ptr %.val36, i64 %49 + %51 = load i32, ptr %50, align 4 + %52 = getelementptr inbounds [0 x i32], ptr %45, i64 0, i64 %indvars.iv42 + store i32 %51, ptr %52, align 4 %indvars.iv.next43 = add nsw i64 %indvars.iv42, 1 - %55 = load i32, ptr %11, align 4 - %56 = sext i32 %55 to i64 - %57 = icmp slt i64 %indvars.iv.next43, %56 - br i1 %57, label %48, label %._crit_edge40, !llvm.loop !8 + %53 = load i32, ptr %11, align 4 + %54 = sext i32 %53 to i64 + %55 = icmp slt i64 %indvars.iv.next43, %54 + br i1 %55, label %46, label %._crit_edge40, !llvm.loop !8 -._crit_edge40: ; preds = %48, %Vec_IntSelectSort.exit +._crit_edge40: ; preds = %46, %Vec_IntSelectSort.exit ret ptr %9 } @@ -284,7 +277,7 @@ define noalias noundef ptr @Pdr_SetCreateSubset(ptr nocapture noundef readonly % %.024.i = phi i32 [ %35, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %36 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv29.i %37 = load i32, ptr %36, align 4 - %38 = sext i32 %.024.i to i64 + %38 = zext nneg i32 %.024.i to i64 %39 = getelementptr inbounds i32, ptr %33, i64 %38 %40 = load i32, ptr %39, align 4 %41 = icmp slt i32 %37, %40 @@ -298,7 +291,7 @@ define noalias noundef ptr @Pdr_SetCreateSubset(ptr nocapture noundef readonly % %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %43 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv32.i %44 = load i32, ptr %43, align 4 - %45 = sext i32 %spec.select.i to i64 + %45 = zext nneg i32 %spec.select.i to i64 %46 = getelementptr inbounds i32, ptr %33, i64 %45 %47 = load i32, ptr %46, align 4 store i32 %47, ptr %43, align 4 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/arrow/optimized/codegen_internal.cc.ll b/bench/arrow/optimized/codegen_internal.cc.ll index cdfb136f4f7..7faaddb232f 100644 --- a/bench/arrow/optimized/codegen_internal.cc.ll +++ b/bench/arrow/optimized/codegen_internal.cc.ll @@ -2937,7 +2937,7 @@ for.end58: ; preds = %_ZN5arrowL9bit_widt br i1 %cmp59, label %if.then60, label %if.end95 if.then60: ; preds = %for.end58 - %cmp61 = icmp sgt i32 %spec.select229, 63 + %cmp61 = icmp samesign ugt i32 %spec.select229, 63 br i1 %cmp61, label %if.then62, label %if.end67 if.then62: ; preds = %if.then60 @@ -3115,7 +3115,7 @@ _ZNSt10shared_ptrIN5arrow8DataTypeEEC2ERKS2_.exit128: ; preds = %while.end90, %i br label %return if.end95: ; preds = %for.end58 - %cmp96.not = icmp sgt i32 %spec.select, %spec.select229 + %cmp96.not = icmp samesign ugt i32 %spec.select, %spec.select229 br i1 %cmp96.not, label %if.end100, label %if.then97 if.then97: ; preds = %if.end95 diff --git a/bench/assimp/optimized/FBXTokenizer.cpp.ll b/bench/assimp/optimized/FBXTokenizer.cpp.ll index 16e6ca5e49a..d744ce62113 100644 --- a/bench/assimp/optimized/FBXTokenizer.cpp.ll +++ b/bench/assimp/optimized/FBXTokenizer.cpp.ll @@ -540,8 +540,8 @@ for.body: ; preds = %for.cond.preheader, %cmp2 = icmp eq i8 %2, 34 %frombool5 = zext i1 %cmp2 to i8 %in_double_quotes.1 = xor i8 %in_double_quotes.027, %frombool5 - %tobool6 = trunc i8 %in_double_quotes.1 to i1 - br i1 %tobool6, label %for.inc, label %land.lhs.true7 + %tobool6.not = icmp eq i8 %in_double_quotes.027, %frombool5 + br i1 %tobool6.not, label %land.lhs.true7, label %for.inc land.lhs.true7: ; preds = %for.body switch i8 %2, label %for.inc [ @@ -582,8 +582,8 @@ for.inc: ; preds = %land.lhs.true7, %fo br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !6 for.end: ; preds = %for.inc - %5 = trunc i8 %in_double_quotes.1 to i1 - br i1 %5, label %if.then14, label %if.end23 + %.not = icmp eq i8 %in_double_quotes.027, %frombool5 + br i1 %.not, label %if.end23, label %if.then14 if.then14: ; preds = %for.end call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp16) #16 @@ -598,49 +598,49 @@ invoke.cont20: ; preds = %invoke.cont18 unreachable lpad17: ; preds = %if.then14 - %6 = landingpad { ptr, i32 } + %5 = landingpad { ptr, i32 } cleanup br label %eh.resume lpad19: ; preds = %invoke.cont18 - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp15) #16 br label %eh.resume if.end23: ; preds = %for.cond.preheader, %for.end %call25 = tail call noundef ptr @_ZN6Assimp14StackAllocator8AllocateEm(ptr noundef nonnull align 8 dereferenceable(40) %token_allocator, i64 noundef 40) - %8 = load ptr, ptr %start, align 8 - %9 = load ptr, ptr %end, align 8 - %add.ptr26 = getelementptr inbounds i8, ptr %9, i64 1 - store ptr %8, ptr %call25, align 8 + %7 = load ptr, ptr %start, align 8 + %8 = load ptr, ptr %end, align 8 + %add.ptr26 = getelementptr inbounds i8, ptr %8, i64 1 + store ptr %7, ptr %call25, align 8 %send3.i = getelementptr inbounds i8, ptr %call25, i64 8 store ptr %add.ptr26, ptr %send3.i, align 8 %type4.i = getelementptr inbounds i8, ptr %call25, i64 16 store i32 %type, ptr %type4.i, align 8 - %10 = getelementptr inbounds i8, ptr %call25, i64 24 + %9 = getelementptr inbounds i8, ptr %call25, i64 24 %conv.i = zext i32 %line to i64 - store i64 %conv.i, ptr %10, align 8 + store i64 %conv.i, ptr %9, align 8 %column5.i = getelementptr inbounds i8, ptr %call25, i64 32 store i32 %column, ptr %column5.i, align 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %output_tokens, i64 8 - %11 = load ptr, ptr %_M_finish.i.i, align 8 + %10 = load ptr, ptr %_M_finish.i.i, align 8 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %output_tokens, i64 16 - %12 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %cmp.not.i.i = icmp eq ptr %11, %12 + %11 = load ptr, ptr %_M_end_of_storage.i.i, align 8 + %cmp.not.i.i = icmp eq ptr %10, %11 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %if.end23 - store ptr %call25, ptr %11, align 8 - %13 = load ptr, ptr %_M_finish.i.i, align 8 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %13, i64 8 + store ptr %call25, ptr %10, align 8 + %12 = load ptr, ptr %_M_finish.i.i, align 8 + %incdec.ptr.i.i = getelementptr inbounds i8, ptr %12, i64 8 store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i, align 8 br label %if.end38 if.else.i.i: ; preds = %if.end23 - %14 = load ptr, ptr %output_tokens, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %11 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %14 to i64 + %13 = load ptr, ptr %output_tokens, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %10 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %13 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %cmp.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i, 9223372036854775800 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i @@ -654,8 +654,8 @@ _ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i: ; pre %.sroa.speculated.i.i.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i, i64 1) %add.i.i.i.i = add nsw i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i %cmp7.i.i.i.i = icmp ult i64 %add.i.i.i.i, %sub.ptr.div.i.i.i.i.i - %15 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) - %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %15 + %14 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) + %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %14 %cmp.not.i.i.i.i = icmp eq i64 %cond.i.i.i.i, 0 br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i, label %cond.true.i.i.i.i @@ -672,17 +672,17 @@ _ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i: ; p br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i if.then.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %cond.i10.i.i.i, ptr align 8 %14, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %cond.i10.i.i.i, ptr align 8 %13, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i _ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i10.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i, i64 8 - %tobool.not.i.i.i.i = icmp eq ptr %14, null + %tobool.not.i.i.i.i = icmp eq ptr %13, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i, label %if.then.i18.i.i.i if.then.i18.i.i.i: ; preds = %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i - tail call void @_ZdlPv(ptr noundef nonnull %14) #19 + tail call void @_ZdlPv(ptr noundef nonnull %13) #19 br label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i _ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i: ; preds = %if.then.i18.i.i.i, %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i @@ -708,12 +708,12 @@ invoke.cont34: ; preds = %invoke.cont32 unreachable lpad31: ; preds = %if.then28 - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup br label %eh.resume lpad33: ; preds = %invoke.cont32 - %17 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp29) #16 br label %eh.resume @@ -725,7 +725,7 @@ if.end38: ; preds = %_ZNSt6vectorIPKN6As eh.resume: ; preds = %lpad31, %lpad33, %lpad17, %lpad19, %lpad, %lpad10 %ref.tmp30.sink = phi ptr [ %ref.tmp9, %lpad10 ], [ %ref.tmp9, %lpad ], [ %ref.tmp16, %lpad19 ], [ %ref.tmp16, %lpad17 ], [ %ref.tmp30, %lpad33 ], [ %ref.tmp30, %lpad31 ] - %.pn21.pn = phi { ptr, i32 } [ %4, %lpad10 ], [ %3, %lpad ], [ %7, %lpad19 ], [ %6, %lpad17 ], [ %17, %lpad33 ], [ %16, %lpad31 ] + %.pn21.pn = phi { ptr, i32 } [ %4, %lpad10 ], [ %3, %lpad ], [ %6, %lpad19 ], [ %5, %lpad17 ], [ %16, %lpad33 ], [ %15, %lpad31 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp30.sink) #16 resume { ptr, i32 } %.pn21.pn } 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/IFCUtil.cpp.ll b/bench/assimp/optimized/IFCUtil.cpp.ll index 99cb31f06a6..7722b150424 100644 --- a/bench/assimp/optimized/IFCUtil.cpp.ll +++ b/bench/assimp/optimized/IFCUtil.cpp.ll @@ -1102,7 +1102,7 @@ entry: %_M_finish.i = getelementptr inbounds i8, ptr %this, i64 32 %1 = load ptr, ptr %_M_finish.i, align 8 %cmp.i.not128 = icmp eq ptr %add.ptr.i, %1 - br i1 %cmp.i.not128, label %invoke.cont, label %for.body + br i1 %cmp.i.not128, label %if.then.i.i.i.i.i, label %for.body for.body: ; preds = %entry, %for.body %max_vcount.0130 = phi i64 [ %.sroa.speculated, %for.body ], [ 0, %entry ] @@ -1112,25 +1112,25 @@ for.body: ; preds = %entry, %for.body %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %max_vcount.0130, i64 %conv) %incdec.ptr.i = getelementptr inbounds i8, ptr %iit.sroa.0.0129, i64 4 %cmp.i.not = icmp eq ptr %incdec.ptr.i, %1 - br i1 %cmp.i.not, label %for.end.loopexit, label %for.body, !llvm.loop !32 + br i1 %cmp.i.not, label %if.then.i.i.i.i.i.loopexit, label %for.body, !llvm.loop !32 -for.end.loopexit: ; preds = %for.body - %3 = shl i64 %.sroa.speculated, 5 - %4 = add i64 %3, 64 - br label %invoke.cont +if.then.i.i.i.i.i.loopexit: ; preds = %for.body + %3 = shl nuw nsw i64 %.sroa.speculated, 5 + br label %if.then.i.i.i.i.i -invoke.cont: ; preds = %entry, %for.end.loopexit - %max_vcount.0.lcssa = phi i64 [ 64, %entry ], [ %4, %for.end.loopexit ] - %call5.i.i.i.i2.i.i19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %max_vcount.0.lcssa) #22 +if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.loopexit, %entry + %max_vcount.0.lcssa = phi i64 [ 0, %entry ], [ %3, %if.then.i.i.i.i.i.loopexit ] + %mul.i.i.i.i.i.i = add nuw nsw i64 %max_vcount.0.lcssa, 64 + %call5.i.i.i.i2.i.i19 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #22 store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i19, align 8 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i19, i64 8 - %5 = add nsw i64 %max_vcount.0.lcssa, -8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %incdec.ptr.i.i.i.i.i, i8 0, i64 %5, i1 false) + %4 = add nuw nsw i64 %max_vcount.0.lcssa, 56 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %incdec.ptr.i.i.i.i.i, i8 0, i64 %4, i1 false) %_M_finish.i20 = getelementptr inbounds i8, ptr %normals, i64 8 - %6 = load ptr, ptr %_M_finish.i20, align 8 - %7 = load ptr, ptr %normals, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %6 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %7 to i64 + %5 = load ptr, ptr %_M_finish.i20, align 8 + %6 = load ptr, ptr %normals, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %5 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %6 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %sub.ptr.lhs.cast.i22 = ptrtoint ptr %1 to i64 @@ -1142,18 +1142,18 @@ invoke.cont: ; preds = %entry, %for.end.loo %cmp.i26 = icmp ugt i64 %sub, 384307168202282325 br i1 %cmp.i26, label %if.then.i.invoke, label %if.end.i -if.then.i.invoke: ; preds = %if.else.i, %if.else.i53, %invoke.cont - %8 = phi ptr [ @.str.26, %invoke.cont ], [ @.str.27, %if.else.i53 ], [ @.str.27, %if.else.i ] - invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %8) #25 - to label %if.then.i.cont unwind label %lpad17.loopexit.split-lp +if.then.i.invoke: ; preds = %if.else.i, %if.else.i53, %if.then.i.i.i.i.i + %7 = phi ptr [ @.str.26, %if.then.i.i.i.i.i ], [ @.str.27, %if.else.i53 ], [ @.str.27, %if.else.i ] + invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull %7) #25 + to label %if.then.i.cont unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit.split-lp if.then.i.cont: ; preds = %if.then.i.invoke unreachable -if.end.i: ; preds = %invoke.cont +if.end.i: ; preds = %if.then.i.i.i.i.i %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %normals, i64 16 - %9 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %9 to i64 + %8 = load ptr, ptr %_M_end_of_storage.i.i, align 8 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %8 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 24 %cmp3.i = icmp ult i64 %sub.ptr.div.i.i, %sub @@ -1162,27 +1162,27 @@ if.end.i: ; preds = %invoke.cont _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i: ; preds = %if.end.i %mul.i.i.i.i = mul nuw nsw i64 %sub, 24 %call5.i.i.i.i31 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i) #22 - to label %call5.i.i.i.i.noexc unwind label %lpad17.loopexit.split-lp + to label %call5.i.i.i.i.noexc unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit.split-lp call5.i.i.i.i.noexc: ; preds = %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i - %cmp.not5.i.i.i.i = icmp eq ptr %7, %6 + %cmp.not5.i.i.i.i = icmp eq ptr %6, %5 br i1 %cmp.not5.i.i.i.i, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %call5.i.i.i.i.noexc, %for.body.i.i.i.i %__cur.07.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i, %for.body.i.i.i.i ], [ %call5.i.i.i.i31, %call5.i.i.i.i.noexc ] - %__first.addr.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.body.i.i.i.i ], [ %7, %call5.i.i.i.i.noexc ] + %__first.addr.06.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %for.body.i.i.i.i ], [ %6, %call5.i.i.i.i.noexc ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.07.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %__first.addr.06.i.i.i.i, i64 24, i1 false), !alias.scope !33 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i, i64 24 %incdec.ptr1.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i, i64 24 - %cmp.not.i.i.i.i27 = icmp eq ptr %incdec.ptr.i.i.i.i, %6 + %cmp.not.i.i.i.i27 = icmp eq ptr %incdec.ptr.i.i.i.i, %5 br i1 %cmp.not.i.i.i.i27, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit.i, label %for.body.i.i.i.i, !llvm.loop !37 _ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit.i: ; preds = %for.body.i.i.i.i, %call5.i.i.i.i.noexc - %tobool.not.i.i = icmp eq ptr %7, null + %tobool.not.i.i = icmp eq ptr %6, null br i1 %tobool.not.i.i, label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i, label %if.then.i.i28 if.then.i.i28: ; preds = %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit.i - tail call void @_ZdlPv(ptr noundef nonnull %7) #24 + tail call void @_ZdlPv(ptr noundef nonnull %6) #24 br label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i: ; preds = %if.then.i.i28, %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit.i @@ -1195,29 +1195,28 @@ _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i: ; preds br label %invoke.cont18 invoke.cont18: ; preds = %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i, %if.end.i - %10 = phi ptr [ %.pre, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i ], [ %0, %if.end.i ] - %cmp.i.not4.i = icmp eq ptr %10, %add.ptr.i + %9 = phi ptr [ %.pre, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE13_M_deallocateEPS1_m.exit.i ], [ %0, %if.end.i ] + %cmp.i.not4.i = icmp eq ptr %9, %add.ptr.i br i1 %cmp.i.not4.i, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit, label %for.body.i for.body.i: ; preds = %invoke.cont18, %for.body.i %__init.addr.06.i = phi i32 [ %add.i, %for.body.i ], [ 0, %invoke.cont18 ] - %__first.sroa.0.05.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %10, %invoke.cont18 ] - %11 = load i32, ptr %__first.sroa.0.05.i, align 4 - %add.i = add i32 %11, %__init.addr.06.i + %__first.sroa.0.05.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %9, %invoke.cont18 ] + %10 = load i32, ptr %__first.sroa.0.05.i, align 4 + %add.i = add i32 %10, %__init.addr.06.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i, i64 4 %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i br i1 %cmp.i.not.i, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit.loopexit, label %for.body.i, !llvm.loop !38 _ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit.loopexit: ; preds = %for.body.i - %12 = sext i32 %add.i to i64 + %11 = sext i32 %add.i to i64 br label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit _ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit: ; preds = %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit.loopexit, %invoke.cont18 - %__init.addr.0.lcssa.i = phi i64 [ 0, %invoke.cont18 ], [ %12, %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit.loopexit ] + %__init.addr.0.lcssa.i = phi i64 [ 0, %invoke.cont18 ], [ %11, %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit.loopexit ] br i1 %cmp.i.not128, label %for.end64, label %for.body30.lr.ph for.body30.lr.ph: ; preds = %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEiET0_T_S9_S8_.exit - %add.ptr.i92 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i19, i64 8 %add.ptr.i93 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i19, i64 16 %arrayidx2.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i19, i64 32 %arrayidx12.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i.i19, i64 40 @@ -1230,33 +1229,33 @@ for.body30.lr.ph: ; preds = %_ZSt10accumulateIN9 for.body30: ; preds = %for.body30.lr.ph, %for.inc57 %vidx.0137 = phi i64 [ %__init.addr.0.lcssa.i, %for.body30.lr.ph ], [ %add63, %for.inc57 ] %iit.sroa.0.1136 = phi ptr [ %add.ptr.i, %for.body30.lr.ph ], [ %incdec.ptr.i95, %for.inc57 ] - %13 = load i32, ptr %iit.sroa.0.1136, align 4 - %tobool.not = icmp eq i32 %13, 0 + %12 = load i32, ptr %iit.sroa.0.1136, align 4 + %tobool.not = icmp eq i32 %12, 0 br i1 %tobool.not, label %if.then, label %for.body37.lr.ph for.body37.lr.ph: ; preds = %for.body30 - %14 = load ptr, ptr %this, align 8 - %15 = getelementptr %class.aiVector3t, ptr %14, i64 %vidx.0137 - %conv36 = zext i32 %13 to i64 + %13 = load ptr, ptr %this, align 8 + %14 = getelementptr %class.aiVector3t, ptr %13, i64 %vidx.0137 + %conv36 = zext i32 %12 to i64 br label %for.body37 if.then: ; preds = %for.body30 - %16 = load ptr, ptr %_M_finish.i20, align 8 - %17 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %cmp.not.i = icmp eq ptr %16, %17 + %15 = load ptr, ptr %_M_finish.i20, align 8 + %16 = load ptr, ptr %_M_end_of_storage.i.i, align 8 + %cmp.not.i = icmp eq ptr %15, %16 br i1 %cmp.not.i, label %if.else.i, label %if.then.i34 if.then.i34: ; preds = %if.then - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false) - %18 = load ptr, ptr %_M_finish.i20, align 8 - %incdec.ptr.i35 = getelementptr inbounds i8, ptr %18, i64 24 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false) + %17 = load ptr, ptr %_M_finish.i20, align 8 + %incdec.ptr.i35 = getelementptr inbounds i8, ptr %17, i64 24 store ptr %incdec.ptr.i35, ptr %_M_finish.i20, align 8 br label %for.inc57 if.else.i: ; preds = %if.then - %19 = load ptr, ptr %normals, align 8 - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %16 to i64 - %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %19 to i64 + %18 = load ptr, ptr %normals, align 8 + %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %15 to i64 + %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %18 to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %cmp.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i, 9223372036854775800 br i1 %cmp.i.i.i, label %if.then.i.invoke, label %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i @@ -1266,40 +1265,40 @@ _ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %if %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i, i64 1) %add.i.i.i = add nsw i64 %.sroa.speculated.i.i.i, %sub.ptr.div.i.i.i.i %cmp7.i.i.i = icmp ult i64 %add.i.i.i, %sub.ptr.div.i.i.i.i - %20 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i, i64 384307168202282325) - %cond.i.i.i = select i1 %cmp7.i.i.i, i64 384307168202282325, i64 %20 + %19 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i, i64 384307168202282325) + %cond.i.i.i = select i1 %cmp7.i.i.i, i64 384307168202282325, i64 %19 %cmp.not.i.i.i = icmp eq i64 %cond.i.i.i, 0 br i1 %cmp.not.i.i.i, label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i, label %cond.true.i.i.i cond.true.i.i.i: ; preds = %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i %mul.i.i.i.i.i = mul nuw nsw i64 %cond.i.i.i, 24 %call5.i.i.i.i.i40 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i) #22 - to label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i unwind label %lpad17.loopexit + to label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i: ; preds = %cond.true.i.i.i, %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i %cond.i10.i.i = phi ptr [ null, %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i ], [ %call5.i.i.i.i.i40, %cond.true.i.i.i ] %add.ptr.i.i = getelementptr inbounds %class.aiVector3t, ptr %cond.i10.i.i, i64 %sub.ptr.div.i.i.i.i tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %add.ptr.i.i, i8 0, i64 24, i1 false) - %cmp.not5.i.i.i.i.i = icmp eq ptr %19, %16 + %cmp.not5.i.i.i.i.i = icmp eq ptr %18, %15 br i1 %cmp.not5.i.i.i.i.i, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i, label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i, %for.body.i.i.i.i.i %__cur.07.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %cond.i10.i.i, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i ] - %__first.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i37, %for.body.i.i.i.i.i ], [ %19, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i ] + %__first.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i37, %for.body.i.i.i.i.i ], [ %18, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.07.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(24) %__first.addr.06.i.i.i.i.i, i64 24, i1 false), !alias.scope !39 %incdec.ptr.i.i.i.i.i37 = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i.i, i64 24 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i.i, i64 24 - %cmp.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i37, %16 + %cmp.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i37, %15 br i1 %cmp.not.i.i.i.i.i, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i, label %for.body.i.i.i.i.i, !llvm.loop !37 _ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i: ; preds = %for.body.i.i.i.i.i, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i %__cur.0.lcssa.i.i.i.i.i = phi ptr [ %cond.i10.i.i, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i ], [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i ] %incdec.ptr.i.i38 = getelementptr inbounds i8, ptr %__cur.0.lcssa.i.i.i.i.i, i64 24 - %tobool.not.i.i.i = icmp eq ptr %19, null + %tobool.not.i.i.i = icmp eq ptr %18, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i, label %if.then.i20.i.i if.then.i20.i.i: ; preds = %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i - tail call void @_ZdlPv(ptr noundef nonnull %19) #24 + tail call void @_ZdlPv(ptr noundef nonnull %18) #24 br label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i _ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i: ; preds = %if.then.i20.i.i, %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i @@ -1309,55 +1308,60 @@ _ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__norm store ptr %add.ptr19.i.i, ptr %_M_end_of_storage.i.i, align 8 br label %for.inc57 -lpad17.loopexit: ; preds = %cond.true.i.i.i, %cond.true.i.i.i65 +_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit: ; preds = %cond.true.i.i.i, %cond.true.i.i.i65 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %eh.resume + br label %_ZNSt6vectorIdSaIdEED2Ev.exit -lpad17.loopexit.split-lp: ; preds = %if.then.i.invoke, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i +_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit.split-lp: ; preds = %if.then.i.invoke, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %eh.resume + br label %_ZNSt6vectorIdSaIdEED2Ev.exit + +_ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit.split-lp, %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit ], [ %lpad.loopexit.split-lp, %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit.split-lp ] + tail call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i2.i.i19) #24 + resume { ptr, i32 } %lpad.phi for.body37: ; preds = %for.body37.lr.ph, %for.body37 %cnt.0134 = phi i64 [ 0, %for.body37.lr.ph ], [ %inc45, %for.body37 ] %vofs.0133 = phi i64 [ 0, %for.body37.lr.ph ], [ %inc47, %for.body37 ] - %add.ptr.i43 = getelementptr %class.aiVector3t, ptr %15, i64 %vofs.0133 - %21 = load double, ptr %add.ptr.i43, align 8 + %add.ptr.i43 = getelementptr %class.aiVector3t, ptr %14, i64 %vofs.0133 + %20 = load double, ptr %add.ptr.i43, align 8 %inc = or disjoint i64 %cnt.0134, 1 %add.ptr.i44 = getelementptr inbounds double, ptr %call5.i.i.i.i2.i.i19, i64 %cnt.0134 - store double %21, ptr %add.ptr.i44, align 8 + store double %20, ptr %add.ptr.i44, align 8 %y = getelementptr inbounds i8, ptr %add.ptr.i43, i64 8 - %22 = load double, ptr %y, align 8 + %21 = load double, ptr %y, align 8 %inc41 = or disjoint i64 %cnt.0134, 2 %add.ptr.i45 = getelementptr inbounds double, ptr %call5.i.i.i.i2.i.i19, i64 %inc - store double %22, ptr %add.ptr.i45, align 8 + store double %21, ptr %add.ptr.i45, align 8 %z = getelementptr inbounds i8, ptr %add.ptr.i43, i64 16 - %23 = load double, ptr %z, align 8 + %22 = load double, ptr %z, align 8 %add.ptr.i46 = getelementptr inbounds double, ptr %call5.i.i.i.i2.i.i19, i64 %inc41 - store double %23, ptr %add.ptr.i46, align 8 + store double %22, ptr %add.ptr.i46, align 8 %inc45 = add nuw nsw i64 %cnt.0134, 4 %inc47 = add nuw nsw i64 %vofs.0133, 1 %cmp = icmp samesign ult i64 %inc47, %conv36 br i1 %cmp, label %for.body37, label %for.end48, !llvm.loop !43 for.end48: ; preds = %for.body37 - %24 = load ptr, ptr %_M_finish.i20, align 8 - %25 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %cmp.not.i49 = icmp eq ptr %24, %25 + %23 = load ptr, ptr %_M_finish.i20, align 8 + %24 = load ptr, ptr %_M_end_of_storage.i.i, align 8 + %cmp.not.i49 = icmp eq ptr %23, %24 br i1 %cmp.not.i49, label %if.else.i53, label %if.then.i50 if.then.i50: ; preds = %for.end48 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, i8 0, i64 24, i1 false) - %26 = load ptr, ptr %_M_finish.i20, align 8 - %incdec.ptr.i51 = getelementptr inbounds i8, ptr %26, i64 24 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %23, i8 0, i64 24, i1 false) + %25 = load ptr, ptr %_M_finish.i20, align 8 + %incdec.ptr.i51 = getelementptr inbounds i8, ptr %25, i64 24 store ptr %incdec.ptr.i51, ptr %_M_finish.i20, align 8 br label %invoke.cont49 if.else.i53: ; preds = %for.end48 - %27 = load ptr, ptr %normals, align 8 - %sub.ptr.lhs.cast.i.i.i.i54 = ptrtoint ptr %24 to i64 - %sub.ptr.rhs.cast.i.i.i.i55 = ptrtoint ptr %27 to i64 + %26 = load ptr, ptr %normals, align 8 + %sub.ptr.lhs.cast.i.i.i.i54 = ptrtoint ptr %23 to i64 + %sub.ptr.rhs.cast.i.i.i.i55 = ptrtoint ptr %26 to i64 %sub.ptr.sub.i.i.i.i56 = sub i64 %sub.ptr.lhs.cast.i.i.i.i54, %sub.ptr.rhs.cast.i.i.i.i55 %cmp.i.i.i57 = icmp eq i64 %sub.ptr.sub.i.i.i.i56, 9223372036854775800 br i1 %cmp.i.i.i57, label %if.then.i.invoke, label %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i58 @@ -1367,40 +1371,40 @@ _ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i58: ; preds = % %.sroa.speculated.i.i.i60 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i59, i64 1) %add.i.i.i61 = add nsw i64 %.sroa.speculated.i.i.i60, %sub.ptr.div.i.i.i.i59 %cmp7.i.i.i62 = icmp ult i64 %add.i.i.i61, %sub.ptr.div.i.i.i.i59 - %28 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i61, i64 384307168202282325) - %cond.i.i.i63 = select i1 %cmp7.i.i.i62, i64 384307168202282325, i64 %28 + %27 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i61, i64 384307168202282325) + %cond.i.i.i63 = select i1 %cmp7.i.i.i62, i64 384307168202282325, i64 %27 %cmp.not.i.i.i64 = icmp eq i64 %cond.i.i.i63, 0 br i1 %cmp.not.i.i.i64, label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67, label %cond.true.i.i.i65 cond.true.i.i.i65: ; preds = %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i58 %mul.i.i.i.i.i66 = mul nuw nsw i64 %cond.i.i.i63, 24 %call5.i.i.i.i.i87 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i66) #22 - to label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 unwind label %lpad17.loopexit + to label %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 unwind label %_ZNSt6vectorIdSaIdEED2Ev.exit.loopexit _ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67: ; preds = %cond.true.i.i.i65, %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i58 %cond.i10.i.i68 = phi ptr [ null, %_ZNKSt6vectorI10aiVector3tIdESaIS1_EE12_M_check_lenEmPKc.exit.i.i58 ], [ %call5.i.i.i.i.i87, %cond.true.i.i.i65 ] %add.ptr.i.i69 = getelementptr inbounds %class.aiVector3t, ptr %cond.i10.i.i68, i64 %sub.ptr.div.i.i.i.i59 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %add.ptr.i.i69, i8 0, i64 24, i1 false) - %cmp.not5.i.i.i.i.i70 = icmp eq ptr %27, %24 + %cmp.not5.i.i.i.i.i70 = icmp eq ptr %26, %23 br i1 %cmp.not5.i.i.i.i.i70, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i77, label %for.body.i.i.i.i.i71 for.body.i.i.i.i.i71: ; preds = %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67, %for.body.i.i.i.i.i71 %__cur.07.i.i.i.i.i72 = phi ptr [ %incdec.ptr1.i.i.i.i.i75, %for.body.i.i.i.i.i71 ], [ %cond.i10.i.i68, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 ] - %__first.addr.06.i.i.i.i.i73 = phi ptr [ %incdec.ptr.i.i.i.i.i74, %for.body.i.i.i.i.i71 ], [ %27, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 ] + %__first.addr.06.i.i.i.i.i73 = phi ptr [ %incdec.ptr.i.i.i.i.i74, %for.body.i.i.i.i.i71 ], [ %26, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %__cur.07.i.i.i.i.i72, ptr noundef nonnull align 8 dereferenceable(24) %__first.addr.06.i.i.i.i.i73, i64 24, i1 false), !alias.scope !44 %incdec.ptr.i.i.i.i.i74 = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i.i73, i64 24 %incdec.ptr1.i.i.i.i.i75 = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i.i72, i64 24 - %cmp.not.i.i.i.i.i76 = icmp eq ptr %incdec.ptr.i.i.i.i.i74, %24 + %cmp.not.i.i.i.i.i76 = icmp eq ptr %incdec.ptr.i.i.i.i.i74, %23 br i1 %cmp.not.i.i.i.i.i76, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i77, label %for.body.i.i.i.i.i71, !llvm.loop !37 _ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i77: ; preds = %for.body.i.i.i.i.i71, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 %__cur.0.lcssa.i.i.i.i.i78 = phi ptr [ %cond.i10.i.i68, %_ZNSt12_Vector_baseI10aiVector3tIdESaIS1_EE11_M_allocateEm.exit.i.i67 ], [ %incdec.ptr1.i.i.i.i.i75, %for.body.i.i.i.i.i71 ] %incdec.ptr.i.i79 = getelementptr inbounds i8, ptr %__cur.0.lcssa.i.i.i.i.i78, i64 24 - %tobool.not.i.i.i80 = icmp eq ptr %27, null + %tobool.not.i.i.i80 = icmp eq ptr %26, null br i1 %tobool.not.i.i.i80, label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82, label %if.then.i20.i.i81 if.then.i20.i.i81: ; preds = %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i77 - tail call void @_ZdlPv(ptr noundef nonnull %27) #24 + tail call void @_ZdlPv(ptr noundef nonnull %26) #24 br label %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82 _ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82: ; preds = %if.then.i20.i.i81, %_ZNSt6vectorI10aiVector3tIdESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit19.i.i77 @@ -1411,32 +1415,32 @@ _ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__norm br label %invoke.cont49 invoke.cont49: ; preds = %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82, %if.then.i50 - %29 = phi ptr [ %incdec.ptr.i.i79, %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82 ], [ %incdec.ptr.i51, %if.then.i50 ] - %add.ptr.i.i90 = getelementptr inbounds i8, ptr %29, i64 -24 - %30 = load i32, ptr %iit.sroa.0.1136, align 4 - %31 = load double, ptr %call5.i.i.i.i2.i.i19, align 8 - %mul.i = shl nsw i32 %30, 2 + %28 = phi ptr [ %incdec.ptr.i.i79, %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i82 ], [ %incdec.ptr.i51, %if.then.i50 ] + %add.ptr.i.i90 = getelementptr inbounds i8, ptr %28, i64 -24 + %29 = load i32, ptr %iit.sroa.0.1136, align 4 + %30 = load double, ptr %call5.i.i.i.i2.i.i19, align 8 + %mul.i = shl nsw i32 %29, 2 %idxprom.i = sext i32 %mul.i to i64 %arrayidx1.i = getelementptr inbounds double, ptr %call5.i.i.i.i2.i.i19, i64 %idxprom.i - store double %31, ptr %arrayidx1.i, align 8 - %32 = load double, ptr %arrayidx2.i, align 8 + store double %30, ptr %arrayidx1.i, align 8 + %31 = load double, ptr %arrayidx2.i, align 8 %mul4.i = add i32 %mul.i, 4 %idxprom5.i = sext i32 %mul4.i to i64 %arrayidx6.i = getelementptr inbounds double, ptr %call5.i.i.i.i2.i.i19, i64 %idxprom5.i - store double %32, ptr %arrayidx6.i, align 8 - %33 = load double, ptr %add.ptr.i92, align 8 - %arrayidx11.i = getelementptr inbounds double, ptr %add.ptr.i92, i64 %idxprom.i - store double %33, ptr %arrayidx11.i, align 8 - %34 = load double, ptr %arrayidx12.i, align 8 - %arrayidx16.i = getelementptr inbounds double, ptr %add.ptr.i92, i64 %idxprom5.i - store double %34, ptr %arrayidx16.i, align 8 - %35 = load double, ptr %add.ptr.i93, align 8 + store double %31, ptr %arrayidx6.i, align 8 + %32 = load double, ptr %incdec.ptr.i.i.i.i.i, align 8 + %arrayidx11.i = getelementptr inbounds double, ptr %incdec.ptr.i.i.i.i.i, i64 %idxprom.i + store double %32, ptr %arrayidx11.i, align 8 + %33 = load double, ptr %arrayidx12.i, align 8 + %arrayidx16.i = getelementptr inbounds double, ptr %incdec.ptr.i.i.i.i.i, i64 %idxprom5.i + store double %33, ptr %arrayidx16.i, align 8 + %34 = load double, ptr %add.ptr.i93, align 8 %arrayidx21.i = getelementptr inbounds double, ptr %add.ptr.i93, i64 %idxprom.i - store double %35, ptr %arrayidx21.i, align 8 - %36 = load double, ptr %arrayidx22.i, align 8 + store double %34, ptr %arrayidx21.i, align 8 + %35 = load double, ptr %arrayidx22.i, align 8 %arrayidx26.i = getelementptr inbounds double, ptr %add.ptr.i93, i64 %idxprom5.i - store double %36, ptr %arrayidx26.i, align 8 - %cmp38.i = icmp sgt i32 %30, 0 + store double %35, ptr %arrayidx26.i, align 8 + %cmp38.i = icmp sgt i32 %29, 0 br i1 %cmp38.i, label %for.body.i94, label %_ZN6Assimp12NewellNormalILi4ELi4ELi4EdEEvR10aiVector3tIT2_EiPS2_S5_S5_.exit for.body.i94: ; preds = %invoke.cont49, %for.body.i94 @@ -1445,29 +1449,29 @@ for.body.i94: ; preds = %invoke.cont49, %for %zlow.049.i = phi ptr [ %add.ptr44.i, %for.body.i94 ], [ %add.ptr.i93, %invoke.cont49 ] %zptr.048.i = phi ptr [ %add.ptr43.i, %for.body.i94 ], [ %arrayidx22.i, %invoke.cont49 ] %yhigh.047.i = phi ptr [ %add.ptr42.i, %for.body.i94 ], [ %add.ptr29.i, %invoke.cont49 ] - %ylow.046.i = phi ptr [ %add.ptr41.i, %for.body.i94 ], [ %add.ptr.i92, %invoke.cont49 ] + %ylow.046.i = phi ptr [ %add.ptr41.i, %for.body.i94 ], [ %incdec.ptr.i.i.i.i.i, %invoke.cont49 ] %yptr.045.i = phi ptr [ %add.ptr40.i, %for.body.i94 ], [ %arrayidx12.i, %invoke.cont49 ] %xhigh.044.i = phi ptr [ %add.ptr39.i, %for.body.i94 ], [ %add.ptr27.i, %invoke.cont49 ] %xlow.043.i = phi ptr [ %add.ptr38.i, %for.body.i94 ], [ %call5.i.i.i.i2.i.i19, %invoke.cont49 ] %xptr.042.i = phi ptr [ %add.ptr37.i, %for.body.i94 ], [ %arrayidx2.i, %invoke.cont49 ] - %sum_zx.041.i = phi double [ %48, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] - %sum_yz.040.i = phi double [ %44, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] - %sum_xy.039.i = phi double [ %40, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] - %37 = load double, ptr %xptr.042.i, align 8 - %38 = load double, ptr %yhigh.047.i, align 8 - %39 = load double, ptr %ylow.046.i, align 8 - %sub.i = fsub double %38, %39 - %40 = tail call double @llvm.fmuladd.f64(double %37, double %sub.i, double %sum_xy.039.i) - %41 = load double, ptr %yptr.045.i, align 8 - %42 = load double, ptr %zhigh.050.i, align 8 - %43 = load double, ptr %zlow.049.i, align 8 - %sub33.i = fsub double %42, %43 - %44 = tail call double @llvm.fmuladd.f64(double %41, double %sub33.i, double %sum_yz.040.i) - %45 = load double, ptr %zptr.048.i, align 8 - %46 = load double, ptr %xhigh.044.i, align 8 - %47 = load double, ptr %xlow.043.i, align 8 - %sub35.i = fsub double %46, %47 - %48 = tail call double @llvm.fmuladd.f64(double %45, double %sub35.i, double %sum_zx.041.i) + %sum_zx.041.i = phi double [ %47, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] + %sum_yz.040.i = phi double [ %43, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] + %sum_xy.039.i = phi double [ %39, %for.body.i94 ], [ 0.000000e+00, %invoke.cont49 ] + %36 = load double, ptr %xptr.042.i, align 8 + %37 = load double, ptr %yhigh.047.i, align 8 + %38 = load double, ptr %ylow.046.i, align 8 + %sub.i = fsub double %37, %38 + %39 = tail call double @llvm.fmuladd.f64(double %36, double %sub.i, double %sum_xy.039.i) + %40 = load double, ptr %yptr.045.i, align 8 + %41 = load double, ptr %zhigh.050.i, align 8 + %42 = load double, ptr %zlow.049.i, align 8 + %sub33.i = fsub double %41, %42 + %43 = tail call double @llvm.fmuladd.f64(double %40, double %sub33.i, double %sum_yz.040.i) + %44 = load double, ptr %zptr.048.i, align 8 + %45 = load double, ptr %xhigh.044.i, align 8 + %46 = load double, ptr %xlow.043.i, align 8 + %sub35.i = fsub double %45, %46 + %47 = tail call double @llvm.fmuladd.f64(double %44, double %sub35.i, double %sum_zx.041.i) %add.ptr37.i = getelementptr inbounds i8, ptr %xptr.042.i, i64 32 %add.ptr38.i = getelementptr inbounds i8, ptr %xlow.043.i, i64 32 %add.ptr39.i = getelementptr inbounds i8, ptr %xhigh.044.i, i64 32 @@ -1478,24 +1482,24 @@ for.body.i94: ; preds = %invoke.cont49, %for %add.ptr44.i = getelementptr inbounds i8, ptr %zlow.049.i, i64 32 %add.ptr45.i = getelementptr inbounds i8, ptr %zhigh.050.i, i64 32 %inc.i = add nuw nsw i32 %tmp.051.i, 1 - %exitcond.not.i = icmp eq i32 %inc.i, %30 + %exitcond.not.i = icmp eq i32 %inc.i, %29 br i1 %exitcond.not.i, label %_ZN6Assimp12NewellNormalILi4ELi4ELi4EdEEvR10aiVector3tIT2_EiPS2_S5_S5_.exit, label %for.body.i94, !llvm.loop !48 _ZN6Assimp12NewellNormalILi4ELi4ELi4EdEEvR10aiVector3tIT2_EiPS2_S5_S5_.exit: ; preds = %for.body.i94, %invoke.cont49 - %sum_xy.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %40, %for.body.i94 ] - %sum_yz.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %44, %for.body.i94 ] - %sum_zx.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %48, %for.body.i94 ] + %sum_xy.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %39, %for.body.i94 ] + %sum_yz.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %43, %for.body.i94 ] + %sum_zx.0.lcssa.i = phi double [ 0.000000e+00, %invoke.cont49 ], [ %47, %for.body.i94 ] store double %sum_yz.0.lcssa.i, ptr %add.ptr.i.i90, align 8 - %ref.tmp.sroa.2.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %29, i64 -16 + %ref.tmp.sroa.2.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %28, i64 -16 store double %sum_zx.0.lcssa.i, ptr %ref.tmp.sroa.2.0.out.sroa_idx.i, align 8 - %ref.tmp.sroa.3.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %29, i64 -8 + %ref.tmp.sroa.3.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %28, i64 -8 store double %sum_xy.0.lcssa.i, ptr %ref.tmp.sroa.3.0.out.sroa_idx.i, align 8 br label %for.inc57 for.inc57: ; preds = %_ZNSt6vectorI10aiVector3tIdESaIS1_EE17_M_realloc_insertIJEEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i, %if.then.i34, %_ZN6Assimp12NewellNormalILi4ELi4ELi4EdEEvR10aiVector3tIT2_EiPS2_S5_S5_.exit %incdec.ptr.i95 = getelementptr inbounds i8, ptr %iit.sroa.0.1136, i64 4 - %49 = load i32, ptr %iit.sroa.0.1136, align 4 - %conv62 = zext i32 %49 to i64 + %48 = load i32, ptr %iit.sroa.0.1136, align 4 + %conv62 = zext i32 %48 to i64 %add63 = add i64 %vidx.0137, %conv62 %cmp.i32.not = icmp eq ptr %incdec.ptr.i95, %1 br i1 %cmp.i32.not, label %for.end64, label %for.body30, !llvm.loop !49 @@ -1504,48 +1508,43 @@ for.end64: ; preds = %for.inc57, %_ZSt10a br i1 %normalize, label %if.then66, label %_ZNSt6vectorIdSaIdEED2Ev.exit102 if.then66: ; preds = %for.end64 - %50 = load ptr, ptr %normals, align 8 - %51 = load ptr, ptr %_M_finish.i20, align 8 - %cmp.i97.not139 = icmp eq ptr %50, %51 + %49 = load ptr, ptr %normals, align 8 + %50 = load ptr, ptr %_M_finish.i20, align 8 + %cmp.i97.not139 = icmp eq ptr %49, %50 br i1 %cmp.i97.not139, label %_ZNSt6vectorIdSaIdEED2Ev.exit102, label %for.body73 for.body73: ; preds = %if.then66, %for.inc77 - %__begin3.sroa.0.0140 = phi ptr [ %incdec.ptr.i99, %for.inc77 ], [ %50, %if.then66 ] - %52 = load double, ptr %__begin3.sroa.0.0140, align 8 + %__begin3.sroa.0.0140 = phi ptr [ %incdec.ptr.i99, %for.inc77 ], [ %49, %if.then66 ] + %51 = load double, ptr %__begin3.sroa.0.0140, align 8 %y.i.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.0140, i64 8 - %53 = load double, ptr %y.i.i.i, align 8 - %mul4.i.i.i = fmul double %53, %53 - %54 = tail call double @llvm.fmuladd.f64(double %52, double %52, double %mul4.i.i.i) + %52 = load double, ptr %y.i.i.i, align 8 + %mul4.i.i.i = fmul double %52, %52 + %53 = tail call double @llvm.fmuladd.f64(double %51, double %51, double %mul4.i.i.i) %z.i.i.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.0140, i64 16 - %55 = load double, ptr %z.i.i.i, align 8 - %56 = tail call noundef double @llvm.fmuladd.f64(double %55, double %55, double %54) - %cmp.i98 = fcmp oeq double %56, 0.000000e+00 + %54 = load double, ptr %z.i.i.i, align 8 + %55 = tail call noundef double @llvm.fmuladd.f64(double %54, double %54, double %53) + %cmp.i98 = fcmp oeq double %55, 0.000000e+00 br i1 %cmp.i98, label %for.inc77, label %_ZN10aiVector3tIdEdVEd.exit.i _ZN10aiVector3tIdEdVEd.exit.i: ; preds = %for.body73 - %sqrt.i.i = tail call noundef double @llvm.sqrt.f64(double %56) + %sqrt.i.i = tail call noundef double @llvm.sqrt.f64(double %55) %div.i.i = fdiv double 1.000000e+00, %sqrt.i.i - %mul.i.i = fmul double %52, %div.i.i + %mul.i.i = fmul double %51, %div.i.i store double %mul.i.i, ptr %__begin3.sroa.0.0140, align 8 - %mul2.i.i = fmul double %53, %div.i.i + %mul2.i.i = fmul double %52, %div.i.i store double %mul2.i.i, ptr %y.i.i.i, align 8 - %mul3.i.i = fmul double %55, %div.i.i + %mul3.i.i = fmul double %54, %div.i.i store double %mul3.i.i, ptr %z.i.i.i, align 8 br label %for.inc77 for.inc77: ; preds = %_ZN10aiVector3tIdEdVEd.exit.i, %for.body73 %incdec.ptr.i99 = getelementptr inbounds i8, ptr %__begin3.sroa.0.0140, i64 24 - %cmp.i97.not = icmp eq ptr %incdec.ptr.i99, %51 + %cmp.i97.not = icmp eq ptr %incdec.ptr.i99, %50 br i1 %cmp.i97.not, label %_ZNSt6vectorIdSaIdEED2Ev.exit102, label %for.body73 _ZNSt6vectorIdSaIdEED2Ev.exit102: ; preds = %for.inc77, %if.then66, %for.end64 tail call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i2.i.i19) #24 ret void - -eh.resume: ; preds = %lpad17.loopexit.split-lp, %lpad17.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad17.loopexit ], [ %lpad.loopexit.split-lp, %lpad17.loopexit.split-lp ] - tail call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i2.i.i19) #24 - resume { ptr, i32 } %lpad.phi } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) diff --git a/bench/boost/optimized/args_handling.ll b/bench/boost/optimized/args_handling.ll index bfb627707c4..41c361afd4c 100644 --- a/bench/boost/optimized/args_handling.ll +++ b/bench/boost/optimized/args_handling.ll @@ -144722,94 +144722,96 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %61 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] - %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] +15: ; preds = %.lr.ph, %62 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] + %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !24 %20 = icmp eq i8 %19, 34 - %.1 = xor i1 %.039, %20 - %21 = icmp ne i8 %19, 32 - %or.cond.not = or i1 %21, %.1 - br i1 %or.cond.not, label %61, label %22 + %21 = zext i1 %20 to i8 + %.1 = xor i8 %.039, %21 + %.not33 = icmp eq i8 %.039, %21 + %22 = icmp eq i8 %19, 32 + %or.cond = and i1 %22, %.not33 + br i1 %or.cond, label %23, label %62 -22: ; preds = %15 +23: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %23 + br i1 %.not34, label %.critedge, label %24 -23: ; preds = %22 - %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %25 = load i8, ptr %24, align 1, !tbaa !24 - %.not = icmp eq i8 %25, 32 - br i1 %.not, label %.critedge, label %26 +24: ; preds = %23 + %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %26 = load i8, ptr %25, align 1, !tbaa !24 + %.not = icmp eq i8 %26, 32 + br i1 %.not, label %.critedge, label %27 -26: ; preds = %23 +27: ; preds = %24 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %27 unwind label %49 + to label %28 unwind label %50 -27: ; preds = %26 - %28 = load ptr, ptr %11, align 8, !tbaa !173 - %29 = load ptr, ptr %12, align 8, !tbaa !331 - %.not.i.i = icmp eq ptr %28, %29 - br i1 %.not.i.i, label %43, label %30 - -30: ; preds = %27 - %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 - store ptr %31, ptr %28, align 8, !tbaa !92 - %32 = load ptr, ptr %6, align 8, !tbaa !4 - %33 = icmp eq ptr %32, %13 - br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +28: ; preds = %27 + %29 = load ptr, ptr %11, align 8, !tbaa !173 + %30 = load ptr, ptr %12, align 8, !tbaa !331 + %.not.i.i = icmp eq ptr %29, %30 + br i1 %.not.i.i, label %44, label %31 -34: ; preds = %30 - %35 = load i64, ptr %14, align 8, !tbaa !11 - %36 = icmp ult i64 %35, 16 - call void @llvm.assume(i1 %36) - %37 = add nuw nsw i64 %35, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 + store ptr %32, ptr %29, align 8, !tbaa !92 + %33 = load ptr, ptr %6, align 8, !tbaa !4 + %34 = icmp eq ptr %33, %13 + br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + +35: ; preds = %31 + %36 = load i64, ptr %14, align 8, !tbaa !11 + %37 = icmp ult i64 %36, 16 + call void @llvm.assume(i1 %37) + %38 = add nuw nsw i64 %36, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 - store ptr %32, ptr %28, align 8, !tbaa !4 - %38 = load i64, ptr %13, align 8, !tbaa !24 - store i64 %38, ptr %31, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 + store ptr %33, ptr %29, align 8, !tbaa !4 + %39 = load i64, ptr %13, align 8, !tbaa !24 + store i64 %39, ptr %32, align 8, !tbaa !24 %.pre = load i64, ptr %14, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] - %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 - store i64 %39, ptr %40, align 8, !tbaa !11 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] + %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 + store i64 %40, ptr %41, align 8, !tbaa !11 store ptr %13, ptr %6, align 8, !tbaa !4 store i64 0, ptr %14, align 8, !tbaa !11 - %41 = load ptr, ptr %11, align 8, !tbaa !332 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 - store ptr %42, ptr %11, align 8, !tbaa !332 + %42 = load ptr, ptr %11, align 8, !tbaa !332 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 + store ptr %43, ptr %11, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -43: ; preds = %27 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 +44: ; preds = %28 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 %.pre40 = load ptr, ptr %6, align 8, !tbaa !4 - %44 = icmp eq ptr %.pre40, %13 - br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %45 = icmp eq ptr %.pre40, %13 + br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %45 = load i64, ptr %14, align 8, !tbaa !11 - %46 = icmp ult i64 %45, 16 - call void @llvm.assume(i1 %46) + %46 = load i64, ptr %14, align 8, !tbaa !11 + %47 = icmp ult i64 %46, 16 + call void @llvm.assume(i1 %47) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %47 = load i64, ptr %13, align 8, !tbaa !24 - %48 = add i64 %47, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #59 + %48 = load i64, ptr %13, align 8, !tbaa !24 + %49 = add i64 %48, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -144819,166 +144821,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !11 br label %.critedge -49: ; preds = %26 - %50 = landingpad { ptr, i32 } +50: ; preds = %27 + %51 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -51: ; preds = %43 - %52 = landingpad { ptr, i32 } +52: ; preds = %44 + %53 = landingpad { ptr, i32 } cleanup - %53 = load ptr, ptr %6, align 8, !tbaa !4 - %54 = icmp eq ptr %53, %13 - br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + %54 = load ptr, ptr %6, align 8, !tbaa !4 + %55 = icmp eq ptr %54, %13 + br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 - %55 = load i64, ptr %14, align 8, !tbaa !11 - %56 = icmp ult i64 %55, 16 - call void @llvm.assume(i1 %56) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 + %56 = load i64, ptr %14, align 8, !tbaa !11 + %57 = icmp ult i64 %56, 16 + call void @llvm.assume(i1 %57) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 - %57 = load i64, ptr %13, align 8, !tbaa !24 - %58 = add i64 %57, 1 - call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 + %58 = load i64, ptr %13, align 8, !tbaa !24 + %59 = add i64 %58, 1 + call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 - %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 + %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #57 - br label %110 + br label %111 -.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 - %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] - %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] - %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] - %60 = getelementptr inbounds i8, ptr %59, i64 1 - store ptr %60, ptr %4, align 8, !tbaa !173 - br label %61 +.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 + %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] + %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] + %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] + %61 = getelementptr inbounds i8, ptr %60, i64 1 + store ptr %61, ptr %4, align 8, !tbaa !173 + br label %62 -61: ; preds = %15, %.critedge +62: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] - %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] - %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 - store ptr %66, ptr %5, align 8 - %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 - %.not31 = icmp eq ptr %66, %67 + %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] + %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] + %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 + store ptr %67, ptr %5, align 8 + %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 + %.not31 = icmp eq ptr %67, %68 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !2665 -._crit_edge: ; preds = %61 - %.not32 = icmp eq ptr %62, %66 - br i1 %.not32, label %._crit_edge.thread, label %68 +._crit_edge: ; preds = %62 + %.not32 = icmp eq ptr %63, %67 + br i1 %.not32, label %._crit_edge.thread, label %69 -68: ; preds = %._crit_edge +69: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %69 unwind label %98 + to label %70 unwind label %99 -69: ; preds = %68 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %71 = load ptr, ptr %70, align 8, !tbaa !173 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %73 = load ptr, ptr %72, align 8, !tbaa !331 - %.not.i = icmp eq ptr %71, %73 - br i1 %.not.i, label %90, label %74 +70: ; preds = %69 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %72 = load ptr, ptr %71, align 8, !tbaa !173 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %74 = load ptr, ptr %73, align 8, !tbaa !331 + %.not.i = icmp eq ptr %72, %74 + br i1 %.not.i, label %91, label %75 -74: ; preds = %69 - %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 - store ptr %75, ptr %71, align 8, !tbaa !92 - %76 = load ptr, ptr %7, align 8, !tbaa !4 - %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %78 = icmp eq ptr %76, %77 - br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i +75: ; preds = %70 + %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 + store ptr %76, ptr %72, align 8, !tbaa !92 + %77 = load ptr, ptr %7, align 8, !tbaa !4 + %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %79 = icmp eq ptr %77, %78 + br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i -79: ; preds = %74 - %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %81 = load i64, ptr %80, align 8, !tbaa !11 - %82 = icmp ult i64 %81, 16 - call void @llvm.assume(i1 %82) - %83 = add nuw nsw i64 %81, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) +80: ; preds = %75 + %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %82 = load i64, ptr %81, align 8, !tbaa !11 + %83 = icmp ult i64 %82, 16 + call void @llvm.assume(i1 %83) + %84 = add nuw nsw i64 %82, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 - store ptr %76, ptr %71, align 8, !tbaa !4 - %84 = load i64, ptr %77, align 8, !tbaa !24 - store i64 %84, ptr %75, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 + store ptr %77, ptr %72, align 8, !tbaa !4 + %85 = load i64, ptr %78, align 8, !tbaa !24 + store i64 %85, ptr %76, align 8, !tbaa !24 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] - %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 - store i64 %85, ptr %87, align 8, !tbaa !11 - store i64 0, ptr %86, align 8, !tbaa !11 - %88 = load ptr, ptr %70, align 8, !tbaa !332 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 - store ptr %89, ptr %70, align 8, !tbaa !332 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] + %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 + store i64 %86, ptr %88, align 8, !tbaa !11 + store i64 0, ptr %87, align 8, !tbaa !11 + %89 = load ptr, ptr %71, align 8, !tbaa !332 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 + store ptr %90, ptr %71, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -90: ; preds = %69 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 +91: ; preds = %70 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 %.pre45 = load ptr, ptr %7, align 8, !tbaa !4 - %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %92 = icmp eq ptr %.pre45, %91 - br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %93 = icmp eq ptr %.pre45, %92 + br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %94 = load i64, ptr %93, align 8, !tbaa !11 - %95 = icmp ult i64 %94, 16 - call void @llvm.assume(i1 %95) + %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %95 = load i64, ptr %94, align 8, !tbaa !11 + %96 = icmp ult i64 %95, 16 + call void @llvm.assume(i1 %96) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %96 = load i64, ptr %91, align 8, !tbaa !24 - %97 = add i64 %96, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #59 + %97 = load i64, ptr %92, align 8, !tbaa !24 + %98 = add i64 %97, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 br label %._crit_edge.thread -98: ; preds = %68 - %99 = landingpad { ptr, i32 } +99: ; preds = %69 + %100 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -100: ; preds = %90 - %101 = landingpad { ptr, i32 } +101: ; preds = %91 + %102 = landingpad { ptr, i32 } cleanup - %102 = load ptr, ptr %7, align 8, !tbaa !4 - %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %104 = icmp eq ptr %102, %103 - br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + %103 = load ptr, ptr %7, align 8, !tbaa !4 + %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %105 = icmp eq ptr %103, %104 + br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 - %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %106 = load i64, ptr %105, align 8, !tbaa !11 - %107 = icmp ult i64 %106, 16 - call void @llvm.assume(i1 %107) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 + %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %107 = load i64, ptr %106, align 8, !tbaa !11 + %108 = icmp ult i64 %107, 16 + call void @llvm.assume(i1 %108) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 - %108 = load i64, ptr %103, align 8, !tbaa !24 - %109 = add i64 %108, 1 - call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 + %109 = load i64, ptr %104, align 8, !tbaa !24 + %110 = add i64 %109, 1 + call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 - %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 + %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 - br label %110 + br label %111 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 @@ -144986,7 +144988,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #57 ret void -110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #57 diff --git a/bench/boost/optimized/async.ll b/bench/boost/optimized/async.ll index 3a5bd1fdfe8..0442c79c67d 100644 --- a/bench/boost/optimized/async.ll +++ b/bench/boost/optimized/async.ll @@ -181293,94 +181293,96 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %61 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] - %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] +15: ; preds = %.lr.ph, %62 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] + %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !24 %20 = icmp eq i8 %19, 34 - %.1 = xor i1 %.039, %20 - %21 = icmp ne i8 %19, 32 - %or.cond.not = or i1 %21, %.1 - br i1 %or.cond.not, label %61, label %22 + %21 = zext i1 %20 to i8 + %.1 = xor i8 %.039, %21 + %.not33 = icmp eq i8 %.039, %21 + %22 = icmp eq i8 %19, 32 + %or.cond = and i1 %22, %.not33 + br i1 %or.cond, label %23, label %62 -22: ; preds = %15 +23: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %23 + br i1 %.not34, label %.critedge, label %24 -23: ; preds = %22 - %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %25 = load i8, ptr %24, align 1, !tbaa !24 - %.not = icmp eq i8 %25, 32 - br i1 %.not, label %.critedge, label %26 +24: ; preds = %23 + %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %26 = load i8, ptr %25, align 1, !tbaa !24 + %.not = icmp eq i8 %26, 32 + br i1 %.not, label %.critedge, label %27 -26: ; preds = %23 +27: ; preds = %24 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #61 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %27 unwind label %49 + to label %28 unwind label %50 -27: ; preds = %26 - %28 = load ptr, ptr %11, align 8, !tbaa !173 - %29 = load ptr, ptr %12, align 8, !tbaa !331 - %.not.i.i = icmp eq ptr %28, %29 - br i1 %.not.i.i, label %43, label %30 +28: ; preds = %27 + %29 = load ptr, ptr %11, align 8, !tbaa !173 + %30 = load ptr, ptr %12, align 8, !tbaa !331 + %.not.i.i = icmp eq ptr %29, %30 + br i1 %.not.i.i, label %44, label %31 -30: ; preds = %27 - %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 - store ptr %31, ptr %28, align 8, !tbaa !92 - %32 = load ptr, ptr %6, align 8, !tbaa !4 - %33 = icmp eq ptr %32, %13 - br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 + store ptr %32, ptr %29, align 8, !tbaa !92 + %33 = load ptr, ptr %6, align 8, !tbaa !4 + %34 = icmp eq ptr %33, %13 + br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -34: ; preds = %30 - %35 = load i64, ptr %14, align 8, !tbaa !11 - %36 = icmp ult i64 %35, 16 - call void @llvm.assume(i1 %36) - %37 = add nuw nsw i64 %35, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) +35: ; preds = %31 + %36 = load i64, ptr %14, align 8, !tbaa !11 + %37 = icmp ult i64 %36, 16 + call void @llvm.assume(i1 %37) + %38 = add nuw nsw i64 %36, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 - store ptr %32, ptr %28, align 8, !tbaa !4 - %38 = load i64, ptr %13, align 8, !tbaa !24 - store i64 %38, ptr %31, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 + store ptr %33, ptr %29, align 8, !tbaa !4 + %39 = load i64, ptr %13, align 8, !tbaa !24 + store i64 %39, ptr %32, align 8, !tbaa !24 %.pre = load i64, ptr %14, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] - %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 - store i64 %39, ptr %40, align 8, !tbaa !11 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] + %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 + store i64 %40, ptr %41, align 8, !tbaa !11 store ptr %13, ptr %6, align 8, !tbaa !4 store i64 0, ptr %14, align 8, !tbaa !11 - %41 = load ptr, ptr %11, align 8, !tbaa !332 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 - store ptr %42, ptr %11, align 8, !tbaa !332 + %42 = load ptr, ptr %11, align 8, !tbaa !332 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 + store ptr %43, ptr %11, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -43: ; preds = %27 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 +44: ; preds = %28 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 %.pre40 = load ptr, ptr %6, align 8, !tbaa !4 - %44 = icmp eq ptr %.pre40, %13 - br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %45 = icmp eq ptr %.pre40, %13 + br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %45 = load i64, ptr %14, align 8, !tbaa !11 - %46 = icmp ult i64 %45, 16 - call void @llvm.assume(i1 %46) + %46 = load i64, ptr %14, align 8, !tbaa !11 + %47 = icmp ult i64 %46, 16 + call void @llvm.assume(i1 %47) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %47 = load i64, ptr %13, align 8, !tbaa !24 - %48 = add i64 %47, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #63 + %48 = load i64, ptr %13, align 8, !tbaa !24 + %49 = add i64 %48, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -181390,166 +181392,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !11 br label %.critedge -49: ; preds = %26 - %50 = landingpad { ptr, i32 } +50: ; preds = %27 + %51 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -51: ; preds = %43 - %52 = landingpad { ptr, i32 } +52: ; preds = %44 + %53 = landingpad { ptr, i32 } cleanup - %53 = load ptr, ptr %6, align 8, !tbaa !4 - %54 = icmp eq ptr %53, %13 - br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + %54 = load ptr, ptr %6, align 8, !tbaa !4 + %55 = icmp eq ptr %54, %13 + br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 - %55 = load i64, ptr %14, align 8, !tbaa !11 - %56 = icmp ult i64 %55, 16 - call void @llvm.assume(i1 %56) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 + %56 = load i64, ptr %14, align 8, !tbaa !11 + %57 = icmp ult i64 %56, 16 + call void @llvm.assume(i1 %57) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 - %57 = load i64, ptr %13, align 8, !tbaa !24 - %58 = add i64 %57, 1 - call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #63 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 + %58 = load i64, ptr %13, align 8, !tbaa !24 + %59 = add i64 %58, 1 + call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 - %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 + %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #61 - br label %110 + br label %111 -.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 - %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] - %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] - %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] - %60 = getelementptr inbounds i8, ptr %59, i64 1 - store ptr %60, ptr %4, align 8, !tbaa !173 - br label %61 +.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 + %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] + %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] + %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] + %61 = getelementptr inbounds i8, ptr %60, i64 1 + store ptr %61, ptr %4, align 8, !tbaa !173 + br label %62 -61: ; preds = %15, %.critedge +62: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] - %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] - %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 - store ptr %66, ptr %5, align 8 - %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 - %.not31 = icmp eq ptr %66, %67 + %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] + %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] + %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 + store ptr %67, ptr %5, align 8 + %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 + %.not31 = icmp eq ptr %67, %68 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !3615 -._crit_edge: ; preds = %61 - %.not32 = icmp eq ptr %62, %66 - br i1 %.not32, label %._crit_edge.thread, label %68 +._crit_edge: ; preds = %62 + %.not32 = icmp eq ptr %63, %67 + br i1 %.not32, label %._crit_edge.thread, label %69 -68: ; preds = %._crit_edge +69: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #61 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %69 unwind label %98 + to label %70 unwind label %99 -69: ; preds = %68 - %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %71 = load ptr, ptr %70, align 8, !tbaa !173 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %73 = load ptr, ptr %72, align 8, !tbaa !331 - %.not.i = icmp eq ptr %71, %73 - br i1 %.not.i, label %90, label %74 +70: ; preds = %69 + %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %72 = load ptr, ptr %71, align 8, !tbaa !173 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %74 = load ptr, ptr %73, align 8, !tbaa !331 + %.not.i = icmp eq ptr %72, %74 + br i1 %.not.i, label %91, label %75 -74: ; preds = %69 - %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 - store ptr %75, ptr %71, align 8, !tbaa !92 - %76 = load ptr, ptr %7, align 8, !tbaa !4 - %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %78 = icmp eq ptr %76, %77 - br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i +75: ; preds = %70 + %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 + store ptr %76, ptr %72, align 8, !tbaa !92 + %77 = load ptr, ptr %7, align 8, !tbaa !4 + %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %79 = icmp eq ptr %77, %78 + br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i -79: ; preds = %74 - %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %81 = load i64, ptr %80, align 8, !tbaa !11 - %82 = icmp ult i64 %81, 16 - call void @llvm.assume(i1 %82) - %83 = add nuw nsw i64 %81, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) +80: ; preds = %75 + %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %82 = load i64, ptr %81, align 8, !tbaa !11 + %83 = icmp ult i64 %82, 16 + call void @llvm.assume(i1 %83) + %84 = add nuw nsw i64 %82, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 - store ptr %76, ptr %71, align 8, !tbaa !4 - %84 = load i64, ptr %77, align 8, !tbaa !24 - store i64 %84, ptr %75, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 + store ptr %77, ptr %72, align 8, !tbaa !4 + %85 = load i64, ptr %78, align 8, !tbaa !24 + store i64 %85, ptr %76, align 8, !tbaa !24 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] - %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 - store i64 %85, ptr %87, align 8, !tbaa !11 - store i64 0, ptr %86, align 8, !tbaa !11 - %88 = load ptr, ptr %70, align 8, !tbaa !332 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 - store ptr %89, ptr %70, align 8, !tbaa !332 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] + %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 + store i64 %86, ptr %88, align 8, !tbaa !11 + store i64 0, ptr %87, align 8, !tbaa !11 + %89 = load ptr, ptr %71, align 8, !tbaa !332 + %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 + store ptr %90, ptr %71, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -90: ; preds = %69 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 +91: ; preds = %70 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 %.pre45 = load ptr, ptr %7, align 8, !tbaa !4 - %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %92 = icmp eq ptr %.pre45, %91 - br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %93 = icmp eq ptr %.pre45, %92 + br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %94 = load i64, ptr %93, align 8, !tbaa !11 - %95 = icmp ult i64 %94, 16 - call void @llvm.assume(i1 %95) + %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %95 = load i64, ptr %94, align 8, !tbaa !11 + %96 = icmp ult i64 %95, 16 + call void @llvm.assume(i1 %96) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %96 = load i64, ptr %91, align 8, !tbaa !24 - %97 = add i64 %96, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #63 + %97 = load i64, ptr %92, align 8, !tbaa !24 + %98 = add i64 %97, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #61 br label %._crit_edge.thread -98: ; preds = %68 - %99 = landingpad { ptr, i32 } +99: ; preds = %69 + %100 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -100: ; preds = %90 - %101 = landingpad { ptr, i32 } +101: ; preds = %91 + %102 = landingpad { ptr, i32 } cleanup - %102 = load ptr, ptr %7, align 8, !tbaa !4 - %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %104 = icmp eq ptr %102, %103 - br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + %103 = load ptr, ptr %7, align 8, !tbaa !4 + %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %105 = icmp eq ptr %103, %104 + br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 - %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %106 = load i64, ptr %105, align 8, !tbaa !11 - %107 = icmp ult i64 %106, 16 - call void @llvm.assume(i1 %107) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 + %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %107 = load i64, ptr %106, align 8, !tbaa !11 + %108 = icmp ult i64 %107, 16 + call void @llvm.assume(i1 %108) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 - %108 = load i64, ptr %103, align 8, !tbaa !24 - %109 = add i64 %108, 1 - call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #63 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 + %109 = load i64, ptr %104, align 8, !tbaa !24 + %110 = add i64 %109, 1 + call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 - %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 + %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #61 - br label %110 + br label %111 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #61 @@ -181557,7 +181559,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #61 ret void -110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #61 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #61 diff --git a/bench/boost/optimized/throw_on_error.ll b/bench/boost/optimized/throw_on_error.ll index 038036f9191..5a19b0a93be 100644 --- a/bench/boost/optimized/throw_on_error.ll +++ b/bench/boost/optimized/throw_on_error.ll @@ -1593,195 +1593,197 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix9build_cmdIcEE %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %15 -._crit_edge: ; preds = %48, %2 - %14 = phi ptr [ %8, %2 ], [ %52, %48 ] - %.lcssa = phi ptr [ %11, %2 ], [ %54, %48 ] +._crit_edge: ; preds = %49, %2 + %14 = phi ptr [ %8, %2 ], [ %53, %49 ] + %.lcssa = phi ptr [ %11, %2 ], [ %55, %49 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #31 %.not24 = icmp eq ptr %14, %.lcssa - br i1 %.not24, label %81, label %55 - -15: ; preds = %.lr.ph, %48 - %16 = phi i64 [ %10, %.lr.ph ], [ %49, %48 ] - %17 = phi ptr [ %8, %.lr.ph ], [ %50, %48 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %52, %48 ] - %.029 = phi i1 [ false, %.lr.ph ], [ %.1, %48 ] - %storemerge28 = phi ptr [ %8, %.lr.ph ], [ %53, %48 ] + br i1 %.not24, label %82, label %56 + +15: ; preds = %.lr.ph, %49 + %16 = phi i64 [ %10, %.lr.ph ], [ %50, %49 ] + %17 = phi ptr [ %8, %.lr.ph ], [ %51, %49 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %53, %49 ] + %.029 = phi i8 [ 0, %.lr.ph ], [ %.1, %49 ] + %storemerge28 = phi ptr [ %8, %.lr.ph ], [ %54, %49 ] %19 = load i8, ptr %storemerge28, align 1, !tbaa !35 %20 = icmp eq i8 %19, 34 - %.1 = xor i1 %.029, %20 - %21 = icmp ne i8 %19, 32 - %or.cond.not = or i1 %21, %.1 + %21 = zext i1 %20 to i8 + %.1 = xor i8 %.029, %21 + %.not25 = icmp ne i8 %.029, %21 + %22 = icmp ne i8 %19, 32 + %or.cond.not36 = or i1 %22, %.not25 %.not = icmp eq ptr %storemerge28, %18 - %or.cond = select i1 %or.cond.not, i1 true, i1 %.not - br i1 %or.cond, label %48, label %24 + %or.cond34 = select i1 %or.cond.not36, i1 true, i1 %.not + br i1 %or.cond34, label %49, label %25 -22: ; preds = %45, %.noexc.i.i.i.i - %23 = landingpad { ptr, i32 } +23: ; preds = %46, %.noexc.i.i.i.i + %24 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #31 - br label %82 - -24: ; preds = %15 - %25 = load ptr, ptr %12, align 8, !tbaa !66 - %26 = load ptr, ptr %13, align 8, !tbaa !38 - %.not.i = icmp eq ptr %25, %26 - br i1 %.not.i, label %45, label %27 + br label %83 -27: ; preds = %24 - %28 = getelementptr inbounds nuw i8, ptr %25, i64 16 - store ptr %28, ptr %25, align 8, !tbaa !39 - %29 = getelementptr inbounds nuw i8, ptr %25, i64 8 - store i64 0, ptr %29, align 8, !tbaa !34 +25: ; preds = %15 + %26 = load ptr, ptr %12, align 8, !tbaa !66 + %27 = load ptr, ptr %13, align 8, !tbaa !38 + %.not.i = icmp eq ptr %26, %27 + br i1 %.not.i, label %46, label %28 + +28: ; preds = %25 + %29 = getelementptr inbounds nuw i8, ptr %26, i64 16 + store ptr %29, ptr %26, align 8, !tbaa !39 + %30 = getelementptr inbounds nuw i8, ptr %26, i64 8 + store i64 0, ptr %30, align 8, !tbaa !34 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #31 - %30 = ptrtoint ptr %storemerge28 to i64 - %31 = ptrtoint ptr %18 to i64 - %32 = sub i64 %30, %31 - store i64 %32, ptr %4, align 8, !tbaa !40 - %33 = icmp ugt i64 %32, 15 - br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %31 = ptrtoint ptr %storemerge28 to i64 + %32 = ptrtoint ptr %18 to i64 + %33 = sub i64 %31, %32 + store i64 %33, ptr %4, align 8, !tbaa !40 + %34 = icmp ugt i64 %33, 15 + br i1 %34, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %27 - %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %22 +.noexc.i.i.i.i: ; preds = %28 + %35 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %23 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %34, ptr %25, align 8, !tbaa !30 - %35 = load i64, ptr %4, align 8, !tbaa !40 - store i64 %35, ptr %28, align 8, !tbaa !35 + store ptr %35, ptr %26, align 8, !tbaa !30 + %36 = load i64, ptr %4, align 8, !tbaa !40 + store i64 %36, ptr %29, align 8, !tbaa !35 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.noexc, %27 - %36 = phi ptr [ %34, %.noexc ], [ %28, %27 ] - switch i64 %32, label %39 [ - i64 1, label %37 +._crit_edge.i.i.i.i.i: ; preds = %.noexc, %28 + %37 = phi ptr [ %35, %.noexc ], [ %29, %28 ] + switch i64 %33, label %40 [ + i64 1, label %38 i64 0, label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i ] -37: ; preds = %._crit_edge.i.i.i.i.i - %38 = load i8, ptr %18, align 1, !tbaa !35 - store i8 %38, ptr %36, align 1, !tbaa !35 +38: ; preds = %._crit_edge.i.i.i.i.i + %39 = load i8, ptr %18, align 1, !tbaa !35 + store i8 %39, ptr %37, align 1, !tbaa !35 br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i -39: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %36, ptr align 1 %18, i64 %32, i1 false) +40: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr align 1 %18, i64 %33, i1 false) br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i -_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %39, %37, %._crit_edge.i.i.i.i.i - %40 = load i64, ptr %4, align 8, !tbaa !40 - store i64 %40, ptr %29, align 8, !tbaa !34 - %41 = load ptr, ptr %25, align 8, !tbaa !30 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 %40 - store i8 0, ptr %42, align 1, !tbaa !35 +_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %40, %38, %._crit_edge.i.i.i.i.i + %41 = load i64, ptr %4, align 8, !tbaa !40 + store i64 %41, ptr %30, align 8, !tbaa !34 + %42 = load ptr, ptr %26, align 8, !tbaa !30 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 %41 + store i8 0, ptr %43, align 1, !tbaa !35 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #31 - %43 = load ptr, ptr %12, align 8, !tbaa !29 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 32 - store ptr %44, ptr %12, align 8, !tbaa !29 + %44 = load ptr, ptr %12, align 8, !tbaa !29 + %45 = getelementptr inbounds nuw i8, ptr %44, i64 32 + store ptr %45, ptr %12, align 8, !tbaa !29 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit -45: ; preds = %24 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %25, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit unwind label %22 +46: ; preds = %25 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %26, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit unwind label %23 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit: ; preds = %45, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i - %46 = load ptr, ptr %6, align 8, !tbaa !67 - %47 = getelementptr inbounds i8, ptr %46, i64 1 - store ptr %47, ptr %5, align 8, !tbaa !66 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit: ; preds = %46, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i + %47 = load ptr, ptr %6, align 8, !tbaa !67 + %48 = getelementptr inbounds i8, ptr %47, i64 1 + store ptr %48, ptr %5, align 8, !tbaa !66 %.pre = load ptr, ptr %1, align 8, !tbaa !30 %.pre31 = load i64, ptr %9, align 8, !tbaa !34 - br label %48 - -48: ; preds = %15, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit - %49 = phi i64 [ %16, %15 ], [ %.pre31, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %50 = phi ptr [ %17, %15 ], [ %.pre, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %51 = phi ptr [ %storemerge28, %15 ], [ %46, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %52 = phi ptr [ %18, %15 ], [ %47, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %53 = getelementptr inbounds nuw i8, ptr %51, i64 1 - store ptr %53, ptr %6, align 8 - %54 = getelementptr inbounds nuw i8, ptr %50, i64 %49 - %.not23 = icmp eq ptr %53, %54 + br label %49 + +49: ; preds = %15, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit + %50 = phi i64 [ %16, %15 ], [ %.pre31, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %51 = phi ptr [ %17, %15 ], [ %.pre, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %52 = phi ptr [ %storemerge28, %15 ], [ %47, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %53 = phi ptr [ %18, %15 ], [ %48, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %54 = getelementptr inbounds nuw i8, ptr %52, i64 1 + store ptr %54, ptr %6, align 8 + %55 = getelementptr inbounds nuw i8, ptr %51, i64 %50 + %.not23 = icmp eq ptr %54, %55 br i1 %.not23, label %._crit_edge, label %15, !llvm.loop !69 -55: ; preds = %._crit_edge +56: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #31 store ptr %.lcssa, ptr %7, align 8 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %57 = load ptr, ptr %56, align 8, !tbaa !66 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %59 = load ptr, ptr %58, align 8, !tbaa !38 - %.not.i14 = icmp eq ptr %57, %59 - br i1 %.not.i14, label %78, label %60 - -60: ; preds = %55 - %61 = getelementptr inbounds nuw i8, ptr %57, i64 16 - store ptr %61, ptr %57, align 8, !tbaa !39 - %62 = getelementptr inbounds nuw i8, ptr %57, i64 8 - store i64 0, ptr %62, align 8, !tbaa !34 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %58 = load ptr, ptr %57, align 8, !tbaa !66 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %60 = load ptr, ptr %59, align 8, !tbaa !38 + %.not.i14 = icmp eq ptr %58, %60 + br i1 %.not.i14, label %79, label %61 + +61: ; preds = %56 + %62 = getelementptr inbounds nuw i8, ptr %58, i64 16 + store ptr %62, ptr %58, align 8, !tbaa !39 + %63 = getelementptr inbounds nuw i8, ptr %58, i64 8 + store i64 0, ptr %63, align 8, !tbaa !34 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #31 - %63 = ptrtoint ptr %.lcssa to i64 - %64 = ptrtoint ptr %14 to i64 - %65 = sub i64 %63, %64 - store i64 %65, ptr %3, align 8, !tbaa !40 - %66 = icmp ugt i64 %65, 15 - br i1 %66, label %.noexc.i.i.i.i18, label %._crit_edge.i.i.i.i.i17 + %64 = ptrtoint ptr %.lcssa to i64 + %65 = ptrtoint ptr %14 to i64 + %66 = sub i64 %64, %65 + store i64 %66, ptr %3, align 8, !tbaa !40 + %67 = icmp ugt i64 %66, 15 + br i1 %67, label %.noexc.i.i.i.i18, label %._crit_edge.i.i.i.i.i17 -.noexc.i.i.i.i18: ; preds = %60 - %67 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - to label %.noexc20 unwind label %79 +.noexc.i.i.i.i18: ; preds = %61 + %68 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + to label %.noexc20 unwind label %80 .noexc20: ; preds = %.noexc.i.i.i.i18 - store ptr %67, ptr %57, align 8, !tbaa !30 - %68 = load i64, ptr %3, align 8, !tbaa !40 - store i64 %68, ptr %61, align 8, !tbaa !35 + store ptr %68, ptr %58, align 8, !tbaa !30 + %69 = load i64, ptr %3, align 8, !tbaa !40 + store i64 %69, ptr %62, align 8, !tbaa !35 br label %._crit_edge.i.i.i.i.i17 -._crit_edge.i.i.i.i.i17: ; preds = %.noexc20, %60 - %69 = phi ptr [ %67, %.noexc20 ], [ %61, %60 ] - switch i64 %65, label %72 [ - i64 1, label %70 +._crit_edge.i.i.i.i.i17: ; preds = %.noexc20, %61 + %70 = phi ptr [ %68, %.noexc20 ], [ %62, %61 ] + switch i64 %66, label %73 [ + i64 1, label %71 i64 0, label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i ] -70: ; preds = %._crit_edge.i.i.i.i.i17 - %71 = load i8, ptr %14, align 1, !tbaa !35 - store i8 %71, ptr %69, align 1, !tbaa !35 +71: ; preds = %._crit_edge.i.i.i.i.i17 + %72 = load i8, ptr %14, align 1, !tbaa !35 + store i8 %72, ptr %70, align 1, !tbaa !35 br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i -72: ; preds = %._crit_edge.i.i.i.i.i17 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %69, ptr align 1 %14, i64 %65, i1 false) +73: ; preds = %._crit_edge.i.i.i.i.i17 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr align 1 %14, i64 %66, i1 false) br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i -_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %72, %70, %._crit_edge.i.i.i.i.i17 - %73 = load i64, ptr %3, align 8, !tbaa !40 - store i64 %73, ptr %62, align 8, !tbaa !34 - %74 = load ptr, ptr %57, align 8, !tbaa !30 - %75 = getelementptr inbounds nuw i8, ptr %74, i64 %73 - store i8 0, ptr %75, align 1, !tbaa !35 +_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %73, %71, %._crit_edge.i.i.i.i.i17 + %74 = load i64, ptr %3, align 8, !tbaa !40 + store i64 %74, ptr %63, align 8, !tbaa !34 + %75 = load ptr, ptr %58, align 8, !tbaa !30 + %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 + store i8 0, ptr %76, align 1, !tbaa !35 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #31 - %76 = load ptr, ptr %56, align 8, !tbaa !29 - %77 = getelementptr inbounds nuw i8, ptr %76, i64 32 - store ptr %77, ptr %56, align 8, !tbaa !29 + %77 = load ptr, ptr %57, align 8, !tbaa !29 + %78 = getelementptr inbounds nuw i8, ptr %77, i64 32 + store ptr %78, ptr %57, align 8, !tbaa !29 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit -78: ; preds = %55 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %57, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit unwind label %79 +79: ; preds = %56 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %58, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit unwind label %80 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit: ; preds = %78, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit: ; preds = %79, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #31 - br label %81 + br label %82 -79: ; preds = %78, %.noexc.i.i.i.i18 - %80 = landingpad { ptr, i32 } +80: ; preds = %79, %.noexc.i.i.i.i18 + %81 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #31 - br label %82 + br label %83 -81: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit, %._crit_edge +82: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 ret void -82: ; preds = %79, %22 - %.pn = phi { ptr, i32 } [ %23, %22 ], [ %80, %79 ] +83: ; preds = %80, %23 + %.pn = phi { ptr, i32 } [ %24, %23 ], [ %81, %80 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #31 resume { ptr, i32 } %.pn diff --git a/bench/box2d/optimized/b2_collide_circle.cpp.ll b/bench/box2d/optimized/b2_collide_circle.cpp.ll index d81b9ec7627..ad44e295256 100644 --- a/bench/box2d/optimized/b2_collide_circle.cpp.ll +++ b/bench/box2d/optimized/b2_collide_circle.cpp.ll @@ -168,17 +168,17 @@ for.end.loopexit: ; preds = %if.end for.end: ; preds = %for.end.loopexit, %entry %separation.0.lcssa = phi i1 [ true, %entry ], [ %24, %for.end.loopexit ] %normalIndex.0.lcssa = phi i32 [ 0, %entry ], [ %normalIndex.1, %for.end.loopexit ] - %add12 = add nsw i32 %normalIndex.0.lcssa, 1 + %add12 = add nuw nsw i32 %normalIndex.0.lcssa, 1 %cmp13 = icmp slt i32 %add12, %17 %cond = select i1 %cmp13, i32 %add12, i32 0 - %idxprom15 = sext i32 %normalIndex.0.lcssa to i64 + %idxprom15 = zext nneg i32 %normalIndex.0.lcssa to i64 %arrayidx16 = getelementptr inbounds %struct.b2Vec2, ptr %m_vertices, i64 %idxprom15 %25 = load i32, ptr %arrayidx16, align 4 %arrayidx16.sroa_idx = getelementptr inbounds i8, ptr %arrayidx16, i64 4 %26 = load i32, ptr %arrayidx16.sroa_idx, align 4 %27 = bitcast i32 %25 to float %28 = bitcast i32 %26 to float - %idxprom17 = sext i32 %cond to i64 + %idxprom17 = zext nneg i32 %cond to i64 %arrayidx18 = getelementptr inbounds %struct.b2Vec2, ptr %m_vertices, i64 %idxprom17 %29 = load i32, ptr %arrayidx18, align 4 %arrayidx18.sroa_idx = getelementptr inbounds i8, ptr %arrayidx18, i64 4 diff --git a/bench/c3c/optimized/context.c.ll b/bench/c3c/optimized/context.c.ll index 89989e94b05..728609c58be 100644 --- a/bench/c3c/optimized/context.c.ll +++ b/bench/c3c/optimized/context.c.ll @@ -92,12 +92,12 @@ define dso_local noundef zeroext i1 @context_set_module_from_filename(ptr nounde 19: ; preds = %._crit_edge.i tail call void @scratch_buffer_clear() #6 - %.02536.i = add nsw i32 %.029.lcssa.i, 1 + %.02536.i = add nuw nsw i32 %.029.lcssa.i, 1 %20 = icmp slt i32 %.02536.i, %.028.lcssa.i br i1 %20, label %.lr.ph39.preheader.i, label %filename_to_module_in_buffer.exit.thread .lr.ph39.preheader.i: ; preds = %19 - %21 = sext i32 %.02536.i to i64 + %21 = zext i32 %.02536.i to i64 br label %.lr.ph39.i .lr.ph39.i: ; preds = %char_is_letter.exit.thread.i, %.lr.ph39.preheader.i @@ -129,63 +129,63 @@ switch.lookup: ; preds = %switch.hole_check char_is_letter.exit.thread.i: ; preds = %char_is_letter.exit.i, %switch.lookup %.0.i = phi i8 [ %switch.load, %switch.lookup ], [ %spec.select, %char_is_letter.exit.i ] tail call void @scratch_buffer_append_char(i8 noundef signext %.0.i) #6 - %indvars.iv.next42.i = add nsw i64 %indvars.iv41.i, 1 - %lftr.wideiv.i = trunc i64 %indvars.iv.next42.i to i32 - %exitcond44.not.i = icmp eq i32 %.028.lcssa.i, %lftr.wideiv.i - br i1 %exitcond44.not.i, label %filename_to_module_in_buffer.exit.thread, label %.lr.ph39.i, !llvm.loop !9 + %indvars.iv.next42.i = add nuw nsw i64 %indvars.iv41.i, 1 + %28 = trunc nuw i64 %indvars.iv.next42.i to i32 + %29 = icmp sgt i32 %.028.lcssa.i, %28 + br i1 %29, label %.lr.ph39.i, label %filename_to_module_in_buffer.exit.thread, !llvm.loop !9 filename_to_module_in_buffer.exit.thread20: ; preds = %._crit_edge.i tail call void (ptr, ptr, ...) @sema_error(ptr noundef %0, ptr noundef nonnull @.str.1, ptr noundef %8) #6 - br label %45 + br label %47 filename_to_module_in_buffer.exit.thread: ; preds = %char_is_letter.exit.thread.i, %19 store i32 64, ptr %2, align 4 - %28 = load i32, ptr getelementptr inbounds (i8, ptr @scratch_buffer, i64 65536), align 4 - %.not.i = icmp eq i32 %28, 0 + %30 = load i32, ptr getelementptr inbounds (i8, ptr @scratch_buffer, i64 65536), align 4 + %.not.i = icmp eq i32 %30, 0 br i1 %.not.i, label %fnv1a.exit, label %.lr.ph.preheader.i13 .lr.ph.preheader.i13: ; preds = %filename_to_module_in_buffer.exit.thread - %wide.trip.count.i14 = zext i32 %28 to i64 + %wide.trip.count.i14 = zext i32 %30 to i64 br label %.lr.ph.i15 .lr.ph.i15: ; preds = %.lr.ph.i15, %.lr.ph.preheader.i13 %indvars.iv.i16 = phi i64 [ 0, %.lr.ph.preheader.i13 ], [ %indvars.iv.next.i17, %.lr.ph.i15 ] - %.061.i = phi i32 [ -2128831035, %.lr.ph.preheader.i13 ], [ %33, %.lr.ph.i15 ] - %29 = getelementptr inbounds i8, ptr @scratch_buffer, i64 %indvars.iv.i16 - %30 = load i8, ptr %29, align 1 - %31 = sext i8 %30 to i32 - %32 = xor i32 %.061.i, %31 - %33 = mul i32 %32, 16777619 + %.061.i = phi i32 [ -2128831035, %.lr.ph.preheader.i13 ], [ %35, %.lr.ph.i15 ] + %31 = getelementptr inbounds i8, ptr @scratch_buffer, i64 %indvars.iv.i16 + %32 = load i8, ptr %31, align 1 + %33 = sext i8 %32 to i32 + %34 = xor i32 %.061.i, %33 + %35 = mul i32 %34, 16777619 %indvars.iv.next.i17 = add nuw nsw i64 %indvars.iv.i16, 1 %exitcond.not.i18 = icmp eq i64 %indvars.iv.next.i17, %wide.trip.count.i14 br i1 %exitcond.not.i18, label %fnv1a.exit, label %.lr.ph.i15, !llvm.loop !10 fnv1a.exit: ; preds = %.lr.ph.i15, %filename_to_module_in_buffer.exit.thread - %.06.lcssa.i = phi i32 [ -2128831035, %filename_to_module_in_buffer.exit.thread ], [ %33, %.lr.ph.i15 ] - %34 = call ptr @symtab_add(ptr noundef nonnull @scratch_buffer, i32 noundef %28, i32 noundef %.06.lcssa.i, ptr noundef nonnull %2) #6 - %35 = load i32, ptr %2, align 4 - %.not = icmp eq i32 %35, 64 - br i1 %.not, label %38, label %36 - -36: ; preds = %fnv1a.exit - %37 = load ptr, ptr %7, align 8 - call void (ptr, ptr, ...) @sema_error(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %37) #6 - br label %45 + %.06.lcssa.i = phi i32 [ -2128831035, %filename_to_module_in_buffer.exit.thread ], [ %35, %.lr.ph.i15 ] + %36 = call ptr @symtab_add(ptr noundef nonnull @scratch_buffer, i32 noundef %30, i32 noundef %.06.lcssa.i, ptr noundef nonnull %2) #6 + %37 = load i32, ptr %2, align 4 + %.not = icmp eq i32 %37, 64 + br i1 %.not, label %40, label %38 38: ; preds = %fnv1a.exit - %39 = call ptr @calloc_arena(i64 noundef 24) #6 - %40 = getelementptr inbounds i8, ptr %39, i64 8 - store i64 0, ptr %39, align 8 - store ptr %34, ptr %40, align 8 - %41 = load i32, ptr getelementptr inbounds (i8, ptr @scratch_buffer, i64 65536), align 4 - %42 = getelementptr inbounds i8, ptr %39, i64 16 - store i32 %41, ptr %42, align 8 - %43 = load ptr, ptr %3, align 8 - %44 = call fastcc zeroext i1 @create_module_or_check_name(ptr noundef %43, ptr noundef nonnull %39, ptr noundef null) - br label %45 - -45: ; preds = %38, %36, %filename_to_module_in_buffer.exit.thread20 - %.0 = phi i1 [ false, %36 ], [ %44, %38 ], [ false, %filename_to_module_in_buffer.exit.thread20 ] + %39 = load ptr, ptr %7, align 8 + call void (ptr, ptr, ...) @sema_error(ptr noundef %0, ptr noundef nonnull @.str.2, ptr noundef %39) #6 + br label %47 + +40: ; preds = %fnv1a.exit + %41 = call ptr @calloc_arena(i64 noundef 24) #6 + %42 = getelementptr inbounds i8, ptr %41, i64 8 + store i64 0, ptr %41, align 8 + store ptr %36, ptr %42, align 8 + %43 = load i32, ptr getelementptr inbounds (i8, ptr @scratch_buffer, i64 65536), align 4 + %44 = getelementptr inbounds i8, ptr %41, i64 16 + store i32 %43, ptr %44, align 8 + %45 = load ptr, ptr %3, align 8 + %46 = call fastcc zeroext i1 @create_module_or_check_name(ptr noundef %45, ptr noundef nonnull %41, ptr noundef null) + br label %47 + +47: ; preds = %40, %38, %filename_to_module_in_buffer.exit.thread20 + %.0 = phi i1 [ false, %38 ], [ %46, %40 ], [ false, %filename_to_module_in_buffer.exit.thread20 ] ret i1 %.0 } diff --git a/bench/ceres/optimized/schur_eliminator_2_2_2.cc.ll b/bench/ceres/optimized/schur_eliminator_2_2_2.cc.ll index accc5ee70d5..9c68c0dc08b 100644 --- a/bench/ceres/optimized/schur_eliminator_2_2_2.cc.ll +++ b/bench/ceres/optimized/schur_eliminator_2_2_2.cc.ll @@ -7698,7 +7698,7 @@ _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELi2ELi1EEELin1ELi1ELb0EE br i1 %.not67, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi1ELin1ELin1EEELin1ELi1ELb0EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %444 444: ; preds = %443 - %445 = add nsw i64 %.sroa.0.1.i.i, %.060210 + %445 = add nuw nsw i64 %.sroa.0.1.i.i, %.060210 %446 = getelementptr inbounds double, ptr %407, i64 %.060210 %447 = getelementptr inbounds double, ptr %407, i64 %445 %448 = load double, ptr %446, align 8 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/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/2i3dvgzkmy2gn6v1.ll b/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll index 0243b261d2a..aacce9b4949 100644 --- a/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll +++ b/bench/coreutils-rs/optimized/2i3dvgzkmy2gn6v1.ll @@ -6951,30 +6951,30 @@ define hidden void @_ZN7uu_sort15numeric_str_cmp7NumInfo5parse17h09dae599bdcb2b1 %.val = load i32, ptr %8, align 4, !range !1317 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.lr.ph, %95 - %.sroa.0.0.ph148 = phi i64 [ 0, %.lr.ph.lr.ph ], [ %96, %95 ] - %.sroa.9.0.ph147 = phi i64 [ undef, %.lr.ph.lr.ph ], [ %.sroa.9.1198, %95 ] - %.0.ph146 = phi i8 [ 0, %.lr.ph.lr.ph ], [ 1, %95 ] - %.046.ph145 = phi i8 [ 1, %.lr.ph.lr.ph ], [ %.046119, %95 ] - %.048.ph144 = phi i64 [ -1, %.lr.ph.lr.ph ], [ %spec.select196, %95 ] - %.052.ph143 = phi i1 [ true, %.lr.ph.lr.ph ], [ false, %95 ] - %.065.ph142 = phi i8 [ 0, %.lr.ph.lr.ph ], [ %.065117, %95 ] - %.sroa.0.067.ph141 = phi ptr [ %1, %.lr.ph.lr.ph ], [ %.sink, %95 ] - %.sroa.11.0.ph140 = phi i64 [ 0, %.lr.ph.lr.ph ], [ %54, %95 ] - %9 = icmp eq i64 %.sroa.0.0.ph148, 1 +.lr.ph: ; preds = %.lr.ph.lr.ph, %.outer + %.sroa.0.0.ph149 = phi i64 [ 0, %.lr.ph.lr.ph ], [ %.sroa.0.1, %.outer ] + %.sroa.9.0.ph148 = phi i64 [ undef, %.lr.ph.lr.ph ], [ %.sroa.9.1, %.outer ] + %.0.ph147 = phi i8 [ 0, %.lr.ph.lr.ph ], [ 1, %.outer ] + %.046.ph146 = phi i8 [ 1, %.lr.ph.lr.ph ], [ %.046120, %.outer ] + %.048.ph145 = phi i64 [ -1, %.lr.ph.lr.ph ], [ %spec.select, %.outer ] + %.052.ph144 = phi i1 [ true, %.lr.ph.lr.ph ], [ false, %.outer ] + %.065.ph143 = phi i8 [ 0, %.lr.ph.lr.ph ], [ %.065118, %.outer ] + %.sroa.0.067.ph142 = phi ptr [ %1, %.lr.ph.lr.ph ], [ %.sink, %.outer ] + %.sroa.11.0.ph141 = phi i64 [ 0, %.lr.ph.lr.ph ], [ %53, %.outer ] + %9 = icmp ne i64 %.sroa.0.0.ph149, 0 %10 = xor i1 %9, true br label %11 11: ; preds = %.lr.ph, %.critedge - %.0121 = phi i8 [ %.0.ph146, %.lr.ph ], [ %.1, %.critedge ] - %.046119 = phi i8 [ %.046.ph145, %.lr.ph ], [ %.147, %.critedge ] - %.052118 = phi i1 [ %.052.ph143, %.lr.ph ], [ %.153, %.critedge ] - %.065117 = phi i8 [ %.065.ph142, %.lr.ph ], [ %.166, %.critedge ] - %.sroa.0.067116 = phi ptr [ %.sroa.0.067.ph141, %.lr.ph ], [ %.sink, %.critedge ] - %.sroa.11.0115 = phi i64 [ %.sroa.11.0.ph140, %.lr.ph ], [ %54, %.critedge ] - %.pn.pn = ptrtoint ptr %.sroa.0.067116 to i64 - %12 = getelementptr inbounds i8, ptr %.sroa.0.067116, i64 1 - %13 = load i8, ptr %.sroa.0.067116, align 1, !noalias !1318, !noundef !4 + %.0122 = phi i8 [ %.0.ph147, %.lr.ph ], [ %.1, %.critedge ] + %.046120 = phi i8 [ %.046.ph146, %.lr.ph ], [ %.147, %.critedge ] + %.052119 = phi i1 [ %.052.ph144, %.lr.ph ], [ %.153, %.critedge ] + %.065118 = phi i8 [ %.065.ph143, %.lr.ph ], [ %.166, %.critedge ] + %.sroa.0.067117 = phi ptr [ %.sroa.0.067.ph142, %.lr.ph ], [ %.sink, %.critedge ] + %.sroa.11.0116 = phi i64 [ %.sroa.11.0.ph141, %.lr.ph ], [ %53, %.critedge ] + %.pn.pn = ptrtoint ptr %.sroa.0.067117 to i64 + %12 = getelementptr inbounds i8, ptr %.sroa.0.067117, i64 1 + %13 = load i8, ptr %.sroa.0.067117, align 1, !noalias !1318, !noundef !4 %14 = icmp sgt i8 %13, -1 br i1 %14, label %25, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit13.i.i" @@ -6983,7 +6983,7 @@ define hidden void @_ZN7uu_sort15numeric_str_cmp7NumInfo5parse17h09dae599bdcb2b1 %16 = zext nneg i8 %15 to i32 %17 = icmp ne ptr %12, %5 tail call void @llvm.assume(i1 %17) - %18 = getelementptr inbounds i8, ptr %.sroa.0.067116, i64 2 + %18 = getelementptr inbounds i8, ptr %.sroa.0.067117, i64 2 %19 = load i8, ptr %12, align 1, !noalias !1318, !noundef !4 %20 = shl nuw nsw i32 %16, 6 %21 = and i8 %19, 63 @@ -6999,7 +6999,7 @@ define hidden void @_ZN7uu_sort15numeric_str_cmp7NumInfo5parse17h09dae599bdcb2b1 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit15.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit13.i.i" %27 = icmp ne ptr %18, %5 tail call void @llvm.assume(i1 %27) - %28 = getelementptr inbounds i8, ptr %.sroa.0.067116, i64 3 + %28 = getelementptr inbounds i8, ptr %.sroa.0.067117, i64 3 %29 = load i8, ptr %18, align 1, !noalias !1318, !noundef !4 %30 = shl nuw nsw i32 %22, 6 %31 = and i8 %29, 63 @@ -7025,58 +7025,57 @@ define hidden void @_ZN7uu_sort15numeric_str_cmp7NumInfo5parse17h09dae599bdcb2b1 br i1 %47, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit": ; preds = %37 - %48 = getelementptr inbounds i8, ptr %.sroa.0.067116, i64 4 + %48 = getelementptr inbounds i8, ptr %.sroa.0.067117, i64 4 br label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit": ; preds = %.critedge, %37 - %.046.lcssa.ph = phi i8 [ %.046119, %37 ], [ %.147, %.critedge ] - %.0.lcssa.ph = phi i8 [ %.0121, %37 ], [ %.1, %.critedge ] + %.046.lcssa.ph = phi i8 [ %.046120, %37 ], [ %.147, %.critedge ] + %.0.lcssa.ph = phi i8 [ %.0122, %37 ], [ %.1, %.critedge ] %49 = trunc nuw i8 %.0.lcssa.ph to i1 %50 = select i1 %49, i64 %2, i64 0 br label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" -"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread": ; preds = %95, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" - %.048.ph.lcssa = phi i64 [ %.048.ph144, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %spec.select196, %95 ] - %.sroa.9.0.ph.lcssa = phi i64 [ %.sroa.9.0.ph147, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %.sroa.9.1198, %95 ] - %.sroa.0.0.ph.lcssa = phi i64 [ %.sroa.0.0.ph148, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %96, %95 ] - %.046.lcssa = phi i8 [ %.046.lcssa.ph, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %.046119, %95 ] - %.0.lcssa = phi i64 [ %50, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %2, %95 ] - %51 = icmp eq i64 %.sroa.0.0.ph.lcssa, 1 - br i1 %51, label %55, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread" +"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread": ; preds = %.outer, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" + %.048.ph.lcssa = phi i64 [ %.048.ph145, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %spec.select, %.outer ] + %.sroa.9.0.ph.lcssa = phi i64 [ %.sroa.9.0.ph148, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %.sroa.9.1, %.outer ] + %.sroa.0.0.ph.lcssa = phi i64 [ %.sroa.0.0.ph149, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %.sroa.0.1, %.outer ] + %.046.lcssa = phi i8 [ %.046.lcssa.ph, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %.046120, %.outer ] + %.0.lcssa = phi i64 [ %50, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit" ], [ %2, %.outer ] + %.not87 = icmp eq i64 %.sroa.0.0.ph.lcssa, 0 + br i1 %.not87, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread", label %54 "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit13.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit15.i.i", %25, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit" %.sink = phi ptr [ %48, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit" ], [ %18, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit13.i.i" ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit15.i.i" ], [ %12, %25 ] %.sroa.4.0.i.ph10.i77 = phi i32 [ %46, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit13.i.i" ], [ %35, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf3d62cf49803c472E.llvm.687266931824691263.exit15.i.i" ], [ %26, %25 ] - %.sroa.4.0.i.ph10.i77.fr = freeze i32 %.sroa.4.0.i.ph10.i77 - %52 = ptrtoint ptr %.sink to i64 - %53 = sub i64 %.sroa.11.0115, %.pn.pn - %54 = add i64 %53, %52 - br i1 %.052118, label %61, label %.critedge60.thread - -55: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" - %56 = and i8 %.046.lcssa, 1 + %51 = ptrtoint ptr %.sink to i64 + %52 = sub i64 %.sroa.11.0116, %.pn.pn + %53 = add i64 %52, %51 + br i1 %.052119, label %60, label %.critedge60.thread + +54: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" + %55 = and i8 %.046.lcssa, 1 br label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread" -"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread": ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread", %4, %.thread, %108, %55 - %.048.ph144.lcssa226.sink = phi i64 [ %.048.ph144, %.thread ], [ 0, %108 ], [ %.048.ph.lcssa, %55 ], [ 0, %4 ], [ 0, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] - %.sink236 = phi i8 [ %114, %.thread ], [ 1, %108 ], [ %56, %55 ], [ 1, %4 ], [ 1, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] - %.sroa.9.0.ph147.lcssa228.sink = phi i64 [ %.sroa.9.0.ph147, %.thread ], [ %.61, %108 ], [ %.sroa.9.0.ph.lcssa, %55 ], [ 0, %4 ], [ %.0.lcssa, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] - %.sink233 = phi i64 [ %113, %.thread ], [ %.61, %108 ], [ %2, %55 ], [ 0, %4 ], [ %.0.lcssa, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] - store i64 %.048.ph144.lcssa226.sink, ptr %0, align 8 - %57 = getelementptr inbounds i8, ptr %0, i64 8 - store i8 %.sink236, ptr %57, align 8 - %58 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sroa.9.0.ph147.lcssa228.sink, ptr %58, align 8 - %59 = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sink233, ptr %59, align 8 +"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread": ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread", %4, %.thread, %104, %54 + %.048.ph145.lcssa216.sink = phi i64 [ %.048.ph145, %.thread ], [ 0, %104 ], [ %.048.ph.lcssa, %54 ], [ 0, %4 ], [ 0, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] + %.sink226 = phi i8 [ %110, %.thread ], [ 1, %104 ], [ %55, %54 ], [ 1, %4 ], [ 1, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] + %.sroa.9.0.ph148.lcssa218.sink = phi i64 [ %.sroa.9.0.ph148, %.thread ], [ %.61, %104 ], [ %.sroa.9.0.ph.lcssa, %54 ], [ 0, %4 ], [ %.0.lcssa, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] + %.sink223 = phi i64 [ %109, %.thread ], [ %.61, %104 ], [ %2, %54 ], [ 0, %4 ], [ %.0.lcssa, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread" ] + store i64 %.048.ph145.lcssa216.sink, ptr %0, align 8 + %56 = getelementptr inbounds i8, ptr %0, i64 8 + store i8 %.sink226, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %.sroa.9.0.ph148.lcssa218.sink, ptr %57, align 8 + %58 = getelementptr inbounds i8, ptr %0, i64 24 + store i64 %.sink223, ptr %58, align 8 ret void -.critedge60: ; preds = %62 - %60 = icmp eq i32 %.sroa.4.0.i.ph10.i77.fr, 45 - br i1 %60, label %.critedge, label %.critedge60.thread +.critedge60: ; preds = %61 + %59 = icmp eq i32 %.sroa.4.0.i.ph10.i77, 45 + br i1 %59, label %.critedge, label %.critedge60.thread -61: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73" - switch i32 %.sroa.4.0.i.ph10.i77.fr, label %62 [ +60: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73" + switch i32 %.sroa.4.0.i.ph10.i77, label %61 [ i32 32, label %.critedge i32 13, label %.critedge i32 12, label %.critedge @@ -7085,143 +7084,136 @@ define hidden void @_ZN7uu_sort15numeric_str_cmp7NumInfo5parse17h09dae599bdcb2b1 i32 9, label %.critedge ] -62: ; preds = %61 - %63 = icmp ugt i32 %.sroa.4.0.i.ph10.i77.fr, 127 - br i1 %63, label %64, label %.critedge60 - -64: ; preds = %62 - %65 = lshr i32 %.sroa.4.0.i.ph10.i77.fr, 8 - switch i32 %65, label %.critedge60.thread [ - i32 0, label %72 - i32 22, label %66 - i32 32, label %77 - i32 48, label %69 +61: ; preds = %60 + %62 = icmp ugt i32 %.sroa.4.0.i.ph10.i77, 127 + br i1 %62, label %63, label %.critedge60 + +63: ; preds = %61 + %64 = lshr i32 %.sroa.4.0.i.ph10.i77, 8 + switch i32 %64, label %.critedge60.thread [ + i32 0, label %71 + i32 22, label %65 + i32 32, label %76 + i32 48, label %68 ] -66: ; preds = %64 - %67 = icmp eq i32 %.sroa.4.0.i.ph10.i77.fr, 5760 - %68 = zext i1 %67 to i8 +65: ; preds = %63 + %66 = icmp eq i32 %.sroa.4.0.i.ph10.i77, 5760 + %67 = zext i1 %66 to i8 br label %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit -69: ; preds = %64 - %70 = icmp eq i32 %.sroa.4.0.i.ph10.i77.fr, 12288 - %71 = zext i1 %70 to i8 +68: ; preds = %63 + %69 = icmp eq i32 %.sroa.4.0.i.ph10.i77, 12288 + %70 = zext i1 %69 to i8 br label %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit -72: ; preds = %64 - %73 = and i32 %.sroa.4.0.i.ph10.i77.fr, 255 - %74 = zext nneg i32 %73 to i64 - %75 = getelementptr inbounds [256 x i8], ptr @_ZN4core7unicode12unicode_data11white_space14WHITESPACE_MAP17h6b90392c31973ed5E, i64 0, i64 %74 - %76 = load i8, ptr %75, align 1, !noundef !4 +71: ; preds = %63 + %72 = and i32 %.sroa.4.0.i.ph10.i77, 255 + %73 = zext nneg i32 %72 to i64 + %74 = getelementptr inbounds [256 x i8], ptr @_ZN4core7unicode12unicode_data11white_space14WHITESPACE_MAP17h6b90392c31973ed5E, i64 0, i64 %73 + %75 = load i8, ptr %74, align 1, !noundef !4 br label %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit -77: ; preds = %64 - %78 = and i32 %.sroa.4.0.i.ph10.i77.fr, 255 - %79 = zext nneg i32 %78 to i64 - %80 = getelementptr inbounds [256 x i8], ptr @_ZN4core7unicode12unicode_data11white_space14WHITESPACE_MAP17h6b90392c31973ed5E, i64 0, i64 %79 - %81 = load i8, ptr %80, align 1, !noundef !4 - %82 = lshr i8 %81, 1 +76: ; preds = %63 + %77 = and i32 %.sroa.4.0.i.ph10.i77, 255 + %78 = zext nneg i32 %77 to i64 + %79 = getelementptr inbounds [256 x i8], ptr @_ZN4core7unicode12unicode_data11white_space14WHITESPACE_MAP17h6b90392c31973ed5E, i64 0, i64 %78 + %80 = load i8, ptr %79, align 1, !noundef !4 + %81 = lshr i8 %80, 1 br label %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit -_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit: ; preds = %66, %69, %72, %77 - %.0.i = phi i8 [ %71, %69 ], [ %82, %77 ], [ %68, %66 ], [ %76, %72 ] - %83 = trunc i8 %.0.i to i1 - br i1 %83, label %.critedge, label %.critedge60.thread - -.critedge60.thread: ; preds = %64, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73", %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit, %.critedge60 - %84 = icmp eq i32 %7, %.sroa.4.0.i.ph10.i77.fr - br i1 %84, label %.critedge, label %86 - -.critedge: ; preds = %88, %61, %61, %61, %61, %61, %61, %.critedge60.thread, %.critedge60, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit, %98 - %.166 = phi i8 [ %.065117, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ %.065117, %.critedge60 ], [ %.065117, %.critedge60.thread ], [ %.065117, %98 ], [ %.065117, %61 ], [ %.065117, %61 ], [ %.065117, %61 ], [ %.065117, %61 ], [ %.065117, %61 ], [ %.065117, %61 ], [ 1, %88 ] - %.153 = phi i1 [ true, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ false, %.critedge60 ], [ false, %.critedge60.thread ], [ false, %98 ], [ true, %61 ], [ true, %61 ], [ true, %61 ], [ true, %61 ], [ true, %61 ], [ true, %61 ], [ false, %88 ] - %.147 = phi i8 [ %.046119, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ 0, %.critedge60 ], [ %.046119, %.critedge60.thread ], [ %.046119, %98 ], [ %.046119, %61 ], [ %.046119, %61 ], [ %.046119, %61 ], [ %.046119, %61 ], [ %.046119, %61 ], [ %.046119, %61 ], [ %.046119, %88 ] - %.1 = phi i8 [ %.0121, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ %.0121, %.critedge60 ], [ %.0121, %.critedge60.thread ], [ 1, %98 ], [ %.0121, %61 ], [ %.0121, %61 ], [ %.0121, %61 ], [ %.0121, %61 ], [ %.0121, %61 ], [ %.0121, %61 ], [ %.0121, %88 ] - %85 = icmp eq ptr %.sink, %5 - br i1 %85, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit", label %11 - -86: ; preds = %.critedge60.thread - %87 = icmp eq i32 %.sroa.4.0.i.ph10.i77.fr, %.val - br i1 %87, label %88, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit - -88: ; preds = %86 - %89 = trunc nuw i8 %.065117 to i1 - br i1 %89, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread, label %.critedge - -_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit: ; preds = %86 - %90 = add nsw i32 %.sroa.4.0.i.ph10.i77.fr, -58 - %.0.i62 = icmp ult i32 %90, -10 +_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit: ; preds = %65, %68, %71, %76 + %.0.i = phi i8 [ %70, %68 ], [ %81, %76 ], [ %67, %65 ], [ %75, %71 ] + %82 = trunc i8 %.0.i to i1 + br i1 %82, label %.critedge, label %.critedge60.thread + +.critedge60.thread: ; preds = %63, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread73", %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit, %.critedge60 + %83 = icmp eq i32 %7, %.sroa.4.0.i.ph10.i77 + br i1 %83, label %.critedge, label %85 + +.critedge: ; preds = %87, %60, %60, %60, %60, %60, %60, %.critedge60.thread, %.critedge60, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit, %96 + %.166 = phi i8 [ %.065118, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ %.065118, %.critedge60 ], [ %.065118, %.critedge60.thread ], [ %.065118, %96 ], [ %.065118, %60 ], [ %.065118, %60 ], [ %.065118, %60 ], [ %.065118, %60 ], [ %.065118, %60 ], [ %.065118, %60 ], [ 1, %87 ] + %.153 = phi i1 [ true, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ false, %.critedge60 ], [ false, %.critedge60.thread ], [ false, %96 ], [ true, %60 ], [ true, %60 ], [ true, %60 ], [ true, %60 ], [ true, %60 ], [ true, %60 ], [ false, %87 ] + %.147 = phi i8 [ %.046120, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ 0, %.critedge60 ], [ %.046120, %.critedge60.thread ], [ %.046120, %96 ], [ %.046120, %60 ], [ %.046120, %60 ], [ %.046120, %60 ], [ %.046120, %60 ], [ %.046120, %60 ], [ %.046120, %60 ], [ %.046120, %87 ] + %.1 = phi i8 [ %.0122, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.llvm.687266931824691263.exit ], [ %.0122, %.critedge60 ], [ %.0122, %.critedge60.thread ], [ 1, %96 ], [ %.0122, %60 ], [ %.0122, %60 ], [ %.0122, %60 ], [ %.0122, %60 ], [ %.0122, %60 ], [ %.0122, %60 ], [ %.0122, %87 ] + %84 = icmp eq ptr %.sink, %5 + br i1 %84, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.loopexit", label %11 + +85: ; preds = %.critedge60.thread + %86 = icmp eq i32 %.sroa.4.0.i.ph10.i77, %.val + br i1 %86, label %87, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit + +87: ; preds = %85 + %88 = trunc nuw i8 %.065118 to i1 + br i1 %88, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread, label %.critedge + +_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit: ; preds = %85 + %89 = add nsw i32 %.sroa.4.0.i.ph10.i77, -58 + %.0.i62 = icmp ult i32 %89, -10 br i1 %.0.i62, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread, label %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 -_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread: ; preds = %88, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit - %.sroa.4.0.i.ph10.i77.lcssa = phi i32 [ %.val, %88 ], [ %.sroa.4.0.i.ph10.i77.fr, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit ] - br i1 %9, label %104, label %108 +_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread: ; preds = %87, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit + %.sroa.4.0.i.ph10.i77.lcssa = phi i32 [ %.val, %87 ], [ %.sroa.4.0.i.ph10.i77, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit ] + %.not = icmp eq i64 %.sroa.0.0.ph149, 0 + br i1 %.not, label %104, label %100 _ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit - %91 = icmp eq i32 %.sroa.4.0.i.ph10.i77.fr, 48 - %or.cond2 = and i1 %91, %10 - br i1 %or.cond2, label %98, label %.outer - -.outer: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 - %92 = and i8 %.065117, 1 + %90 = icmp eq i32 %.sroa.4.0.i.ph10.i77, 48 + %or.cond2 = and i1 %90, %10 + br i1 %or.cond2, label %96, label %.outer + +.outer: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82, %98 + %91 = phi i1 [ true, %98 ], [ %90, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 ] + %.149 = phi i64 [ %99, %98 ], [ %.048.ph145, %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 ] + %92 = and i8 %.065118, 1 %93 = xor i8 %92, 1 %94 = zext nneg i8 %93 to i64 - %spec.select = add i64 %.048.ph144, %94 + %spec.select = add i64 %.149, %94 %or.cond3 = or i1 %9, %91 - %.sroa.9.1 = select i1 %or.cond3, i64 %.sroa.9.0.ph147, i64 %.sroa.11.0115 - %spec.select238 = select i1 %91, i64 %.sroa.0.0.ph148, i64 1 - br label %95 - -95: ; preds = %.outer, %.outer.thread - %.sroa.9.1198 = phi i64 [ %.sroa.9.0.ph147, %.outer.thread ], [ %.sroa.9.1, %.outer ] - %spec.select196 = phi i64 [ %spec.select192, %.outer.thread ], [ %spec.select, %.outer ] - %96 = phi i64 [ %.sroa.0.0.ph148, %.outer.thread ], [ %spec.select238, %.outer ] - %97 = icmp eq ptr %.sink, %5 - br i1 %97, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread", label %.lr.ph - -98: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 - %99 = trunc nuw i8 %.065117 to i1 - br i1 %99, label %.outer.thread, label %.critedge - -.outer.thread: ; preds = %98 - %100 = add i64 %.048.ph144, -1 - %101 = and i8 %.065117, 1 - %102 = xor i8 %101, 1 - %103 = zext nneg i8 %102 to i64 - %spec.select192 = add i64 %100, %103 - br label %95 + %.sroa.9.1 = select i1 %or.cond3, i64 %.sroa.9.0.ph148, i64 %.sroa.11.0116 + %.sroa.0.1 = select i1 %or.cond3, i64 %.sroa.0.0.ph149, i64 1 + %95 = icmp eq ptr %.sink, %5 + br i1 %95, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread", label %.lr.ph + +96: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread82 + %97 = trunc nuw i8 %.065118 to i1 + br i1 %97, label %98, label %.critedge + +98: ; preds = %96 + %99 = add i64 %.048.ph145, -1 + br label %.outer + +100: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread + %101 = getelementptr inbounds i8, ptr %3, i64 8 + %102 = load i8, ptr %101, align 4, !range !492, !noundef !4 + %103 = trunc nuw i8 %102 to i1 + br i1 %103, label %106, label %.thread 104: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread - %105 = getelementptr inbounds i8, ptr %3, i64 8 - %106 = load i8, ptr %105, align 4, !range !492, !noundef !4 - %107 = trunc nuw i8 %106 to i1 - br i1 %107, label %110, label %.thread - -108: ; preds = %_ZN7uu_sort15numeric_str_cmp7NumInfo15is_invalid_char17h9471ff473f7ea521E.exit.thread - %109 = trunc nuw i8 %.0121 to i1 - %.61 = select i1 %109, i64 %.sroa.11.0115, i64 0 + %105 = trunc nuw i8 %.0122 to i1 + %.61 = select i1 %105, i64 %.sroa.11.0116, i64 0 br label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread" -110: ; preds = %104 +106: ; preds = %100 switch i32 %.sroa.4.0.i.ph10.i77.lcssa, label %.thread [ - i32 75, label %111 - i32 107, label %111 - i32 77, label %111 - i32 71, label %111 - i32 84, label %111 - i32 80, label %111 - i32 69, label %111 - i32 90, label %111 - i32 89, label %111 + i32 75, label %107 + i32 107, label %107 + i32 77, label %107 + i32 71, label %107 + i32 84, label %107 + i32 80, label %107 + i32 69, label %107 + i32 90, label %107 + i32 89, label %107 ] -111: ; preds = %110, %110, %110, %110, %110, %110, %110, %110, %110 - %112 = add i64 %.sroa.11.0115, 1 +107: ; preds = %106, %106, %106, %106, %106, %106, %106, %106, %106 + %108 = add i64 %.sroa.11.0116, 1 br label %.thread -.thread: ; preds = %110, %104, %111 - %113 = phi i64 [ %112, %111 ], [ %.sroa.11.0115, %104 ], [ %.sroa.11.0115, %110 ] - %114 = and i8 %.046119, 1 +.thread: ; preds = %106, %100, %107 + %109 = phi i64 [ %108, %107 ], [ %.sroa.11.0116, %100 ], [ %.sroa.11.0116, %106 ] + %110 = and i8 %.046120, 1 br label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.llvm.687266931824691263.exit.thread.thread" } diff --git a/bench/coreutils-rs/optimized/2l6nxvvz97tcra6u.ll b/bench/coreutils-rs/optimized/2l6nxvvz97tcra6u.ll index 7d503c7e2dd..a08960df82f 100644 --- a/bench/coreutils-rs/optimized/2l6nxvvz97tcra6u.ll +++ b/bench/coreutils-rs/optimized/2l6nxvvz97tcra6u.ll @@ -3536,23 +3536,21 @@ common.resume: ; preds = %147, %118 129: ; preds = %96, %99 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %17), !noalias !346 - %130 = and i8 %.049.i, 1 - %131 = and i8 %.0.i, 1 - %132 = zext i1 %.not.i to i8 + %130 = zext i1 %.not.i to i8 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %28) - %133 = getelementptr inbounds i8, ptr %28, i64 48 - %134 = getelementptr inbounds i8, ptr %28, i64 66 - %135 = getelementptr inbounds i8, ptr %28, i64 67 - %136 = getelementptr inbounds i8, ptr %28, i64 68 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %133, i8 0, i64 16, i1 false), !alias.scope !452 - %137 = getelementptr inbounds i8, ptr %28, i64 69 - store i8 0, ptr %137, align 1, !alias.scope !452 - %138 = getelementptr inbounds i8, ptr %28, i64 73 - store i8 10, ptr %138, align 1, !alias.scope !452 - %139 = getelementptr inbounds i8, ptr %28, i64 64 - store i8 2, ptr %139, align 8, !alias.scope !452 - %140 = getelementptr inbounds i8, ptr %28, i64 70 - store i8 0, ptr %140, align 2, !alias.scope !452 + %131 = getelementptr inbounds i8, ptr %28, i64 48 + %132 = getelementptr inbounds i8, ptr %28, i64 66 + %133 = getelementptr inbounds i8, ptr %28, i64 67 + %134 = getelementptr inbounds i8, ptr %28, i64 68 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %131, i8 0, i64 16, i1 false), !alias.scope !452 + %135 = getelementptr inbounds i8, ptr %28, i64 69 + store i8 0, ptr %135, align 1, !alias.scope !452 + %136 = getelementptr inbounds i8, ptr %28, i64 73 + store i8 10, ptr %136, align 1, !alias.scope !452 + %137 = getelementptr inbounds i8, ptr %28, i64 64 + store i8 2, ptr %137, align 8, !alias.scope !452 + %138 = getelementptr inbounds i8, ptr %28, i64 70 + store i8 0, ptr %138, align 2, !alias.scope !452 store i64 0, ptr %28, align 8, !alias.scope !452 %.sroa.4.0..sroa_idx.i138 = getelementptr inbounds i8, ptr %28, i64 8 store ptr inttoptr (i64 8 to ptr), ptr %.sroa.4.0..sroa_idx.i138, align 8, !alias.scope !452 @@ -3562,13 +3560,15 @@ common.resume: ; preds = %147, %118 store ptr inttoptr (i64 1 to ptr), ptr %.sroa.42.0..sroa_idx.i, align 8, !alias.scope !452 %.sroa.53.0..sroa_idx.i = getelementptr inbounds i8, ptr %28, i64 40 store i64 0, ptr %.sroa.53.0..sroa_idx.i, align 8, !alias.scope !452 - %141 = getelementptr inbounds i8, ptr %28, i64 72 - store i8 0, ptr %141, align 8, !alias.scope !452 - %142 = getelementptr inbounds i8, ptr %28, i64 71 - store i8 0, ptr %142, align 1, !alias.scope !452 - store i8 %132, ptr %136, align 4 - store i8 %130, ptr %134, align 2 - store i8 %131, ptr %135, align 1 + %139 = getelementptr inbounds i8, ptr %28, i64 72 + store i8 0, ptr %139, align 8, !alias.scope !452 + %140 = getelementptr inbounds i8, ptr %28, i64 71 + store i8 0, ptr %140, align 1, !alias.scope !452 + store i8 %130, ptr %134, align 4 + %141 = and i8 %.049.i, 1 + store i8 %141, ptr %132, align 2 + %142 = and i8 %.0.i, 1 + store i8 %142, ptr %133, align 1 %143 = invoke noundef zeroext i1 @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches8get_flag17ha8645a16dff0d6d8E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %1, ptr noalias noundef nonnull readonly align 1 @anon.675cd04a8c62a68bbb52d83b7dbbf767.74, i64 noundef 1) to label %150 unwind label %148 @@ -3595,7 +3595,7 @@ common.resume: ; preds = %147, %118 150: ; preds = %129 %151 = zext i1 %143 to i8 - store i8 %151, ptr %137, align 1 + store i8 %151, ptr %135, align 1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) invoke fastcc void @_ZN7uu_join16get_field_number17h952cd6f8fcc8b645E(ptr noalias nocapture noundef align 8 dereferenceable(16) %27, i64 noundef %.sroa.6.0, i64 %.sroa.10.0, i64 noundef %.sroa.63.0, i64 %.sroa.104.0) to label %152 unwind label %148 @@ -3609,7 +3609,7 @@ common.resume: ; preds = %147, %118 br i1 %154, label %157, label %158 157: ; preds = %152 - store i64 %156, ptr %133, align 8 + store i64 %156, ptr %131, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) invoke fastcc void @_ZN7uu_join16get_field_number17h952cd6f8fcc8b645E(ptr noalias nocapture noundef align 8 dereferenceable(16) %26, i64 noundef %.sroa.6.0, i64 %.sroa.10.0, i64 noundef %.sroa.68.0, i64 %.sroa.109.0) to label %162 unwind label %148 @@ -3681,7 +3681,7 @@ common.resume: ; preds = %147, %118 %186 = getelementptr inbounds i8, ptr %25, i64 9 %187 = load i8, ptr %186, align 1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) - store i8 %185, ptr %139, align 8 + store i8 %185, ptr %137, align 8 %188 = getelementptr inbounds i8, ptr %28, i64 65 store i8 %187, ptr %188, align 1 br label %179 @@ -3744,7 +3744,7 @@ common.resume: ; preds = %147, %118 br label %212 211: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha96388f7069bafcaE.exit" - store i8 1, ptr %140, align 2 + store i8 1, ptr %138, align 2 br label %201 212: ; preds = %264, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha96388f7069bafcaE.exit.thread" @@ -3948,7 +3948,7 @@ common.resume: ; preds = %147, %118 to label %296 unwind label %148 295: ; preds = %292 - store i8 1, ptr %141, align 8 + store i8 1, ptr %139, align 8 br label %293 296: ; preds = %293 @@ -3959,7 +3959,7 @@ common.resume: ; preds = %147, %118 to label %300 unwind label %148 299: ; preds = %296 - store i8 2, ptr %141, align 8 + store i8 2, ptr %139, align 8 br label %297 300: ; preds = %297 @@ -3970,7 +3970,7 @@ common.resume: ; preds = %147, %118 to label %304 unwind label %148 303: ; preds = %300 - store i8 1, ptr %142, align 1 + store i8 1, ptr %140, align 1 br label %301 304: ; preds = %301 @@ -3978,7 +3978,7 @@ common.resume: ; preds = %147, %118 to label %306 unwind label %148, !range !472 306: ; preds = %304 - store i8 %305, ptr %138, align 1 + store i8 %305, ptr %136, align 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(80) %28, i64 80, i1 false) call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %28) br label %307 diff --git a/bench/cpp-httplib/optimized/httplib.cc.ll b/bench/cpp-httplib/optimized/httplib.cc.ll index c118f385335..bc91481e2df 100644 --- a/bench/cpp-httplib/optimized/httplib.cc.ll +++ b/bench/cpp-httplib/optimized/httplib.cc.ll @@ -82661,15 +82661,15 @@ lpad: ; preds = %_ZNSt6vectorINSt7__ for.end: ; preds = %for.inc, %_ZSt6fill_nIPbmbET_S1_T0_RKT1_.exit %23 = load i8, ptr %_M_has_sol, align 4 - %24 = select i1 %cmp, i8 %23, i8 0 - %__ret.2 = or i8 %__ret.0, %24 - %25 = load ptr, ptr %_M_current, align 8 - %26 = load ptr, ptr %_M_end, align 8 - %cmp.i12.not = icmp eq ptr %25, %26 + %or6 = select i1 %cmp, i8 %23, i8 0 + %__ret.2 = or i8 %or6, %__ret.0 + %24 = load ptr, ptr %_M_current, align 8 + %25 = load ptr, ptr %_M_end, align 8 + %cmp.i12.not = icmp eq ptr %24, %25 br i1 %cmp.i12.not, label %cleanup, label %if.end24 if.end24: ; preds = %for.end - %incdec.ptr.i13 = getelementptr inbounds i8, ptr %25, i64 1 + %incdec.ptr.i13 = getelementptr inbounds i8, ptr %24, i64 1 store ptr %incdec.ptr.i13, ptr %_M_current, align 8 br label %cleanup @@ -82679,12 +82679,12 @@ cleanup: ; preds = %for.end, %if.end24 for.body.i.i.i.i: ; preds = %cleanup, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i ], [ %.pr.i, %cleanup ] %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %27 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null + %26 = load ptr, ptr %second.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %27) #41 + call void @_ZdlPv(ptr noundef nonnull %26) #41 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i @@ -82713,12 +82713,12 @@ while.end: ; preds = %_ZNSt6vectorISt4pai for.body.i.i.i.i.i: ; preds = %while.end, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i ], [ %.pre23, %while.end ] %second.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 8 - %28 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %28, null + %27 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %28) #41 + call void @_ZdlPv(ptr noundef nonnull %27) #41 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i @@ -82732,9 +82732,9 @@ invoke.cont.i.i: ; preds = %_ZSt8_DestroyISt4pa _ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EE5clearEv.exit: ; preds = %while.body, %while.end, %invoke.cont.i.i %__ret.127 = phi i8 [ %__ret.2, %while.end ], [ %__ret.2, %invoke.cont.i.i ], [ %__ret.0, %while.body ] - %29 = phi i8 [ %.pre22, %while.end ], [ %.pre22, %invoke.cont.i.i ], [ 0, %while.body ] + %28 = phi i8 [ %.pre22, %while.end ], [ %.pre22, %invoke.cont.i.i ], [ 0, %while.body ] %cmp27 = icmp eq i8 %__match_mode, 0 - %__ret.3 = select i1 %cmp27, i8 %29, i8 %__ret.127 + %__ret.3 = select i1 %cmp27, i8 %28, i8 %__ret.127 %tobool35 = trunc i8 %__ret.3 to i1 ret i1 %tobool35 } @@ -88242,15 +88242,15 @@ lpad: ; preds = %_ZNSt6vectorINSt7__ for.end: ; preds = %for.inc, %_ZSt6fill_nIPbmbET_S1_T0_RKT1_.exit %23 = load i8, ptr %_M_has_sol, align 4 - %24 = select i1 %cmp, i8 %23, i8 0 - %__ret.2 = or i8 %__ret.0, %24 - %25 = load ptr, ptr %_M_current, align 8 - %26 = load ptr, ptr %_M_end, align 8 - %cmp22.not = icmp eq ptr %25, %26 + %or6 = select i1 %cmp, i8 %23, i8 0 + %__ret.2 = or i8 %or6, %__ret.0 + %24 = load ptr, ptr %_M_current, align 8 + %25 = load ptr, ptr %_M_end, align 8 + %cmp22.not = icmp eq ptr %24, %25 br i1 %cmp22.not, label %cleanup, label %if.end24 if.end24: ; preds = %for.end - %incdec.ptr = getelementptr inbounds i8, ptr %25, i64 1 + %incdec.ptr = getelementptr inbounds i8, ptr %24, i64 1 store ptr %incdec.ptr, ptr %_M_current, align 8 br label %cleanup @@ -88260,12 +88260,12 @@ cleanup: ; preds = %for.end, %if.end24 for.body.i.i.i.i: ; preds = %cleanup, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i ], [ %.pr.i, %cleanup ] %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %27 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null + %26 = load ptr, ptr %second.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %27) #41 + call void @_ZdlPv(ptr noundef nonnull %26) #41 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i @@ -88294,12 +88294,12 @@ while.end: ; preds = %_ZNSt6vectorISt4pai for.body.i.i.i.i.i: ; preds = %while.end, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i.i %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i.i ], [ %.pre21, %while.end ] %second.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 8 - %28 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %28, null + %27 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %28) #41 + call void @_ZdlPv(ptr noundef nonnull %27) #41 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIPKcEESaIS6_EEEEvPT_.exit.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i @@ -88313,9 +88313,9 @@ invoke.cont.i.i: ; preds = %_ZSt8_DestroyISt4pa _ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIPKcEESaIS5_EEESaIS8_EE5clearEv.exit: ; preds = %while.body, %while.end, %invoke.cont.i.i %__ret.125 = phi i8 [ %__ret.2, %while.end ], [ %__ret.2, %invoke.cont.i.i ], [ %__ret.0, %while.body ] - %29 = phi i8 [ %.pre20, %while.end ], [ %.pre20, %invoke.cont.i.i ], [ 0, %while.body ] + %28 = phi i8 [ %.pre20, %while.end ], [ %.pre20, %invoke.cont.i.i ], [ 0, %while.body ] %cmp26 = icmp eq i8 %__match_mode, 0 - %__ret.3 = select i1 %cmp26, i8 %29, i8 %__ret.125 + %__ret.3 = select i1 %cmp26, i8 %28, i8 %__ret.125 %tobool34 = trunc i8 %__ret.3 to i1 ret i1 %tobool34 } diff --git a/bench/curl/optimized/libcurl_la-altsvc.ll b/bench/curl/optimized/libcurl_la-altsvc.ll index 5330e10356c..09373f8b109 100644 --- a/bench/curl/optimized/libcurl_la-altsvc.ll +++ b/bench/curl/optimized/libcurl_la-altsvc.ll @@ -980,8 +980,7 @@ if.then305: ; preds = %if.end300 %expires = getelementptr inbounds i8, ptr %call303, i64 32 store i64 %add307, ptr %expires, align 8 %persist309 = getelementptr inbounds i8, ptr %call303, i64 40 - %frombool = and i8 %persist.0.ph269, 1 - store i8 %frombool, ptr %persist309, align 8 + store i8 %persist.0.ph269, ptr %persist309, align 8 %29 = load ptr, ptr %tail, align 8 %node = getelementptr inbounds i8, ptr %call303, i64 48 call void @Curl_llist_insert_next(ptr noundef nonnull %list, ptr noundef %29, ptr noundef nonnull %call303, ptr noundef nonnull %node) #12 diff --git a/bench/cvc5/optimized/node_algorithm.cpp.ll b/bench/cvc5/optimized/node_algorithm.cpp.ll index cc01a0f8d66..bfa68804ac6 100644 --- a/bench/cvc5/optimized/node_algorithm.cpp.ll +++ b/bench/cvc5/optimized/node_algorithm.cpp.ll @@ -1315,7 +1315,7 @@ invoke.cont54: ; preds = %if.then47 for.cond57: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit177 %incdec.ptr.i178 = getelementptr inbounds i8, ptr %__begin549.sroa.0.0273, i64 8 %cmp.i114.not = icmp eq ptr %incdec.ptr.i178, %add.ptr.i.i113 - br i1 %cmp.i114.not, label %for.end89.loopexit, label %invoke.cont63 + br i1 %cmp.i114.not, label %for.end89, label %invoke.cont63 invoke.cont63: ; preds = %invoke.cont54, %for.cond57 %doesContain.0274 = phi i8 [ %doesContain.2, %for.cond57 ], [ 0, %invoke.cont54 ] @@ -1444,12 +1444,8 @@ lpad71: ; preds = %if.end15.i.i132 call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp61) #20 br label %ehcleanup101 -for.end89.loopexit: ; preds = %for.cond57 - %66 = and i8 %doesContain.2, 1 - br label %for.end89 - -for.end89: ; preds = %for.end89.loopexit, %invoke.cont54 - %doesContain.0.lcssa = phi i8 [ 0, %invoke.cont54 ], [ %66, %for.end89.loopexit ] +for.end89: ; preds = %for.cond57, %invoke.cont54 + %doesContain.0.lcssa = phi i8 [ 0, %invoke.cont54 ], [ %doesContain.2, %for.cond57 ] %call.i179 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt8__detail9_Map_baseIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS4_bESaIS7_ENS_10_Select1stESt8equal_toIS4_ESt4hashIS4_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %contains, ptr noundef nonnull align 8 dereferenceable(8) %cur) to label %invoke.cont91 unwind label %lpad3.loopexit @@ -1479,55 +1475,55 @@ if.then.i.i.i186: ; preds = %cleanup98 br label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit _ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit: ; preds = %cleanup98, %if.then.i.i.i186 - %67 = load ptr, ptr %_M_before_begin.i.i10, align 8 - %tobool.not3.i.i.i.i = icmp eq ptr %67, null + %66 = load ptr, ptr %_M_before_begin.i.i10, align 8 + %tobool.not3.i.i.i.i = icmp eq ptr %66, null br i1 %tobool.not3.i.i.i.i, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i while.body.i.i.i.i: ; preds = %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit, %while.body.i.i.i.i - %__n.addr.04.i.i.i.i = phi ptr [ %68, %while.body.i.i.i.i ], [ %67, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit ] - %68 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 + %__n.addr.04.i.i.i.i = phi ptr [ %67, %while.body.i.i.i.i ], [ %66, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit ] + %67 = load ptr, ptr %__n.addr.04.i.i.i.i, align 8 call void @_ZdlPv(ptr noundef nonnull %__n.addr.04.i.i.i.i) #23 - %tobool.not.i.i.i.i188 = icmp eq ptr %68, null + %tobool.not.i.i.i.i188 = icmp eq ptr %67, null br i1 %tobool.not.i.i.i.i188, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, label %while.body.i.i.i.i, !llvm.loop !25 _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i: ; preds = %while.body.i.i.i.i, %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb0EEESaIS3_EED2Ev.exit - %69 = load ptr, ptr %contains, align 8 - %70 = load i64, ptr %_M_bucket_count.i.i9, align 8 - %mul.i.i.i = shl i64 %70, 3 - call void @llvm.memset.p0.i64(ptr align 8 %69, i8 0, i64 %mul.i.i.i, i1 false) + %68 = load ptr, ptr %contains, align 8 + %69 = load i64, ptr %_M_bucket_count.i.i9, align 8 + %mul.i.i.i = shl i64 %69, 3 + call void @llvm.memset.p0.i64(ptr align 8 %68, i8 0, i64 %mul.i.i.i, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i10, i8 0, i64 16, i1 false) - %71 = load ptr, ptr %contains, align 8 - %cmp.i.i.i.i.i190 = icmp eq ptr %71, %_M_single_bucket.i.i8 + %70 = load ptr, ptr %contains, align 8 + %cmp.i.i.i.i.i190 = icmp eq ptr %70, %_M_single_bucket.i.i8 br i1 %cmp.i.i.i.i.i190, label %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit, label %if.end.i.i.i.i191 if.end.i.i.i.i191: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i - call void @_ZdlPv(ptr noundef %71) #23 + call void @_ZdlPv(ptr noundef %70) #23 br label %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit _ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i, %if.end.i.i.i.i191 - %72 = load ptr, ptr %_M_before_begin.i.i, align 8 - %tobool.not3.i.i.i.i193 = icmp eq ptr %72, null + %71 = load ptr, ptr %_M_before_begin.i.i, align 8 + %tobool.not3.i.i.i.i193 = icmp eq ptr %71, null br i1 %tobool.not3.i.i.i.i193, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i197, label %while.body.i.i.i.i194 while.body.i.i.i.i194: ; preds = %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit, %while.body.i.i.i.i194 - %__n.addr.04.i.i.i.i195 = phi ptr [ %73, %while.body.i.i.i.i194 ], [ %72, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit ] - %73 = load ptr, ptr %__n.addr.04.i.i.i.i195, align 8 + %__n.addr.04.i.i.i.i195 = phi ptr [ %72, %while.body.i.i.i.i194 ], [ %71, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit ] + %72 = load ptr, ptr %__n.addr.04.i.i.i.i195, align 8 call void @_ZdlPv(ptr noundef nonnull %__n.addr.04.i.i.i.i195) #23 - %tobool.not.i.i.i.i196 = icmp eq ptr %73, null + %tobool.not.i.i.i.i196 = icmp eq ptr %72, null br i1 %tobool.not.i.i.i.i196, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i197, label %while.body.i.i.i.i194, !llvm.loop !25 _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i197: ; preds = %while.body.i.i.i.i194, %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit - %74 = load ptr, ptr %visited, align 8 - %75 = load i64, ptr %_M_bucket_count.i.i, align 8 - %mul.i.i.i199 = shl i64 %75, 3 - call void @llvm.memset.p0.i64(ptr align 8 %74, i8 0, i64 %mul.i.i.i199, i1 false) + %73 = load ptr, ptr %visited, align 8 + %74 = load i64, ptr %_M_bucket_count.i.i, align 8 + %mul.i.i.i199 = shl i64 %74, 3 + call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 %mul.i.i.i199, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %_M_before_begin.i.i, i8 0, i64 16, i1 false) - %76 = load ptr, ptr %visited, align 8 - %cmp.i.i.i.i.i201 = icmp eq ptr %76, %_M_single_bucket.i.i + %75 = load ptr, ptr %visited, align 8 + %cmp.i.i.i.i.i201 = icmp eq ptr %75, %_M_single_bucket.i.i br i1 %cmp.i.i.i.i.i201, label %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit203, label %if.end.i.i.i.i202 if.end.i.i.i.i202: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i197 - call void @_ZdlPv(ptr noundef %76) #23 + call void @_ZdlPv(ptr noundef %75) #23 br label %_ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit203 _ZNSt13unordered_mapIN4cvc58internal12NodeTemplateILb0EEEbSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_bEEED2Ev.exit203: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb0EEESt4pairIKS3_bESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i197, %if.end.i.i.i.i202 diff --git a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll index f2120bc25a7..1c4b6d21396 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_cast.cpp.ll @@ -35521,14 +35521,13 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.cond.cleanup.loopexit: ; preds = %for.body - %4 = and i8 %spec.select, 1 - %5 = icmp ne i8 %4, 0 + %4 = icmp ne i8 %spec.select, 0 br label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %entry - %all_converted.0.lcssa = phi i1 [ true, %entry ], [ %5, %for.cond.cleanup.loopexit ] - %6 = load i8, ptr %source, align 8, !tbaa !56 - %cmp23 = icmp eq i8 %6, 2 + %all_converted.0.lcssa = phi i1 [ true, %entry ], [ %4, %for.cond.cleanup.loopexit ] + %5 = load i8, ptr %source, align 8, !tbaa !56 + %cmp23 = icmp eq i8 %5, 2 %validity.i = getelementptr inbounds i8, ptr %source, i64 40 br i1 %cmp23, label %if.then24, label %if.else @@ -35542,25 +35541,25 @@ for.body: ; preds = %for.body, %for.body call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %child_parameters) #30 %call14 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_13BoundCastInfoELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %child_cast_info, i64 noundef %c_idx.055) %cast_data15 = getelementptr inbounds i8, ptr %call14, i64 16 - %7 = load ptr, ptr %cast_data15, align 8, !tbaa !6 + %6 = load ptr, ptr %cast_data15, align 8, !tbaa !6 %call17 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6duckdb6vectorINS_10unique_ptrINS_18FunctionLocalStateESt14default_deleteIS2_ELb1EEELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %local_states, i64 noundef %c_idx.055) - %8 = load ptr, ptr %call17, align 8, !tbaa !6 - store ptr %7, ptr %child_parameters, align 8, !tbaa !6 - %9 = load i8, ptr %strict4.i, align 8, !tbaa !96, !range !97, !noundef !98 - store i8 %9, ptr %strict.i, align 8, !tbaa !96 - %10 = load ptr, ptr %error_message5.i, align 8, !tbaa !92 - store ptr %10, ptr %error_message.i, align 8, !tbaa !92 - store ptr %8, ptr %local_state6.i, align 8, !tbaa !6 + %7 = load ptr, ptr %call17, align 8, !tbaa !6 + store ptr %6, ptr %child_parameters, align 8, !tbaa !6 + %8 = load i8, ptr %strict4.i, align 8, !tbaa !96, !range !97, !noundef !98 + store i8 %8, ptr %strict.i, align 8, !tbaa !96 + %9 = load ptr, ptr %error_message5.i, align 8, !tbaa !92 + store ptr %9, ptr %error_message.i, align 8, !tbaa !92 + store ptr %7, ptr %local_state6.i, align 8, !tbaa !6 %call20 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN6duckdb6vectorINS_13BoundCastInfoELb1EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %child_cast_info, i64 noundef %c_idx.055) - %11 = load ptr, ptr %call20, align 8, !tbaa !135 - %call21 = call noundef zeroext i1 %11(ptr noundef nonnull align 8 dereferenceable(104) %call13, ptr noundef nonnull align 8 dereferenceable(104) %call11, i64 noundef %count, ptr noundef nonnull align 8 dereferenceable(32) %child_parameters) + %10 = load ptr, ptr %call20, align 8, !tbaa !135 + %call21 = call noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(104) %call13, ptr noundef nonnull align 8 dereferenceable(104) %call11, i64 noundef %count, ptr noundef nonnull align 8 dereferenceable(32) %child_parameters) %spec.select = select i1 %call21, i8 %all_converted.056, i8 0 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %child_parameters) #30 %inc = add nuw i64 %c_idx.055, 1 - %12 = load ptr, ptr %_M_finish.i, align 8, !tbaa !184 - %13 = load ptr, ptr %call6, align 8, !tbaa !181 - %sub.ptr.lhs.cast.i = ptrtoint ptr %12 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %13 to i64 + %11 = load ptr, ptr %_M_finish.i, align 8, !tbaa !184 + %12 = load ptr, ptr %call6, align 8, !tbaa !181 + %sub.ptr.lhs.cast.i = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %12 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 56 %cmp = icmp ult i64 %inc, %sub.ptr.div.i @@ -35568,13 +35567,13 @@ for.body: ; preds = %for.body, %for.body if.then24: ; preds = %for.cond.cleanup call void @_ZN6duckdb6Vector13SetVectorTypeENS_10VectorTypeE(ptr noundef nonnull align 8 dereferenceable(104) %result, i8 noundef zeroext 2) - %14 = load ptr, ptr %validity.i, align 8, !tbaa !67 - %tobool.not.i.i = icmp eq ptr %14, null + %13 = load ptr, ptr %validity.i, align 8, !tbaa !67 + %tobool.not.i.i = icmp eq ptr %13, null br i1 %tobool.not.i.i, label %_ZN6duckdb14ConstantVector6IsNullERKNS_6VectorE.exit, label %_ZNK6duckdb21TemplatedValidityMaskImE16RowIsValidUnsafeEm.exit.i.i _ZNK6duckdb21TemplatedValidityMaskImE16RowIsValidUnsafeEm.exit.i.i: ; preds = %if.then24 - %15 = load i64, ptr %14, align 8, !tbaa !68 - %and.i.i.i.i = and i64 %15, 1 + %14 = load i64, ptr %13, align 8, !tbaa !68 + %and.i.i.i.i = and i64 %14, 1 %tobool.i.i.i.i = icmp eq i64 %and.i.i.i.i, 0 br label %_ZN6duckdb14ConstantVector6IsNullERKNS_6VectorE.exit @@ -35586,94 +35585,94 @@ _ZN6duckdb14ConstantVector6IsNullERKNS_6VectorE.exit: ; preds = %_ZNK6duckdb21Te if.else: ; preds = %for.cond.cleanup call void @_ZN6duckdb6Vector7FlattenEm(ptr noundef nonnull align 8 dereferenceable(104) %source, i64 noundef %count) %validity.i49 = getelementptr inbounds i8, ptr %result, i64 40 - %16 = load <2 x ptr>, ptr %validity.i, align 8, !tbaa !6 - store <2 x ptr> %16, ptr %validity.i49, align 8, !tbaa !6 + %15 = load <2 x ptr>, ptr %validity.i, align 8, !tbaa !6 + store <2 x ptr> %15, ptr %validity.i49, align 8, !tbaa !6 %_M_refcount.i.i.i.i = getelementptr inbounds i8, ptr %result, i64 56 %_M_refcount3.i.i.i.i = getelementptr inbounds i8, ptr %source, i64 56 - %17 = load ptr, ptr %_M_refcount3.i.i.i.i, align 8, !tbaa !100 - %18 = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !100 - %cmp.not.i.i.i.i.i = icmp eq ptr %17, %18 + %16 = load ptr, ptr %_M_refcount3.i.i.i.i, align 8, !tbaa !100 + %17 = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !100 + %cmp.not.i.i.i.i.i = icmp eq ptr %16, %17 br i1 %cmp.not.i.i.i.i.i, label %_ZN6duckdb12ValidityMaskaSERKS0_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.else - %cmp3.not.i.i.i.i.i = icmp eq ptr %17, null + %cmp3.not.i.i.i.i.i = icmp eq ptr %16, null br i1 %cmp3.not.i.i.i.i.i, label %if.end.i.i.i.i.i, label %if.then4.i.i.i.i.i if.then4.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i - %_M_use_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 8 - %19 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !70 - %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %19, 0 + %_M_use_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 8 + %18 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !70 + %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %18, 0 br i1 %tobool.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 = %if.then4.i.i.i.i.i - %20 = load i32, ptr %_M_use_count.i.i.i.i.i.i, align 4, !tbaa !101 - %add.i.i.i.i.i.i.i = add nsw i32 %20, 1 + %19 = load i32, ptr %_M_use_count.i.i.i.i.i.i, align 4, !tbaa !101 + %add.i.i.i.i.i.i.i = add nsw i32 %19, 1 store i32 %add.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i, align 4, !tbaa !101 br label %if.end.i.i.i.i.i if.else.i.i.i.i.i.i.i: ; preds = %if.then4.i.i.i.i.i - %21 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i, i32 1 acq_rel, align 4 + %20 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i, i32 1 acq_rel, align 4 %.pr.pre.i.i.i.i.i = load ptr, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !100 br label %if.end.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i, %if.then.i.i.i.i.i - %22 = phi ptr [ %18, %if.then.i.i.i.i.i ], [ %18, %if.then.i.i.i.i.i.i.i ], [ %.pr.pre.i.i.i.i.i, %if.else.i.i.i.i.i.i.i ] - %cmp6.not.i.i.i.i.i = icmp eq ptr %22, null + %21 = phi ptr [ %17, %if.then.i.i.i.i.i ], [ %17, %if.then.i.i.i.i.i.i.i ], [ %.pr.pre.i.i.i.i.i, %if.else.i.i.i.i.i.i.i ] + %cmp6.not.i.i.i.i.i = icmp eq ptr %21, null br i1 %cmp6.not.i.i.i.i.i, label %if.end9.i.i.i.i.i, label %if.then7.i.i.i.i.i if.then7.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i - %_M_use_count.i16.i.i.i.i.i = getelementptr inbounds i8, ptr %22, i64 8 - %23 = load atomic i64, ptr %_M_use_count.i16.i.i.i.i.i acquire, align 8 - %cmp.i.i.i.i.i.i = icmp eq i64 %23, 4294967297 - %24 = trunc i64 %23 to i32 + %_M_use_count.i16.i.i.i.i.i = getelementptr inbounds i8, ptr %21, i64 8 + %22 = load atomic i64, ptr %_M_use_count.i16.i.i.i.i.i acquire, align 8 + %cmp.i.i.i.i.i.i = icmp eq i64 %22, 4294967297 + %23 = trunc i64 %22 to i32 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i store i32 0, ptr %_M_use_count.i16.i.i.i.i.i, align 8, !tbaa !103 - %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %22, i64 12 + %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %21, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i.i.i, align 4, !tbaa !105 - %vtable.i.i.i.i.i.i = load ptr, ptr %22, align 8, !tbaa !17 + %vtable.i.i.i.i.i.i = load ptr, ptr %21, align 8, !tbaa !17 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 16 - %25 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 - call void %25(ptr noundef nonnull align 8 dereferenceable(16) %22) #30 - %vtable3.i.i.i.i.i.i = load ptr, ptr %22, align 8, !tbaa !17 + %24 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 + call void %24(ptr noundef nonnull align 8 dereferenceable(16) %21) #30 + %vtable3.i.i.i.i.i.i = load ptr, ptr %21, align 8, !tbaa !17 %vfn4.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable3.i.i.i.i.i.i, i64 24 - %26 = load ptr, ptr %vfn4.i.i.i.i.i.i, align 8 - call void %26(ptr noundef nonnull align 8 dereferenceable(16) %22) #30 + %25 = load ptr, ptr %vfn4.i.i.i.i.i.i, align 8 + call void %25(ptr noundef nonnull align 8 dereferenceable(16) %21) #30 br label %if.end9.i.i.i.i.i if.end.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i - %27 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !70 - %tobool.i.i.not.i.i.i.i.i.i = icmp eq i8 %27, 0 + %26 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !70 + %tobool.i.i.not.i.i.i.i.i.i = icmp eq i8 %26, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i, label %if.else.i.i19.i.i.i.i.i, label %if.then.i.i17.i.i.i.i.i if.then.i.i17.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i - %add.i.i18.i.i.i.i.i = add nsw i32 %24, -1 + %add.i.i18.i.i.i.i.i = add nsw i32 %23, -1 store i32 %add.i.i18.i.i.i.i.i, ptr %_M_use_count.i16.i.i.i.i.i, align 4, !tbaa !101 br label %invoke.cont.i.i.i.i.i.i if.else.i.i19.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i - %28 = atomicrmw volatile add ptr %_M_use_count.i16.i.i.i.i.i, i32 -1 acq_rel, align 4 + %27 = atomicrmw volatile add ptr %_M_use_count.i16.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %invoke.cont.i.i.i.i.i.i invoke.cont.i.i.i.i.i.i: ; preds = %if.else.i.i19.i.i.i.i.i, %if.then.i.i17.i.i.i.i.i - %retval.0.i.i.i.i.i.i.i = phi i32 [ %24, %if.then.i.i17.i.i.i.i.i ], [ %28, %if.else.i.i19.i.i.i.i.i ] + %retval.0.i.i.i.i.i.i.i = phi i32 [ %23, %if.then.i.i17.i.i.i.i.i ], [ %27, %if.else.i.i19.i.i.i.i.i ] %cmp6.i.i.i.i.i.i = icmp eq i32 %retval.0.i.i.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i.i.i, label %if.then7.i.i.i.i.i.i, label %if.end9.i.i.i.i.i, !prof !106 if.then7.i.i.i.i.i.i: ; preds = %invoke.cont.i.i.i.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) %22) #30 + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #30 br label %if.end9.i.i.i.i.i if.end9.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i.i, %invoke.cont.i.i.i.i.i.i, %if.then.i.i.i.i.i.i, %if.end.i.i.i.i.i - store ptr %17, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !100 + store ptr %16, ptr %_M_refcount.i.i.i.i, align 8, !tbaa !100 br label %_ZN6duckdb12ValidityMaskaSERKS0_.exit _ZN6duckdb12ValidityMaskaSERKS0_.exit: ; preds = %if.end9.i.i.i.i.i, %if.else %target_count.i.i = getelementptr inbounds i8, ptr %source, i64 64 - %29 = load i64, ptr %target_count.i.i, align 8, !tbaa !107 + %28 = load i64, ptr %target_count.i.i, align 8, !tbaa !107 %target_count4.i.i = getelementptr inbounds i8, ptr %result, i64 64 - store i64 %29, ptr %target_count4.i.i, align 8, !tbaa !107 + store i64 %28, ptr %target_count4.i.i, align 8, !tbaa !107 br label %if.end29 if.end29: ; preds = %_ZN6duckdb12ValidityMaskaSERKS0_.exit, %_ZN6duckdb14ConstantVector6IsNullERKNS_6VectorE.exit diff --git a/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll index 8527175e720..8ece39db1dd 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll @@ -12986,17 +12986,15 @@ if.else: ; preds = %if.end84 cleanup123: ; preds = %if.else, %if.end93 %pidx.8 = phi i64 [ %add105, %if.end93 ], [ %add, %if.else ] %matches.0.in = phi i1 [ %18, %if.end93 ], [ %cmp108, %if.else ] - %19 = and i8 %found_match.0279, 1 - %20 = icmp eq i8 %19, 0 - %cmp116.not.not = xor i1 %cmp66, %20 + %19 = icmp eq i8 %found_match.0279, 0 + %cmp116.not.not = xor i1 %cmp66, %19 %brmerge.not = select i1 %cmp116.not.not, i1 %matches.0.in, i1 false %found_match.1 = select i1 %brmerge.not, i8 %frombool121, i8 %found_match.0279 %cmp73 = icmp ult i64 %pidx.8, %plen br i1 %cmp73, label %while.body74, label %cleanup141 while.end126: ; preds = %while.body74 - %21 = and i8 %found_match.0279, 1 - %tobool130.not = icmp eq i8 %21, 0 + %tobool130.not = icmp eq i8 %found_match.0279, 0 br i1 %tobool130.not, label %cleanup141, label %cleanup134 cleanup134: ; preds = %while.end126 @@ -13004,8 +13002,8 @@ cleanup134: ; preds = %while.end126 %inc133 = add i64 %.us-phi266, 1 %cmp257 = icmp ult i64 %inc133, %slen %cmp1258 = icmp ult i64 %inc80, %plen - %22 = select i1 %cmp257, i1 %cmp1258, i1 false - br i1 %22, label %while.body.lr.ph, label %while.cond44.preheader + %20 = select i1 %cmp257, i1 %cmp1258, i1 false + br i1 %20, label %while.body.lr.ph, label %while.cond44.preheader cleanup141: ; preds = %while.end126, %if.end60, %parse_bracket, %sw.default, %if.end28, %sw.bb24, %sw.default.us, %if.end28.us, %sw.bb24.us, %cleanup123, %if.then89, %if.end81, %for.body, %while.end53, %for.cond.preheader, %while.end %retval.4 = phi i1 [ %12, %while.end53 ], [ true, %while.end ], [ false, %for.cond.preheader ], [ %call, %for.body ], [ false, %if.end81 ], [ false, %if.then89 ], [ false, %cleanup123 ], [ false, %sw.bb24.us ], [ false, %if.end28.us ], [ false, %sw.default.us ], [ false, %sw.bb24 ], [ false, %if.end28 ], [ false, %sw.default ], [ false, %parse_bracket ], [ false, %if.end60 ], [ false, %while.end126 ] 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/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/flac/optimized/stream_encoder.c.ll b/bench/flac/optimized/stream_encoder.c.ll index 6b951bb45ef..6a93a204129 100644 --- a/bench/flac/optimized/stream_encoder.c.ll +++ b/bench/flac/optimized/stream_encoder.c.ll @@ -10500,7 +10500,6 @@ for.body: ; preds = %for.body.lr.ph, %if %add.ptr = getelementptr inbounds i64, ptr %abs_residual_partition_sums, i64 %idx.ext %add.ptr3 = getelementptr inbounds i32, ptr %raw_bits_per_partition, i64 %idx.ext %tobool4.not = icmp eq i32 %best_parameters_index.070, 0 - %lnot.ext = zext i1 %tobool4.not to i32 %idxprom = zext i1 %tobool4.not to i64 %arrayidx = getelementptr inbounds [2 x %struct.FLAC__EntropyCodingMethod_PartitionedRiceContents], ptr %partitioned_rice_contents_extra, i64 0, i64 %idxprom %arrayidx.val = load ptr, ptr %arrayidx, align 8 @@ -10600,10 +10599,11 @@ if.end8: ; preds = %if.end56.i %shl = shl nuw i32 1, %partition_order.072 %add9 = add i32 %sum.073, %shl %21 = add i32 %best_residual_bits.069, -1 - %or.cond.not = icmp ult i32 %21, %20 - %best_residual_bits.1 = select i1 %or.cond.not, i32 %best_residual_bits.069, i32 %20 - %best_parameters_index.1 = select i1 %or.cond.not, i32 %best_parameters_index.070, i32 %lnot.ext - %best_partition_order.1 = select i1 %or.cond.not, i32 %best_partition_order.071, i32 %partition_order.072 + %or.cond.not = icmp uge i32 %21, %20 + %best_residual_bits.1 = select i1 %or.cond.not, i32 %20, i32 %best_residual_bits.069 + %lnot.ext = zext i1 %or.cond.not to i32 + %best_parameters_index.1 = xor i32 %best_parameters_index.070, %lnot.ext + %best_partition_order.1 = select i1 %or.cond.not, i32 %partition_order.072, i32 %best_partition_order.071 %dec = add nsw i32 %partition_order.072, -1 %cmp1.not.not = icmp sgt i32 %partition_order.072, %cond br i1 %cmp1.not.not, label %for.body, label %for.end, !llvm.loop !127 diff --git a/bench/freetype/optimized/autofit.c.ll b/bench/freetype/optimized/autofit.c.ll index 9efca78fcc8..c153c940cf0 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 @@ -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/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/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/graphviz/optimized/matrix_ops.c.ll b/bench/graphviz/optimized/matrix_ops.c.ll index 1b94545a309..f0c027d2c20 100644 --- a/bench/graphviz/optimized/matrix_ops.c.ll +++ b/bench/graphviz/optimized/matrix_ops.c.ll @@ -276,7 +276,7 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 %.not7.i245 = icmp eq i32 %1, 0 %88 = zext nneg i32 %.0148307 to i64 %wide.trip.count385 = zext i32 %spec.select to i64 - br label %114 + br label %113 .preheader: ; preds = %82, %vectors_scalar_mult.exit267.loopexit, %.loopexit %.2155413 = phi i32 [ %.2155, %.loopexit ], [ %.2155, %vectors_scalar_mult.exit267.loopexit ], [ %51, %82 ] @@ -300,9 +300,9 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 %wide.trip.count404 = zext nneg i32 %spec.select to i64 br label %.lr.ph330.us.preheader -.lr.ph330.us.preheader: ; preds = %109, %.lr.ph335.split.us.preheader - %indvars.iv406 = phi i64 [ 0, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next407, %109 ] - %indvars.iv399 = phi i64 [ 1, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next400, %109 ] +.lr.ph330.us.preheader: ; preds = %108, %.lr.ph335.split.us.preheader + %indvars.iv406 = phi i64 [ 0, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next407, %108 ] + %indvars.iv399 = phi i64 [ 1, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next400, %108 ] %94 = getelementptr inbounds double, ptr %4, i64 %indvars.iv406 %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1 %95 = trunc nuw nsw i64 %indvars.iv406 to i32 @@ -312,37 +312,36 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 ._crit_edge331.us: ; preds = %.lr.ph330.us %97 = zext i32 %.1152.us to i64 %.not169.us = icmp eq i64 %indvars.iv406, %97 - br i1 %.not169.us, label %109, label %.lr.ph.preheader.i268.us + br i1 %.not169.us, label %108, label %.lr.ph.preheader.i268.us .lr.ph.preheader.i268.us: ; preds = %._crit_edge331.us %98 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv406 %99 = load ptr, ptr %98, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %99, i64 %93, i1 false) - %100 = sext i32 %.1152.us to i64 - %101 = getelementptr inbounds ptr, ptr %3, i64 %100 - %102 = load ptr, ptr %101, align 8 + %100 = getelementptr inbounds ptr, ptr %3, i64 %97 + %101 = load ptr, ptr %100, align 8 br label %.lr.ph.i277.us .lr.ph.i277.us: ; preds = %.lr.ph.i277.us, %.lr.ph.preheader.i268.us %indvars.iv.i278.us = phi i64 [ 0, %.lr.ph.preheader.i268.us ], [ %indvars.iv.next.i279.us, %.lr.ph.i277.us ] - %103 = getelementptr inbounds double, ptr %102, i64 %indvars.iv.i278.us - %104 = load double, ptr %103, align 8 - %105 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.i278.us - store double %104, ptr %105, align 8 + %102 = getelementptr inbounds double, ptr %101, i64 %indvars.iv.i278.us + %103 = load double, ptr %102, align 8 + %104 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.i278.us + store double %103, ptr %104, align 8 %indvars.iv.next.i279.us = add nuw nsw i64 %indvars.iv.i278.us, 1 %exitcond.not.i280.us = icmp eq i64 %indvars.iv.next.i279.us, %wide.trip.count.i269 br i1 %exitcond.not.i280.us, label %copy_vector.exit281.us, label %.lr.ph.i277.us copy_vector.exit281.us: ; preds = %.lr.ph.i277.us - %106 = load ptr, ptr %101, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %106, ptr align 8 %7, i64 %93, i1 false) - %107 = load double, ptr %94, align 8 - %108 = getelementptr inbounds double, ptr %4, i64 %100 - store double %107, ptr %108, align 8 + %105 = load ptr, ptr %100, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %7, i64 %93, i1 false) + %106 = load double, ptr %94, align 8 + %107 = getelementptr inbounds double, ptr %4, i64 %97 + store double %106, ptr %107, align 8 store double %.1150.us, ptr %94, align 8 - br label %109 + br label %108 -109: ; preds = %copy_vector.exit281.us, %._crit_edge331.us +108: ; preds = %copy_vector.exit281.us, %._crit_edge331.us %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1 %exitcond410.not = icmp eq i64 %indvars.iv.next407, %wide.trip.count409 br i1 %exitcond410.not, label %._crit_edge336, label %.lr.ph330.us.preheader @@ -351,72 +350,72 @@ copy_vector.exit281.us: ; preds = %.lr.ph.i277.us %indvars.iv401 = phi i64 [ %indvars.iv399, %.lr.ph330.us.preheader ], [ %indvars.iv.next402, %.lr.ph330.us ] %.0149328.us = phi double [ %96, %.lr.ph330.us.preheader ], [ %.1150.us, %.lr.ph330.us ] %.0151327.us = phi i32 [ %95, %.lr.ph330.us.preheader ], [ %.1152.us, %.lr.ph330.us ] - %110 = getelementptr inbounds double, ptr %4, i64 %indvars.iv401 - %111 = load double, ptr %110, align 8 - %112 = fcmp olt double %.0149328.us, %111 - %113 = trunc nuw nsw i64 %indvars.iv401 to i32 - %.1152.us = select i1 %112, i32 %113, i32 %.0151327.us - %.1150.us = select i1 %112, double %111, double %.0149328.us + %109 = getelementptr inbounds double, ptr %4, i64 %indvars.iv401 + %110 = load double, ptr %109, align 8 + %111 = fcmp olt double %.0149328.us, %110 + %112 = trunc nuw nsw i64 %indvars.iv401 to i32 + %.1152.us = select i1 %111, i32 %112, i32 %.0151327.us + %.1150.us = select i1 %111, double %110, double %.0149328.us %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1 %exitcond405.not = icmp eq i64 %indvars.iv.next402, %wide.trip.count404 br i1 %exitcond405.not, label %._crit_edge331.us, label %.lr.ph330.us -114: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit +113: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit %indvars.iv382 = phi i64 [ %88, %.lr.ph325 ], [ %indvars.iv.next383, %vectors_scalar_mult.exit267.loopexit ] - %115 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv382 - %116 = load ptr, ptr %115, align 8 + %114 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv382 + %115 = load ptr, ptr %114, align 8 br i1 %87, label %.lr.ph319, label %.preheader291 -.preheader291: ; preds = %.lr.ph319, %114 +.preheader291: ; preds = %.lr.ph319, %113 %.not338 = icmp eq i64 %indvars.iv382, 0 br i1 %.not338, label %.lr.ph.i.i255.preheader, label %.lr.ph321 -.lr.ph319: ; preds = %114, %.lr.ph319 - %indvars.iv372 = phi i64 [ %indvars.iv.next373, %.lr.ph319 ], [ 0, %114 ] - %117 = tail call i32 @rand() #18 - %118 = srem i32 %117, 100 - %119 = sitofp i32 %118 to double - %120 = getelementptr inbounds double, ptr %116, i64 %indvars.iv372 - store double %119, ptr %120, align 8 +.lr.ph319: ; preds = %113, %.lr.ph319 + %indvars.iv372 = phi i64 [ %indvars.iv.next373, %.lr.ph319 ], [ 0, %113 ] + %116 = tail call i32 @rand() #18 + %117 = srem i32 %116, 100 + %118 = sitofp i32 %117 to double + %119 = getelementptr inbounds double, ptr %115, i64 %indvars.iv372 + store double %118, ptr %119, align 8 %indvars.iv.next373 = add nuw nsw i64 %indvars.iv372, 1 %exitcond376.not = icmp eq i64 %indvars.iv.next373, %wide.trip.count.i238 br i1 %exitcond376.not, label %.preheader291, label %.lr.ph319 .lr.ph321: ; preds = %.preheader291, %scadd.exit251 %indvars.iv377 = phi i64 [ %indvars.iv.next378, %scadd.exit251 ], [ 0, %.preheader291 ] - %121 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv377 - %122 = load ptr, ptr %121, align 8 + %120 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv377 + %121 = load ptr, ptr %120, align 8 br i1 %87, label %.lr.ph.i239, label %vectors_inner_product.exit244 .lr.ph.i239: ; preds = %.lr.ph321, %.lr.ph.i239 %indvars.iv.i240 = phi i64 [ %indvars.iv.next.i242, %.lr.ph.i239 ], [ 0, %.lr.ph321 ] - %.010.i241 = phi double [ %127, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] - %123 = getelementptr inbounds double, ptr %122, i64 %indvars.iv.i240 - %124 = load double, ptr %123, align 8 - %125 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i240 - %126 = load double, ptr %125, align 8 - %127 = tail call double @llvm.fmuladd.f64(double %124, double %126, double %.010.i241) + %.010.i241 = phi double [ %126, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] + %122 = getelementptr inbounds double, ptr %121, i64 %indvars.iv.i240 + %123 = load double, ptr %122, align 8 + %124 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i240 + %125 = load double, ptr %124, align 8 + %126 = tail call double @llvm.fmuladd.f64(double %123, double %125, double %.010.i241) %indvars.iv.next.i242 = add nuw nsw i64 %indvars.iv.i240, 1 %exitcond.not.i243 = icmp eq i64 %indvars.iv.next.i242, %wide.trip.count.i238 br i1 %exitcond.not.i243, label %vectors_inner_product.exit244, label %.lr.ph.i239 vectors_inner_product.exit244: ; preds = %.lr.ph.i239, %.lr.ph321 - %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %127, %.lr.ph.i239 ] - %128 = fneg double %.0.lcssa.i236 + %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %126, %.lr.ph.i239 ] + %127 = fneg double %.0.lcssa.i236 br i1 %.not7.i245, label %scadd.exit251, label %.lr.ph.i246 .lr.ph.i246: ; preds = %vectors_inner_product.exit244, %.lr.ph.i246 - %.010.i247 = phi i32 [ %134, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] - %.059.i248 = phi ptr [ %129, %.lr.ph.i246 ], [ %122, %vectors_inner_product.exit244 ] - %.068.i249 = phi ptr [ %131, %.lr.ph.i246 ], [ %116, %vectors_inner_product.exit244 ] - %129 = getelementptr inbounds i8, ptr %.059.i248, i64 8 - %130 = load double, ptr %.059.i248, align 8 - %131 = getelementptr inbounds i8, ptr %.068.i249, i64 8 - %132 = load double, ptr %.068.i249, align 8 - %133 = tail call double @llvm.fmuladd.f64(double %128, double %130, double %132) - store double %133, ptr %.068.i249, align 8 - %134 = add nsw i32 %.010.i247, -1 - %.not.i250 = icmp eq i32 %134, 0 + %.010.i247 = phi i32 [ %133, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] + %.059.i248 = phi ptr [ %128, %.lr.ph.i246 ], [ %121, %vectors_inner_product.exit244 ] + %.068.i249 = phi ptr [ %130, %.lr.ph.i246 ], [ %115, %vectors_inner_product.exit244 ] + %128 = getelementptr inbounds i8, ptr %.059.i248, i64 8 + %129 = load double, ptr %.059.i248, align 8 + %130 = getelementptr inbounds i8, ptr %.068.i249, i64 8 + %131 = load double, ptr %.068.i249, align 8 + %132 = tail call double @llvm.fmuladd.f64(double %127, double %129, double %131) + store double %132, ptr %.068.i249, align 8 + %133 = add nsw i32 %.010.i247, -1 + %.not.i250 = icmp eq i32 %133, 0 br i1 %.not.i250, label %scadd.exit251, label %.lr.ph.i246 scadd.exit251: ; preds = %.lr.ph.i246, %vectors_inner_product.exit244 @@ -429,46 +428,46 @@ scadd.exit251: ; preds = %.lr.ph.i246, %vecto .lr.ph.i.i255: ; preds = %.lr.ph.i.i255.preheader, %.lr.ph.i.i255 %indvars.iv.i.i256 = phi i64 [ %indvars.iv.next.i.i258, %.lr.ph.i.i255 ], [ 0, %.lr.ph.i.i255.preheader ] - %.010.i.i257 = phi double [ %137, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] - %135 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i.i256 - %136 = load double, ptr %135, align 8 - %137 = tail call double @llvm.fmuladd.f64(double %136, double %136, double %.010.i.i257) + %.010.i.i257 = phi double [ %136, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] + %134 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i.i256 + %135 = load double, ptr %134, align 8 + %136 = tail call double @llvm.fmuladd.f64(double %135, double %135, double %.010.i.i257) %indvars.iv.next.i.i258 = add nuw nsw i64 %indvars.iv.i.i256, 1 %exitcond.not.i.i259 = icmp eq i64 %indvars.iv.next.i.i258, %wide.trip.count.i238 br i1 %exitcond.not.i.i259, label %norm.exit260, label %.lr.ph.i.i255 norm.exit260: ; preds = %.lr.ph.i.i255 - %138 = tail call double @sqrt(double noundef %137) #18 - %139 = fdiv double 1.000000e+00, %138 + %137 = tail call double @sqrt(double noundef %136) #18 + %138 = fdiv double 1.000000e+00, %137 br label %.lr.ph.i263 .lr.ph.i263: ; preds = %.lr.ph.i263, %norm.exit260 %indvars.iv.i264 = phi i64 [ 0, %norm.exit260 ], [ %indvars.iv.next.i265, %.lr.ph.i263 ] - %140 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i264 - %141 = load double, ptr %140, align 8 - %142 = fmul double %139, %141 - store double %142, ptr %140, align 8 + %139 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i264 + %140 = load double, ptr %139, align 8 + %141 = fmul double %138, %140 + store double %141, ptr %139, align 8 %indvars.iv.next.i265 = add nuw nsw i64 %indvars.iv.i264, 1 %exitcond.not.i266 = icmp eq i64 %indvars.iv.next.i265, %wide.trip.count.i238 br i1 %exitcond.not.i266, label %vectors_scalar_mult.exit267.loopexit, label %.lr.ph.i263 vectors_scalar_mult.exit267.loopexit: ; preds = %.lr.ph.i263 - %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv382 - store double 0.000000e+00, ptr %143, align 8 + %142 = getelementptr inbounds double, ptr %4, i64 %indvars.iv382 + store double 0.000000e+00, ptr %142, align 8 %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1 %exitcond386.not = icmp eq i64 %indvars.iv.next383, %wide.trip.count385 - br i1 %exitcond386.not, label %.preheader, label %114 + br i1 %exitcond386.not, label %.preheader, label %113 .lr.ph330: ; preds = %.lr.ph335.split.preheader, %.lr.ph330 %indvars.iv389 = phi i64 [ 1, %.lr.ph335.split.preheader ], [ %indvars.iv.next390, %.lr.ph330 ] %.0149328 = phi double [ %92, %.lr.ph335.split.preheader ], [ %.1150, %.lr.ph330 ] %.0151327 = phi i32 [ 0, %.lr.ph335.split.preheader ], [ %.1152, %.lr.ph330 ] - %144 = getelementptr inbounds double, ptr %4, i64 %indvars.iv389 - %145 = load double, ptr %144, align 8 - %146 = fcmp olt double %.0149328, %145 - %147 = trunc nuw nsw i64 %indvars.iv389 to i32 - %.1152 = select i1 %146, i32 %147, i32 %.0151327 - %.1150 = select i1 %146, double %145, double %.0149328 + %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv389 + %144 = load double, ptr %143, align 8 + %145 = fcmp olt double %.0149328, %144 + %146 = trunc nuw nsw i64 %indvars.iv389 to i32 + %.1152 = select i1 %145, i32 %146, i32 %.0151327 + %.1150 = select i1 %145, double %144, double %.0149328 %indvars.iv.next390 = add nuw nsw i64 %indvars.iv389, 1 %exitcond393.not = icmp eq i64 %indvars.iv.next390, %wide.trip.count392 br i1 %exitcond393.not, label %._crit_edge331, label %.lr.ph330 @@ -478,17 +477,17 @@ vectors_scalar_mult.exit267.loopexit: ; preds = %.lr.ph.i263 br i1 %.not169, label %._crit_edge336, label %copy_vector.exit274.thread copy_vector.exit274.thread: ; preds = %._crit_edge331 - %148 = sext i32 %.1152 to i64 - %149 = getelementptr inbounds double, ptr %4, i64 %148 - store double %92, ptr %149, align 8 + %147 = zext i32 %.1152 to i64 + %148 = getelementptr inbounds double, ptr %4, i64 %147 + store double %92, ptr %148, align 8 store double %.1150, ptr %4, align 8 br label %._crit_edge336 -._crit_edge336: ; preds = %109, %._crit_edge331, %copy_vector.exit274.thread, %.preheader +._crit_edge336: ; preds = %108, %._crit_edge331, %copy_vector.exit274.thread, %.preheader tail call void @free(ptr noundef %7) #18 tail call void @free(ptr noundef %8) #18 - %150 = icmp sle i32 %.2155413, %9 - ret i1 %150 + %149 = icmp sle i32 %.2155413, %9 + ret i1 %149 } ; Function Attrs: nofree nounwind uwtable diff --git a/bench/gromacs/optimized/gmx_mindist.cpp.ll b/bench/gromacs/optimized/gmx_mindist.cpp.ll index 57ff7e560a9..1a36b6e55bb 100644 --- a/bench/gromacs/optimized/gmx_mindist.cpp.ll +++ b/bench/gromacs/optimized/gmx_mindist.cpp.ll @@ -4114,21 +4114,22 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S .lr.ph108: ; preds = %.preheader %25 = getelementptr inbounds i8, ptr %19, i64 4 %26 = getelementptr inbounds i8, ptr %19, i64 8 - %wide.trip.count185 = zext nneg i32 %. to i64 + %wide.trip.count186 = zext nneg i32 %. to i64 + %wide.trip.count181 = zext i32 %5 to i64 br i1 %1, label %.lr.ph108.split.us, label %.lr.ph108.split .lr.ph108.split.us: ; preds = %.lr.ph108 br i1 %9, label %.lr.ph108.split.us.split.us, label %.lr.ph108.split.us.split .lr.ph108.split.us.split.us: ; preds = %.lr.ph108.split.us, %.thread - %indvars.iv182 = phi i64 [ %indvars.iv.next183, %.thread ], [ 0, %.lr.ph108.split.us ] - %.073107.us.us = phi float [ %.174.lcssa.us.us192197, %.thread ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] - %.075106.us.us = phi float [ %.176.lcssa.us.us191198, %.thread ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] + %indvars.iv183 = phi i64 [ %indvars.iv.next184, %.thread ], [ 0, %.lr.ph108.split.us ] + %.073107.us.us = phi float [ %.174.lcssa.us.us193198, %.thread ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] + %.075106.us.us = phi float [ %.176.lcssa.us.us192199, %.thread ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] %.182104.us.us = phi i32 [ %spec.select.us.us, %.thread ], [ 0, %.lr.ph108.split.us ] - %27 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv182 + %27 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv183 %28 = load i32, ptr %27, align 4 - %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %29 = trunc nuw nsw i64 %indvars.iv.next183 to i32 + %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1 + %29 = trunc nuw nsw i64 %indvars.iv.next184 to i32 %spec.select.us.us = select i1 %.not, i32 %29, i32 %.182104.us.us %30 = icmp slt i32 %spec.select.us.us, %5 br i1 %30, label %.lr.ph.us.us, label %.thread @@ -4154,24 +4155,24 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S br label %.thread .thread: ; preds = %.lr.ph108.split.us.split.us, %33, %37, %36 - %.176.lcssa.us.us191198 = phi float [ %.378.us.us.us, %37 ], [ %.378.us.us.us, %36 ], [ %.378.us.us.us, %33 ], [ %.075106.us.us, %.lr.ph108.split.us.split.us ] - %.174.lcssa.us.us192197 = phi float [ %.3.us.us.us, %37 ], [ %.3.us.us.us, %36 ], [ %.3.us.us.us, %33 ], [ %.073107.us.us, %.lr.ph108.split.us.split.us ] - %exitcond186.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count185 - br i1 %exitcond186.not, label %._crit_edge109, label %.lr.ph108.split.us.split.us, !llvm.loop !36 + %.176.lcssa.us.us192199 = phi float [ %.378.us.us.us, %37 ], [ %.378.us.us.us, %36 ], [ %.378.us.us.us, %33 ], [ %.075106.us.us, %.lr.ph108.split.us.split.us ] + %.174.lcssa.us.us193198 = phi float [ %.3.us.us.us, %37 ], [ %.3.us.us.us, %36 ], [ %.3.us.us.us, %33 ], [ %.073107.us.us, %.lr.ph108.split.us.split.us ] + %exitcond187.not = icmp eq i64 %indvars.iv.next184, %wide.trip.count186 + br i1 %exitcond187.not, label %._crit_edge109, label %.lr.ph108.split.us.split.us, !llvm.loop !36 .lr.ph.us.us: ; preds = %.lr.ph108.split.us.split.us %40 = sext i32 %28 to i64 %41 = getelementptr inbounds [3 x float], ptr %4, i64 %40 - %42 = sext i32 %spec.select.us.us to i64 + %42 = zext nneg i32 %spec.select.us.us to i64 br label %43 43: ; preds = %66, %.lr.ph.us.us - %indvars.iv177 = phi i64 [ %indvars.iv.next178, %66 ], [ %42, %.lr.ph.us.us ] + %indvars.iv178 = phi i64 [ %indvars.iv.next179, %66 ], [ %42, %.lr.ph.us.us ] %.097.us.us.us = phi i32 [ %.1.us.us.us, %66 ], [ 0, %.lr.ph.us.us ] %.07096.us.us.us = phi i32 [ %.171.us.us.us, %66 ], [ 0, %.lr.ph.us.us ] %.17494.us.us.us = phi float [ %.3.us.us.us, %66 ], [ %.073107.us.us, %.lr.ph.us.us ] %.17693.us.us.us = phi float [ %.378.us.us.us, %66 ], [ %.075106.us.us, %.lr.ph.us.us ] - %44 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv177 + %44 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv178 %45 = load i32, ptr %44, align 4 %.not91.us.us.us = icmp eq i32 %45, %28 br i1 %.not91.us.us.us, label %66, label %46 @@ -4222,20 +4223,19 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us.us.us = phi float [ %.2.us.us.us, %62 ], [ %.2.us.us.us, %64 ], [ %.17494.us.us.us, %43 ] %.171.us.us.us = phi i32 [ %63, %62 ], [ %.07096.us.us.us, %64 ], [ %.07096.us.us.us, %43 ] %.1.us.us.us = phi i32 [ %.097.us.us.us, %62 ], [ %65, %64 ], [ %.097.us.us.us, %43 ] - %indvars.iv.next178 = add nsw i64 %indvars.iv177, 1 - %lftr.wideiv180 = trunc i64 %indvars.iv.next178 to i32 - %exitcond181.not = icmp eq i32 %5, %lftr.wideiv180 - br i1 %exitcond181.not, label %._crit_edge.split.us.us.us, label %43, !llvm.loop !37 + %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 + %exitcond182.not = icmp eq i64 %indvars.iv.next179, %wide.trip.count181 + br i1 %exitcond182.not, label %._crit_edge.split.us.us.us, label %43, !llvm.loop !37 .lr.ph108.split.us.split: ; preds = %.lr.ph108.split.us, %._crit_edge.split.us.us - %indvars.iv172 = phi i64 [ %indvars.iv.next173, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] + %indvars.iv173 = phi i64 [ %indvars.iv.next174, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] %.073107.us = phi float [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] %.075106.us = phi float [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] %.182104.us = phi i32 [ %spec.select.us, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] - %67 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv172 + %67 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv173 %68 = load i32, ptr %67, align 4 - %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 - %69 = trunc nuw nsw i64 %indvars.iv.next173 to i32 + %indvars.iv.next174 = add nuw nsw i64 %indvars.iv173, 1 + %69 = trunc nuw nsw i64 %indvars.iv.next174 to i32 %spec.select.us = select i1 %.not, i32 %69, i32 %.182104.us %70 = icmp slt i32 %spec.select.us, %5 br i1 %70, label %.lr.ph.us, label %._crit_edge.split.us.us @@ -4251,13 +4251,13 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %73 = load i32, ptr %13, align 4 %74 = add nsw i32 %73, %.0.lcssa.us store i32 %74, ptr %13, align 4 - %exitcond176.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count185 - br i1 %exitcond176.not, label %._crit_edge109, label %.lr.ph108.split.us.split, !llvm.loop !36 + %exitcond177.not = icmp eq i64 %indvars.iv.next174, %wide.trip.count186 + br i1 %exitcond177.not, label %._crit_edge109, label %.lr.ph108.split.us.split, !llvm.loop !36 .lr.ph.us: ; preds = %.lr.ph108.split.us.split %75 = sext i32 %68 to i64 %76 = getelementptr inbounds [3 x float], ptr %4, i64 %75 - %77 = sext i32 %spec.select.us to i64 + %77 = zext nneg i32 %spec.select.us to i64 br label %78 78: ; preds = %101, %.lr.ph.us @@ -4317,27 +4317,25 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us.us = phi float [ %.2.us.us, %97 ], [ %.2.us.us, %99 ], [ %.17494.us.us, %78 ] %.171.us.us = phi i32 [ %98, %97 ], [ %.07096.us.us, %99 ], [ %.07096.us.us, %78 ] %.1.us.us = phi i32 [ %.097.us.us, %97 ], [ %100, %99 ], [ %.097.us.us, %78 ] - %indvars.iv.next169 = add nsw i64 %indvars.iv168, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next169 to i32 - %exitcond171.not = icmp eq i32 %5, %lftr.wideiv - br i1 %exitcond171.not, label %._crit_edge.split.us.us, label %78, !llvm.loop !37 + %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1 + %exitcond172.not = icmp eq i64 %indvars.iv.next169, %wide.trip.count181 + br i1 %exitcond172.not, label %._crit_edge.split.us.us, label %78, !llvm.loop !37 .lr.ph108.split: ; preds = %.lr.ph108 - %wide.trip.count161 = sext i32 %5 to i64 br i1 %9, label %.lr.ph108.split.split.us, label %.lr.ph108.split.split -.lr.ph108.split.split.us: ; preds = %.lr.ph108.split, %.thread208 - %indvars.iv163 = phi i64 [ %indvars.iv.next164, %.thread208 ], [ 0, %.lr.ph108.split ] - %.073107.us121 = phi float [ %.174.lcssa.us127206212, %.thread208 ], [ 0xC26D1A94A0000000, %.lr.ph108.split ] - %.075106.us122 = phi float [ %.176.lcssa.us126205213, %.thread208 ], [ 0x426D1A94A0000000, %.lr.ph108.split ] - %.182104.us124 = phi i32 [ %spec.select.us125, %.thread208 ], [ 0, %.lr.ph108.split ] +.lr.ph108.split.split.us: ; preds = %.lr.ph108.split, %.thread209 + %indvars.iv163 = phi i64 [ %indvars.iv.next164, %.thread209 ], [ 0, %.lr.ph108.split ] + %.073107.us121 = phi float [ %.174.lcssa.us127207213, %.thread209 ], [ 0xC26D1A94A0000000, %.lr.ph108.split ] + %.075106.us122 = phi float [ %.176.lcssa.us126206214, %.thread209 ], [ 0x426D1A94A0000000, %.lr.ph108.split ] + %.182104.us124 = phi i32 [ %spec.select.us125, %.thread209 ], [ 0, %.lr.ph108.split ] %102 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv163 %103 = load i32, ptr %102, align 4 %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 %104 = trunc nuw nsw i64 %indvars.iv.next164 to i32 %spec.select.us125 = select i1 %.not, i32 %104, i32 %.182104.us124 %105 = icmp slt i32 %spec.select.us125, %5 - br i1 %105, label %.lr.ph.us130, label %.thread208 + br i1 %105, label %.lr.ph.us130, label %.thread209 ._crit_edge.split.us: ; preds = %146 %106 = icmp sgt i32 %.171.us, 0 @@ -4348,21 +4346,21 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %109 = load i32, ptr %12, align 4 %110 = add nsw i32 %109, 1 store i32 %110, ptr %12, align 4 - br i1 %107, label %112, label %.thread208 + br i1 %107, label %112, label %.thread209 111: ; preds = %._crit_edge.split.us - br i1 %107, label %112, label %.thread208 + br i1 %107, label %112, label %.thread209 112: ; preds = %108, %111 %113 = load i32, ptr %13, align 4 %114 = add nsw i32 %113, 1 store i32 %114, ptr %13, align 4 - br label %.thread208 + br label %.thread209 -.thread208: ; preds = %.lr.ph108.split.split.us, %108, %112, %111 - %.176.lcssa.us126205213 = phi float [ %.378.us, %112 ], [ %.378.us, %111 ], [ %.378.us, %108 ], [ %.075106.us122, %.lr.ph108.split.split.us ] - %.174.lcssa.us127206212 = phi float [ %.3.us, %112 ], [ %.3.us, %111 ], [ %.3.us, %108 ], [ %.073107.us121, %.lr.ph108.split.split.us ] - %exitcond167.not = icmp eq i64 %indvars.iv.next164, %wide.trip.count185 +.thread209: ; preds = %.lr.ph108.split.split.us, %108, %112, %111 + %.176.lcssa.us126206214 = phi float [ %.378.us, %112 ], [ %.378.us, %111 ], [ %.378.us, %108 ], [ %.075106.us122, %.lr.ph108.split.split.us ] + %.174.lcssa.us127207213 = phi float [ %.3.us, %112 ], [ %.3.us, %111 ], [ %.3.us, %108 ], [ %.073107.us121, %.lr.ph108.split.split.us ] + %exitcond167.not = icmp eq i64 %indvars.iv.next164, %wide.trip.count186 br i1 %exitcond167.not, label %._crit_edge109, label %.lr.ph108.split.split.us, !llvm.loop !36 115: ; preds = %.lr.ph.us130, %146 @@ -4429,8 +4427,8 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us = phi float [ %.2.us, %142 ], [ %.2.us, %144 ], [ %.17494.us, %115 ] %.171.us = phi i32 [ %143, %142 ], [ %.07096.us, %144 ], [ %.07096.us, %115 ] %.1.us = phi i32 [ %.097.us, %142 ], [ %145, %144 ], [ %.097.us, %115 ] - %indvars.iv.next159 = add nsw i64 %indvars.iv158, 1 - %exitcond162.not = icmp eq i64 %indvars.iv.next159, %wide.trip.count161 + %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 1 + %exitcond162.not = icmp eq i64 %indvars.iv.next159, %wide.trip.count181 br i1 %exitcond162.not, label %._crit_edge.split.us, label %115, !llvm.loop !37 .lr.ph.us130: ; preds = %.lr.ph108.split.split.us @@ -4438,7 +4436,7 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %148 = getelementptr inbounds [3 x float], ptr %4, i64 %147 %149 = getelementptr inbounds i8, ptr %148, i64 4 %150 = getelementptr inbounds i8, ptr %148, i64 8 - %151 = sext i32 %spec.select.us125 to i64 + %151 = zext nneg i32 %spec.select.us125 to i64 br label %115 152: ; preds = %23 @@ -4463,7 +4461,7 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %158 = getelementptr inbounds [3 x float], ptr %4, i64 %157 %159 = getelementptr inbounds i8, ptr %158, i64 4 %160 = getelementptr inbounds i8, ptr %158, i64 8 - %161 = sext i32 %spec.select to i64 + %161 = zext nneg i32 %spec.select to i64 br label %162 162: ; preds = %.lr.ph, %193 @@ -4530,8 +4528,8 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3 = phi float [ %.2, %189 ], [ %.2, %191 ], [ %.17494, %162 ] %.171 = phi i32 [ %190, %189 ], [ %.07096, %191 ], [ %.07096, %162 ] %.1 = phi i32 [ %.097, %189 ], [ %192, %191 ], [ %.097, %162 ] - %indvars.iv.next = add nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count161 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count181 br i1 %exitcond.not, label %._crit_edge.split, label %162, !llvm.loop !37 ._crit_edge.split: ; preds = %193, %.lr.ph108.split.split @@ -4545,12 +4543,12 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %196 = load i32, ptr %13, align 4 %197 = add nsw i32 %196, %.0.lcssa store i32 %197, ptr %13, align 4 - %exitcond157.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count185 + %exitcond157.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count186 br i1 %exitcond157.not, label %._crit_edge109, label %.lr.ph108.split.split, !llvm.loop !36 -._crit_edge109: ; preds = %._crit_edge.split, %.thread208, %._crit_edge.split.us.us, %.thread, %.preheader - %.075.lcssa = phi float [ 0x426D1A94A0000000, %.preheader ], [ %.176.lcssa.us.us191198, %.thread ], [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ %.176.lcssa.us126205213, %.thread208 ], [ %.176.lcssa, %._crit_edge.split ] - %.073.lcssa = phi float [ 0xC26D1A94A0000000, %.preheader ], [ %.174.lcssa.us.us192197, %.thread ], [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ %.174.lcssa.us127206212, %.thread208 ], [ %.174.lcssa, %._crit_edge.split ] +._crit_edge109: ; preds = %._crit_edge.split, %.thread209, %._crit_edge.split.us.us, %.thread, %.preheader + %.075.lcssa = phi float [ 0x426D1A94A0000000, %.preheader ], [ %.176.lcssa.us.us192199, %.thread ], [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ %.176.lcssa.us126206214, %.thread209 ], [ %.176.lcssa, %._crit_edge.split ] + %.073.lcssa = phi float [ 0xC26D1A94A0000000, %.preheader ], [ %.174.lcssa.us.us193198, %.thread ], [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ %.174.lcssa.us127207213, %.thread209 ], [ %.174.lcssa, %._crit_edge.split ] %198 = call noundef float @sqrtf(float noundef %.075.lcssa) #19 store float %198, ptr %10, align 4 %199 = call noundef float @sqrtf(float noundef %.073.lcssa) #19 diff --git a/bench/gromacs/optimized/libxdrf.cpp.ll b/bench/gromacs/optimized/libxdrf.cpp.ll index ca1fe603bb4..4cf20dec738 100644 --- a/bench/gromacs/optimized/libxdrf.cpp.ll +++ b/bench/gromacs/optimized/libxdrf.cpp.ll @@ -264,7 +264,7 @@ define noundef i32 @_Z11xdr3dfcoordP3XDRPfPiS1_i(ptr noundef %0, ptr noundef %1, %136 = call i32 @llvm.abs.i32(i32 %135, i1 true) %137 = add nuw nsw i32 %134, %136 %138 = icmp ugt ptr %.0386602, %1 - %139 = call i32 @llvm.smin.i32(i32 %137, i32 %.0419601) + %139 = call i32 @llvm.umin.i32(i32 %137, i32 %.0419601) %.1420 = select i1 %138, i32 %139, i32 %.0419601 %140 = icmp ult ptr %129, %67 br i1 %140, label %70, label %._crit_edge, !llvm.loop !5 @@ -2532,7 +2532,7 @@ _ZL25xtc_get_next_frame_numberP8_IO_FILEP3XDRi.exit: ; preds = %22 %.035..0 = select i1 %34, i64 %.035, i64 %.0 %.0..033 = select i1 %34, i64 %.0, i64 %.033 %35 = add nuw nsw i64 %.035..0, %.0..033 - %36 = lshr i64 %35, 1 + %36 = lshr exact i64 %35, 1 %37 = and i64 %36, 9223372036854775804 %38 = call noundef i32 @_Z9gmx_fseekP8_IO_FILEli(ptr noundef %1, i64 noundef %37, i32 noundef 0) %.not45 = icmp eq i32 %38, 0 @@ -3175,6 +3175,9 @@ declare i32 @llvm.smax.i32(i32, i32) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #15 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #15 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index 7172eefc7ce..fa4da1ca295 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -205012,11 +205012,11 @@ if.end.i8: ; preds = %if.end9.i.i.i.i %idx.ext.i.i.i.i.i10.i.i.i.i.i.i = and i64 %agg.tmp.sroa.4.0.copyload, 4294967295 %add.ptr.i.i.i.i.i11.i.i.i.i.i.i = getelementptr inbounds %"struct.OT::HBGlyphID16", ptr %agg.tmp.sroa.3.0.copyload, i64 %idx.ext.i.i.i.i.i10.i.i.i.i.i.i %cmp.not.i.i.i90.i.not = icmp eq i32 %agg.tmp6.sroa.4.sroa.0.0.extract.trunc, 0 - br i1 %cmp.not.i.i.i90.i.not, label %if.end29.i, label %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" + br i1 %cmp.not.i.i.i90.i.not, label %for.end.i, label %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" "_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i": ; preds = %if.end.i8, %if.end9.i %unsorted.099.i = phi i1 [ %unsorted.1.i, %if.end9.i ], [ false, %if.end.i8 ] - %last.097.i = phi i32 [ %.pre105.i, %if.end9.i ], [ -2, %if.end.i8 ] + %last.097.i = phi i32 [ %.pre103.i, %if.end9.i ], [ -2, %if.end.i8 ] %num_ranges.096.i = phi i32 [ %spec.select9.i, %if.end9.i ], [ 0, %if.end.i8 ] %__begin0.sroa.14.095.i = phi i32 [ %__begin0.sroa.14.1.i, %if.end9.i ], [ %agg.tmp6.sroa.7.sroa.0.0.extract.trunc, %if.end.i8 ] %__begin0.sroa.11.094.i = phi ptr [ %__begin0.sroa.11.1.i, %if.end9.i ], [ %agg.tmp.sroa.3.0.copyload, %if.end.i8 ] @@ -205042,18 +205042,18 @@ for.body.i: ; preds = %"_ZNK13hb_map_iter_ %12 = load i16, ptr %retval.0.i.i.i.i.i.i.i, align 1 %cmp.not.i = icmp eq i32 %last.097.i, -2 %.pre.i = tail call i16 @llvm.bswap.i16(i16 %12) - %.pre105.i = zext i16 %.pre.i to i32 + %.pre103.i = zext i16 %.pre.i to i32 br i1 %cmp.not.i, label %if.end9.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %11 - %cmp7.i = icmp ugt i32 %last.097.i, %.pre105.i + %cmp7.i = icmp ugt i32 %last.097.i, %.pre103.i %spec.select.i = select i1 %cmp7.i, i1 true, i1 %unsorted.099.i br label %if.end9.i if.end9.i: ; preds = %land.lhs.true.i, %11 %unsorted.1.i = phi i1 [ %spec.select.i, %land.lhs.true.i ], [ %unsorted.099.i, %11 ] %add.i = add nsw i32 %last.097.i, 1 - %cmp11.not.i = icmp ne i32 %add.i, %.pre105.i + %cmp11.not.i = icmp ne i32 %add.i, %.pre103.i %inc.i = zext i1 %cmp11.not.i to i32 %spec.select9.i = add i32 %num_ranges.096.i, %inc.i %__begin0.sroa.0.1.idx.i = select i1 %tobool.not.i.i.i.i.i.i.not.i, i64 0, i64 2 @@ -205071,9 +205071,9 @@ for.end.loopexit.i: ; preds = %if.end9.i, %"_ZNK13 %num_ranges.0.lcssa.ph.i = phi i32 [ %num_ranges.096.i, %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" ], [ %spec.select9.i, %if.end9.i ] %unsorted.0.lcssa.ph.i = phi i1 [ %unsorted.099.i, %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" ], [ %unsorted.1.i, %if.end9.i ] %14 = mul i32 %num_ranges.0.lcssa.ph.i, 3 - br label %if.end29.i + br label %for.end.i -if.end29.i: ; preds = %for.end.loopexit.i, %if.end.i8 +for.end.i: ; preds = %for.end.loopexit.i, %if.end.i8 %num_ranges.0.lcssa.i = phi i32 [ 0, %if.end.i8 ], [ %14, %for.end.loopexit.i ] %unsorted.0.lcssa.i = phi i1 [ false, %if.end.i8 ], [ %unsorted.0.lcssa.ph.i, %for.end.loopexit.i ] %cmp22.i = icmp ugt i32 %.sroa.speculated.i.i.i.i.i.i.i, %num_ranges.0.lcssa.i @@ -205084,7 +205084,7 @@ if.end29.i: ; preds = %for.end.loopexit.i, %tobool.i.i.not.i.i.i = icmp eq i32 %15, 0 br i1 %.not.i, label %sw.bb36.i, label %sw.bb.i -sw.bb.i: ; preds = %if.end29.i +sw.bb.i: ; preds = %for.end.i br i1 %tobool.i.i.not.i.i.i, label %if.end.i.i.i.i.i.i.i.i, label %if.else if.end.i.i.i.i.i.i.i.i: ; preds = %sw.bb.i @@ -205218,7 +205218,7 @@ return.sink.split.i.i.i.i: ; preds = %lor.lhs.false.i.i.i store i32 %or.i.i.i.i.i.sink.i.i.i.i, ptr %errors.i.i, align 4 br label %if.else -sw.bb36.i: ; preds = %if.end29.i +sw.bb36.i: ; preds = %for.end.i br i1 %tobool.i.i.not.i.i.i, label %if.end.i.i.i.i47.i, label %if.else if.end.i.i.i.i47.i: ; preds = %sw.bb36.i diff --git a/bench/hdf5/optimized/H5I.c.ll b/bench/hdf5/optimized/H5I.c.ll index ab5bb0cff33..40ff14a36c1 100644 --- a/bench/hdf5/optimized/H5I.c.ll +++ b/bench/hdf5/optimized/H5I.c.ll @@ -123,89 +123,83 @@ define i32 @H5Iregister_type(i64 noundef %0, i32 noundef %1, ptr noundef %2) loc 27: ; preds = %23 %28 = add nsw i32 %25, 1 store i32 %28, ptr @H5I_next_type_g, align 4 - br label %42 + br label %40 .preheader: ; preds = %23, %.preheader %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader ], [ 17, %23 ] - %.02667 = phi i8 [ %spec.select36, %.preheader ], [ 0, %23 ] - %.13166 = phi i32 [ %spec.select, %.preheader ], [ -1, %23 ] %29 = getelementptr inbounds [127 x ptr], ptr @H5I_type_info_array_g, i64 0, i64 %indvars.iv %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %30, null - %32 = trunc nuw nsw i64 %indvars.iv to i32 - %spec.select = select i1 %31, i32 %32, i32 %.13166 - %spec.select36 = select i1 %31, i8 1, i8 %.02667 + %31 = icmp ne ptr %30, null %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %33 = icmp samesign ult i64 %indvars.iv, 126 - %34 = and i8 %spec.select36, 1 - %35 = icmp eq i8 %34, 0 - %36 = select i1 %33, i1 %35, i1 false - br i1 %36, label %.preheader, label %37 - -37: ; preds = %.preheader - br i1 %35, label %38, label %42 - -38: ; preds = %37 - %39 = load i64, ptr @H5E_ID_g, align 8 - %40 = load i64, ptr @H5E_NOSPACE_g, align 8 - %41 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 124, i64 noundef %39, i64 noundef %40, ptr noundef nonnull @.str.3) #3 + %32 = icmp samesign ult i64 %indvars.iv, 126 + %33 = select i1 %32, i1 %31, i1 false + br i1 %33, label %.preheader, label %34 + +34: ; preds = %.preheader + %35 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %31, label %36, label %40 + +36: ; preds = %34 + %37 = load i64, ptr @H5E_ID_g, align 8 + %38 = load i64, ptr @H5E_NOSPACE_g, align 8 + %39 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 124, i64 noundef %37, i64 noundef %38, ptr noundef nonnull @.str.3) #3 br label %.thread63 -42: ; preds = %37, %27 - %.030 = phi i32 [ %25, %27 ], [ %spec.select, %37 ] - %43 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #4 - %44 = icmp eq ptr %43, null - br i1 %44, label %45, label %49 +40: ; preds = %34, %27 + %.030 = phi i32 [ %25, %27 ], [ %35, %34 ] + %41 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #4 + %42 = icmp eq ptr %41, null + br i1 %42, label %43, label %47 -45: ; preds = %42 - %46 = load i64, ptr @H5E_ID_g, align 8 - %47 = load i64, ptr @H5E_CANTALLOC_g, align 8 - %48 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 129, i64 noundef %46, i64 noundef %47, ptr noundef nonnull @.str.4) #3 +43: ; preds = %40 + %44 = load i64, ptr @H5E_ID_g, align 8 + %45 = load i64, ptr @H5E_CANTALLOC_g, align 8 + %46 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 129, i64 noundef %44, i64 noundef %45, ptr noundef nonnull @.str.4) #3 br label %.thread63 -49: ; preds = %42 - store i32 %.030, ptr %43, align 8 - %50 = getelementptr inbounds i8, ptr %43, i64 4 - store i32 1, ptr %50, align 4 - %51 = getelementptr inbounds i8, ptr %43, i64 8 - store i32 %1, ptr %51, align 8 - %52 = getelementptr inbounds i8, ptr %43, i64 16 - store ptr %2, ptr %52, align 8 - %53 = tail call i32 @H5I_register_type(ptr noundef nonnull %43) #3 - %54 = icmp slt i32 %53, 0 - br i1 %54, label %.thread, label %58 - -.thread: ; preds = %49 - %55 = load i64, ptr @H5E_ID_g, align 8 - %56 = load i64, ptr @H5E_CANTINIT_g, align 8 - %57 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 139, i64 noundef %55, i64 noundef %56, ptr noundef nonnull @.str.5) #3 - br label %62 - -58: ; preds = %49 - %59 = icmp slt i32 %.030, 0 - br i1 %59, label %62, label %.thread72 - -.thread72: ; preds = %58 - %60 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 - br label %66 - -.thread63: ; preds = %45, %38 - %61 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 +47: ; preds = %40 + store i32 %.030, ptr %41, align 8 + %48 = getelementptr inbounds i8, ptr %41, i64 4 + store i32 1, ptr %48, align 4 + %49 = getelementptr inbounds i8, ptr %41, i64 8 + store i32 %1, ptr %49, align 8 + %50 = getelementptr inbounds i8, ptr %41, i64 16 + store ptr %2, ptr %50, align 8 + %51 = tail call i32 @H5I_register_type(ptr noundef nonnull %41) #3 + %52 = icmp slt i32 %51, 0 + br i1 %52, label %.thread, label %56 + +.thread: ; preds = %47 + %53 = load i64, ptr @H5E_ID_g, align 8 + %54 = load i64, ptr @H5E_CANTINIT_g, align 8 + %55 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Iregister_type, i32 noundef 139, i64 noundef %53, i64 noundef %54, ptr noundef nonnull @.str.5) #3 + br label %60 + +56: ; preds = %47 + %57 = icmp slt i32 %.030, 0 + br i1 %57, label %60, label %.thread72 + +.thread72: ; preds = %56 + %58 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 + br label %64 + +.thread63: ; preds = %43, %36 + %59 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 br label %.thread58 -62: ; preds = %58, %.thread - %.02971 = phi i32 [ -1, %.thread ], [ %.030, %58 ] - %63 = tail call ptr @H5MM_xfree(ptr noundef nonnull %43) #3 - %64 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 - br i1 %54, label %.thread58, label %66 +60: ; preds = %56, %.thread + %.02971 = phi i32 [ -1, %.thread ], [ %.030, %56 ] + %61 = tail call ptr @H5MM_xfree(ptr noundef nonnull %41) #3 + %62 = tail call i32 @H5CX_pop(i1 noundef zeroext true) #3 + br i1 %52, label %.thread58, label %64 -.thread58: ; preds = %19, %12, %.thread63, %62 - %.029425262 = phi i32 [ %.02971, %62 ], [ -1, %.thread63 ], [ -1, %12 ], [ -1, %19 ] - %65 = tail call i32 @H5E_dump_api_stack() #3 - br label %66 +.thread58: ; preds = %19, %12, %.thread63, %60 + %.029425262 = phi i32 [ %.02971, %60 ], [ -1, %.thread63 ], [ -1, %12 ], [ -1, %19 ] + %63 = tail call i32 @H5E_dump_api_stack() #3 + br label %64 -66: ; preds = %.thread72, %.thread58, %62 - %.029425261 = phi i32 [ %.029425262, %.thread58 ], [ %.02971, %62 ], [ %.030, %.thread72 ] +64: ; preds = %.thread72, %.thread58, %60 + %.029425261 = phi i32 [ %.029425262, %.thread58 ], [ %.02971, %60 ], [ %.030, %.thread72 ] ret i32 %.029425261 } diff --git a/bench/hyperscan/optimized/gtest-all.cc.ll b/bench/hyperscan/optimized/gtest-all.cc.ll index db3a9e55a17..6ef777c2a63 100644 --- a/bench/hyperscan/optimized/gtest-all.cc.ll +++ b/bench/hyperscan/optimized/gtest-all.cc.ll @@ -38614,282 +38614,281 @@ for.body.lr.ph: ; preds = %cond.end br label %for.body for.cond.cleanup.loopexit: ; preds = %if.end81 - %15 = and i8 %spec.select, 1 - %16 = icmp eq i8 %15, 0 + %15 = icmp eq i8 %spec.select, 0 br label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %cond.end - %failed.0.lcssa = phi i1 [ true, %cond.end ], [ %16, %for.cond.cleanup.loopexit ] - %17 = load ptr, ptr %parent_, align 8 + %failed.0.lcssa = phi i1 [ true, %cond.end ], [ %15, %for.cond.cleanup.loopexit ] + %16 = load ptr, ptr %parent_, align 8 %vtable86 = load ptr, ptr %9, align 8 %vfn87 = getelementptr inbounds i8, ptr %vtable86, i64 112 - %18 = load ptr, ptr %vfn87, align 8 - tail call void %18(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %17) + %17 = load ptr, ptr %vfn87, align 8 + tail call void %17(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %16) br label %return for.body: ; preds = %if.end81, %for.body.lr.ph %i.0161 = phi i32 [ 0, %for.body.lr.ph ], [ %inc83, %if.end81 ] %failed.0160 = phi i8 [ 0, %for.body.lr.ph ], [ %spec.select, %if.end81 ] - %19 = load ptr, ptr %test_cases_.i, align 8 - %20 = load ptr, ptr %_M_finish.i.i.i, align 8 - %cmp.i.not7.i.i.i = icmp eq ptr %19, %20 + %18 = load ptr, ptr %test_cases_.i, align 8 + %19 = load ptr, ptr %_M_finish.i.i.i, align 8 + %cmp.i.not7.i.i.i = icmp eq ptr %18, %19 br i1 %cmp.i.not7.i.i.i, label %_ZN7testing8internal12UnitTestImpl23ClearNonAdHocTestResultEv.exit, label %for.body.i.i.i for.body.i.i.i: ; preds = %for.body, %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i - %__first.sroa.0.08.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i ], [ %19, %for.body ] - %21 = load ptr, ptr %__first.sroa.0.08.i.i.i, align 8 - %ad_hoc_test_result_.i.i.i = getelementptr inbounds i8, ptr %21, i64 128 + %__first.sroa.0.08.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i ], [ %18, %for.body ] + %20 = load ptr, ptr %__first.sroa.0.08.i.i.i, align 8 + %ad_hoc_test_result_.i.i.i = getelementptr inbounds i8, ptr %20, i64 128 tail call void @_ZN7testing10TestResult5ClearEv(ptr noundef nonnull align 8 dereferenceable(72) %ad_hoc_test_result_.i.i.i) - %test_info_list_.i.i.i = getelementptr inbounds i8, ptr %21, i64 48 - %22 = load ptr, ptr %test_info_list_.i.i.i, align 8 - %_M_finish.i.i.i.i.i = getelementptr inbounds i8, ptr %21, i64 56 - %23 = load ptr, ptr %_M_finish.i.i.i.i.i, align 8 - %cmp.i.not7.i.i.i.i.i = icmp eq ptr %22, %23 + %test_info_list_.i.i.i = getelementptr inbounds i8, ptr %20, i64 48 + %21 = load ptr, ptr %test_info_list_.i.i.i, align 8 + %_M_finish.i.i.i.i.i = getelementptr inbounds i8, ptr %20, i64 56 + %22 = load ptr, ptr %_M_finish.i.i.i.i.i, align 8 + %cmp.i.not7.i.i.i.i.i = icmp eq ptr %21, %22 br i1 %cmp.i.not7.i.i.i.i.i, label %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i, label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i, %_ZN7testing10TestResult5ClearEv.exit - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN7testing10TestResult5ClearEv.exit ], [ %22, %for.body.i.i.i ] - %24 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 - %test_part_results_.i = getelementptr inbounds i8, ptr %24, i64 112 - %25 = load ptr, ptr %test_part_results_.i, align 8 - %_M_finish.i.i.i8 = getelementptr inbounds i8, ptr %24, i64 120 - %26 = load ptr, ptr %_M_finish.i.i.i8, align 8 - %tobool.not.i.i.i = icmp eq ptr %26, %25 + %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %_ZN7testing10TestResult5ClearEv.exit ], [ %21, %for.body.i.i.i ] + %23 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %test_part_results_.i = getelementptr inbounds i8, ptr %23, i64 112 + %24 = load ptr, ptr %test_part_results_.i, align 8 + %_M_finish.i.i.i8 = getelementptr inbounds i8, ptr %23, i64 120 + %25 = load ptr, ptr %_M_finish.i.i.i8, align 8 + %tobool.not.i.i.i = icmp eq ptr %25, %24 br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i, %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i - %__first.addr.04.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i9, %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i ], [ %25, %for.body.i.i.i.i.i ] + %__first.addr.04.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i9, %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i ], [ %24, %for.body.i.i.i.i.i ] %message_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 80 - %27 = load ptr, ptr %message_.i.i.i.i.i.i.i.i, align 8 - %28 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 96 - %cmp.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, %28 + %26 = load ptr, ptr %message_.i.i.i.i.i.i.i.i, align 8 + %27 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 96 + %cmp.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %26, %27 br i1 %cmp.i.i.i.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i %_M_string_length.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 88 - %29 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i, align 8 - %cmp3.i.i.i.i.i.i.i.i.i.i.i = icmp ult i64 %29, 16 + %28 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i.i, align 8 + %cmp3.i.i.i.i.i.i.i.i.i.i.i = icmp ult i64 %28, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef %27) #53 + tail call void @_ZdlPv(ptr noundef %26) #53 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i %summary_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 48 - %30 = load ptr, ptr %summary_.i.i.i.i.i.i.i.i, align 8 - %31 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 64 - %cmp.i.i.i2.i.i.i.i.i.i.i.i = icmp eq ptr %30, %31 + %29 = load ptr, ptr %summary_.i.i.i.i.i.i.i.i, align 8 + %30 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 64 + %cmp.i.i.i2.i.i.i.i.i.i.i.i = icmp eq ptr %29, %30 br i1 %cmp.i.i.i2.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i.i, label %if.then.i.i3.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i.i %_M_string_length.i.i.i5.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 56 - %32 = load i64, ptr %_M_string_length.i.i.i5.i.i.i.i.i.i.i.i, align 8 - %cmp3.i.i.i6.i.i.i.i.i.i.i.i = icmp ult i64 %32, 16 + %31 = load i64, ptr %_M_string_length.i.i.i5.i.i.i.i.i.i.i.i, align 8 + %cmp3.i.i.i6.i.i.i.i.i.i.i.i = icmp ult i64 %31, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i6.i.i.i.i.i.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7.i.i.i.i.i.i.i.i if.then.i.i3.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef %30) #53 + tail call void @_ZdlPv(ptr noundef %29) #53 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7.i.i.i.i.i.i.i.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i3.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i.i %file_name_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 8 - %33 = load ptr, ptr %file_name_.i.i.i.i.i.i.i.i, align 8 - %34 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 24 - %cmp.i.i.i8.i.i.i.i.i.i.i.i = icmp eq ptr %33, %34 + %32 = load ptr, ptr %file_name_.i.i.i.i.i.i.i.i, align 8 + %33 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 24 + %cmp.i.i.i8.i.i.i.i.i.i.i.i = icmp eq ptr %32, %33 br i1 %cmp.i.i.i8.i.i.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10.i.i.i.i.i.i.i.i, label %if.then.i.i9.i.i.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7.i.i.i.i.i.i.i.i %_M_string_length.i.i.i11.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 16 - %35 = load i64, ptr %_M_string_length.i.i.i11.i.i.i.i.i.i.i.i, align 8 - %cmp3.i.i.i12.i.i.i.i.i.i.i.i = icmp ult i64 %35, 16 + %34 = load i64, ptr %_M_string_length.i.i.i11.i.i.i.i.i.i.i.i, align 8 + %cmp3.i.i.i12.i.i.i.i.i.i.i.i = icmp ult i64 %34, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i12.i.i.i.i.i.i.i.i) br label %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i if.then.i.i9.i.i.i.i.i.i.i.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit7.i.i.i.i.i.i.i.i - tail call void @_ZdlPv(ptr noundef %33) #53 + tail call void @_ZdlPv(ptr noundef %32) #53 br label %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i _ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i: ; preds = %if.then.i.i9.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i10.i.i.i.i.i.i.i.i %incdec.ptr.i.i.i.i.i.i9 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 112 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i9, %26 + %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i9, %25 br i1 %cmp.not.i.i.i.i.i.i, label %invoke.cont.i.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !229 invoke.cont.i.i.i: ; preds = %_ZSt8_DestroyIN7testing14TestPartResultEEvPT_.exit.i.i.i.i.i.i - store ptr %25, ptr %_M_finish.i.i.i8, align 8 + store ptr %24, ptr %_M_finish.i.i.i8, align 8 br label %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i _ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i: ; preds = %invoke.cont.i.i.i, %for.body.i.i.i.i.i - %test_properties_.i = getelementptr inbounds i8, ptr %24, i64 136 - %36 = load ptr, ptr %test_properties_.i, align 8 - %_M_finish.i.i2.i = getelementptr inbounds i8, ptr %24, i64 144 - %37 = load ptr, ptr %_M_finish.i.i2.i, align 8 - %tobool.not.i.i3.i = icmp eq ptr %37, %36 + %test_properties_.i = getelementptr inbounds i8, ptr %23, i64 136 + %35 = load ptr, ptr %test_properties_.i, align 8 + %_M_finish.i.i2.i = getelementptr inbounds i8, ptr %23, i64 144 + %36 = load ptr, ptr %_M_finish.i.i2.i, align 8 + %tobool.not.i.i3.i = icmp eq ptr %36, %35 br i1 %tobool.not.i.i3.i, label %_ZN7testing10TestResult5ClearEv.exit, label %for.body.i.i.i.i.i4.i for.body.i.i.i.i.i4.i: ; preds = %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i, %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i - %__first.addr.04.i.i.i.i.i5.i = phi ptr [ %incdec.ptr.i.i.i.i.i11.i, %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i ], [ %36, %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i ] + %__first.addr.04.i.i.i.i.i5.i = phi ptr [ %incdec.ptr.i.i.i.i.i11.i, %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i ], [ %35, %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i ] %value_.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 32 - %38 = load ptr, ptr %value_.i.i.i.i.i.i.i.i, align 8 - %39 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 48 - %cmp.i.i.i.i.i.i.i.i.i.i6.i = icmp eq ptr %38, %39 + %37 = load ptr, ptr %value_.i.i.i.i.i.i.i.i, align 8 + %38 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 48 + %cmp.i.i.i.i.i.i.i.i.i.i6.i = icmp eq ptr %37, %38 br i1 %cmp.i.i.i.i.i.i.i.i.i.i6.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i17.i, label %if.then.i.i.i.i.i.i.i.i.i7.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i17.i: ; preds = %for.body.i.i.i.i.i4.i %_M_string_length.i.i.i.i.i.i.i.i.i.i18.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 40 - %40 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i18.i, align 8 - %cmp3.i.i.i.i.i.i.i.i.i.i19.i = icmp ult i64 %40, 16 + %39 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i18.i, align 8 + %cmp3.i.i.i.i.i.i.i.i.i.i19.i = icmp ult i64 %39, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i.i19.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i8.i if.then.i.i.i.i.i.i.i.i.i7.i: ; preds = %for.body.i.i.i.i.i4.i - tail call void @_ZdlPv(ptr noundef %38) #53 + tail call void @_ZdlPv(ptr noundef %37) #53 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i8.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i8.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i7.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i17.i - %41 = load ptr, ptr %__first.addr.04.i.i.i.i.i5.i, align 8 - %42 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 16 - %cmp.i.i.i2.i.i.i.i.i.i.i9.i = icmp eq ptr %41, %42 + %40 = load ptr, ptr %__first.addr.04.i.i.i.i.i5.i, align 8 + %41 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 16 + %cmp.i.i.i2.i.i.i.i.i.i.i9.i = icmp eq ptr %40, %41 br i1 %cmp.i.i.i2.i.i.i.i.i.i.i9.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i14.i, label %if.then.i.i3.i.i.i.i.i.i.i10.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i14.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i8.i %_M_string_length.i.i.i5.i.i.i.i.i.i.i15.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 8 - %43 = load i64, ptr %_M_string_length.i.i.i5.i.i.i.i.i.i.i15.i, align 8 - %cmp3.i.i.i6.i.i.i.i.i.i.i16.i = icmp ult i64 %43, 16 + %42 = load i64, ptr %_M_string_length.i.i.i5.i.i.i.i.i.i.i15.i, align 8 + %cmp3.i.i.i6.i.i.i.i.i.i.i16.i = icmp ult i64 %42, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i6.i.i.i.i.i.i.i16.i) br label %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i if.then.i.i3.i.i.i.i.i.i.i10.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i.i.i.i.i.i.i8.i - tail call void @_ZdlPv(ptr noundef %41) #53 + tail call void @_ZdlPv(ptr noundef %40) #53 br label %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i _ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i: ; preds = %if.then.i.i3.i.i.i.i.i.i.i10.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i4.i.i.i.i.i.i.i14.i %incdec.ptr.i.i.i.i.i11.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i5.i, i64 64 - %cmp.not.i.i.i.i.i12.i = icmp eq ptr %incdec.ptr.i.i.i.i.i11.i, %37 + %cmp.not.i.i.i.i.i12.i = icmp eq ptr %incdec.ptr.i.i.i.i.i11.i, %36 br i1 %cmp.not.i.i.i.i.i12.i, label %invoke.cont.i.i13.i, label %for.body.i.i.i.i.i4.i, !llvm.loop !228 invoke.cont.i.i13.i: ; preds = %_ZSt8_DestroyIN7testing12TestPropertyEEvPT_.exit.i.i.i.i.i.i - store ptr %36, ptr %_M_finish.i.i2.i, align 8 + store ptr %35, ptr %_M_finish.i.i2.i, align 8 br label %_ZN7testing10TestResult5ClearEv.exit _ZN7testing10TestResult5ClearEv.exit: ; preds = %_ZNSt6vectorIN7testing14TestPartResultESaIS1_EE5clearEv.exit.i, %invoke.cont.i.i13.i - %death_test_count_.i = getelementptr inbounds i8, ptr %24, i64 160 + %death_test_count_.i = getelementptr inbounds i8, ptr %23, i64 160 store i32 0, ptr %death_test_count_.i, align 8 - %elapsed_time_.i = getelementptr inbounds i8, ptr %24, i64 168 + %elapsed_time_.i = getelementptr inbounds i8, ptr %23, i64 168 store i64 0, ptr %elapsed_time_.i, align 8 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 - %cmp.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %23 + %cmp.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %22 br i1 %cmp.i.not.i.i.i.i.i, label %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i, label %for.body.i.i.i.i.i, !llvm.loop !265 _ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i: ; preds = %_ZN7testing10TestResult5ClearEv.exit, %for.body.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i, i64 8 - %cmp.i.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %20 + %cmp.i.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %19 br i1 %cmp.i.not.i.i.i, label %_ZN7testing8internal12UnitTestImpl23ClearNonAdHocTestResultEv.exit, label %for.body.i.i.i, !llvm.loop !408 _ZN7testing8internal12UnitTestImpl23ClearNonAdHocTestResultEv.exit: ; preds = %_ZN7testing8TestCase19ClearTestCaseResultEPS0_.exit.i, %for.body call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %now.i108) #52 %call.i109 = call i32 @gettimeofday(ptr noundef nonnull %now.i108, ptr noundef null) #52 - %44 = load i64, ptr %now.i108, align 8 - %45 = load i64, ptr %tv_usec.i111, align 8 - %div.i112.neg = sdiv i64 %45, -1000 + %43 = load i64, ptr %now.i108, align 8 + %44 = load i64, ptr %tv_usec.i111, align 8 + %div.i112.neg = sdiv i64 %44, -1000 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %now.i108) #52 - %46 = load i8, ptr @_ZN7testing19FLAGS_gtest_shuffleE, align 1, !range !11 - %tobool33.not = icmp eq i8 %46, 0 + %45 = load i8, ptr @_ZN7testing19FLAGS_gtest_shuffleE, align 1, !range !11 + %tobool33.not = icmp eq i8 %45, 0 %or.cond = select i1 %cmp11, i1 true, i1 %tobool33.not br i1 %or.cond, label %if.end37, label %if.then34 if.then34: ; preds = %_ZN7testing8internal12UnitTestImpl23ClearNonAdHocTestResultEv.exit - %47 = load i32, ptr %random_seed_, align 4 - store i32 %47, ptr %random_.i, align 8 - %48 = load i32, ptr %last_death_test_case_.i, align 4 - %add.i10 = add nsw i32 %48, 1 + %46 = load i32, ptr %random_seed_, align 4 + store i32 %46, ptr %random_.i, align 8 + %47 = load i32, ptr %last_death_test_case_.i, align 4 + %add.i10 = add nsw i32 %47, 1 tail call void @_ZN7testing8internal12ShuffleRangeIiEEvPNS0_6RandomEiiPSt6vectorIT_SaIS5_EE(ptr noundef nonnull %random_.i, i32 noundef 0, i32 noundef %add.i10, ptr noundef nonnull %test_case_indices_.i) - %49 = load i32, ptr %last_death_test_case_.i, align 4 - %add4.i = add nsw i32 %49, 1 - %50 = load ptr, ptr %_M_finish.i.i.i, align 8 - %51 = load ptr, ptr %test_cases_.i, align 8 - %sub.ptr.lhs.cast.i.i14 = ptrtoint ptr %50 to i64 - %sub.ptr.rhs.cast.i.i15 = ptrtoint ptr %51 to i64 + %48 = load i32, ptr %last_death_test_case_.i, align 4 + %add4.i = add nsw i32 %48, 1 + %49 = load ptr, ptr %_M_finish.i.i.i, align 8 + %50 = load ptr, ptr %test_cases_.i, align 8 + %sub.ptr.lhs.cast.i.i14 = ptrtoint ptr %49 to i64 + %sub.ptr.rhs.cast.i.i15 = ptrtoint ptr %50 to i64 %sub.ptr.sub.i.i16 = sub i64 %sub.ptr.lhs.cast.i.i14, %sub.ptr.rhs.cast.i.i15 %sub.ptr.div.i.i = lshr exact i64 %sub.ptr.sub.i.i16, 3 %conv.i17 = trunc i64 %sub.ptr.div.i.i to i32 tail call void @_ZN7testing8internal12ShuffleRangeIiEEvPNS0_6RandomEiiPSt6vectorIT_SaIS5_EE(ptr noundef nonnull %random_.i, i32 noundef %add4.i, i32 noundef %conv.i17, ptr noundef nonnull %test_case_indices_.i) - %52 = load ptr, ptr %_M_finish.i.i.i, align 8 - %53 = load ptr, ptr %test_cases_.i, align 8 - %cmp25.not.i = icmp eq ptr %52, %53 + %51 = load ptr, ptr %_M_finish.i.i.i, align 8 + %52 = load ptr, ptr %test_cases_.i, align 8 + %cmp25.not.i = icmp eq ptr %51, %52 br i1 %cmp25.not.i, label %if.end37, label %for.body.i18 for.body.i18: ; preds = %if.then34, %for.body.i18 - %54 = phi ptr [ %59, %for.body.i18 ], [ %53, %if.then34 ] + %53 = phi ptr [ %58, %for.body.i18 ], [ %52, %if.then34 ] %i.026.i = phi i64 [ %inc.i21, %for.body.i18 ], [ 0, %if.then34 ] - %add.ptr.i.i19 = getelementptr inbounds ptr, ptr %54, i64 %i.026.i - %55 = load ptr, ptr %add.ptr.i.i19, align 8 - %test_indices_.i.i20 = getelementptr inbounds i8, ptr %55, i64 72 - %_M_finish.i.i.i.i = getelementptr inbounds i8, ptr %55, i64 80 - %56 = load ptr, ptr %_M_finish.i.i.i.i, align 8 - %57 = load ptr, ptr %test_indices_.i.i20, align 8 - %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %56 to i64 - %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %57 to i64 + %add.ptr.i.i19 = getelementptr inbounds ptr, ptr %53, i64 %i.026.i + %54 = load ptr, ptr %add.ptr.i.i19, align 8 + %test_indices_.i.i20 = getelementptr inbounds i8, ptr %54, i64 72 + %_M_finish.i.i.i.i = getelementptr inbounds i8, ptr %54, i64 80 + %55 = load ptr, ptr %_M_finish.i.i.i.i, align 8 + %56 = load ptr, ptr %test_indices_.i.i20, align 8 + %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %55 to i64 + %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %56 to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %sub.ptr.div.i.i.i.i = lshr exact i64 %sub.ptr.sub.i.i.i.i, 2 %conv.i.i.i = trunc i64 %sub.ptr.div.i.i.i.i to i32 tail call void @_ZN7testing8internal12ShuffleRangeIiEEvPNS0_6RandomEiiPSt6vectorIT_SaIS5_EE(ptr noundef nonnull %random_.i, i32 noundef 0, i32 noundef %conv.i.i.i, ptr noundef nonnull %test_indices_.i.i20) %inc.i21 = add nuw i64 %i.026.i, 1 - %58 = load ptr, ptr %_M_finish.i.i.i, align 8 - %59 = load ptr, ptr %test_cases_.i, align 8 - %sub.ptr.lhs.cast.i16.i = ptrtoint ptr %58 to i64 - %sub.ptr.rhs.cast.i17.i = ptrtoint ptr %59 to i64 + %57 = load ptr, ptr %_M_finish.i.i.i, align 8 + %58 = load ptr, ptr %test_cases_.i, align 8 + %sub.ptr.lhs.cast.i16.i = ptrtoint ptr %57 to i64 + %sub.ptr.rhs.cast.i17.i = ptrtoint ptr %58 to i64 %sub.ptr.sub.i18.i = sub i64 %sub.ptr.lhs.cast.i16.i, %sub.ptr.rhs.cast.i17.i %sub.ptr.div.i19.i = ashr exact i64 %sub.ptr.sub.i18.i, 3 %cmp.i = icmp ult i64 %inc.i21, %sub.ptr.div.i19.i br i1 %cmp.i, label %for.body.i18, label %if.end37, !llvm.loop !409 if.end37: ; preds = %for.body.i18, %if.then34, %_ZN7testing8internal12UnitTestImpl23ClearNonAdHocTestResultEv.exit - %60 = load ptr, ptr %parent_, align 8 + %59 = load ptr, ptr %parent_, align 8 %vtable39 = load ptr, ptr %9, align 8 %vfn40 = getelementptr inbounds i8, ptr %vtable39, i64 24 - %61 = load ptr, ptr %vfn40, align 8 - tail call void %61(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %60, i32 noundef %i.0161) + %60 = load ptr, ptr %vfn40, align 8 + tail call void %60(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %59, i32 noundef %i.0161) br i1 %cmp11, label %if.end68, label %if.then42 if.then42: ; preds = %if.end37 - %62 = load ptr, ptr %parent_, align 8 + %61 = load ptr, ptr %parent_, align 8 %vtable44 = load ptr, ptr %9, align 8 %vfn45 = getelementptr inbounds i8, ptr %vtable44, i64 32 - %63 = load ptr, ptr %vfn45, align 8 - tail call void %63(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %62) - %64 = load ptr, ptr %environments_, align 8 - %65 = load ptr, ptr %_M_finish.i.i, align 8 - %cmp.i.not7.i.i = icmp eq ptr %64, %65 + %62 = load ptr, ptr %vfn45, align 8 + tail call void %62(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %61) + %63 = load ptr, ptr %environments_, align 8 + %64 = load ptr, ptr %_M_finish.i.i, align 8 + %cmp.i.not7.i.i = icmp eq ptr %63, %64 br i1 %cmp.i.not7.i.i, label %_ZN7testing8internal7ForEachISt6vectorIPNS_11EnvironmentESaIS4_EEPFvS4_EEEvRKT_T0_.exit, label %for.body.i.i for.body.i.i: ; preds = %if.then42, %for.body.i.i - %__first.sroa.0.08.i.i = phi ptr [ %incdec.ptr.i.i.i, %for.body.i.i ], [ %64, %if.then42 ] - %66 = load ptr, ptr %__first.sroa.0.08.i.i, align 8 - %vtable.i = load ptr, ptr %66, align 8 + %__first.sroa.0.08.i.i = phi ptr [ %incdec.ptr.i.i.i, %for.body.i.i ], [ %63, %if.then42 ] + %65 = load ptr, ptr %__first.sroa.0.08.i.i, align 8 + %vtable.i = load ptr, ptr %65, align 8 %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 16 - %67 = load ptr, ptr %vfn.i, align 8 - tail call void %67(ptr noundef nonnull align 8 dereferenceable(8) %66) + %66 = load ptr, ptr %vfn.i, align 8 + tail call void %66(ptr noundef nonnull align 8 dereferenceable(8) %65) %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i, i64 8 - %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i.i.i, %65 + %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i.i.i, %64 br i1 %cmp.i.not.i.i, label %_ZN7testing8internal7ForEachISt6vectorIPNS_11EnvironmentESaIS4_EEPFvS4_EEEvRKT_T0_.exit, label %for.body.i.i, !llvm.loop !410 _ZN7testing8internal7ForEachISt6vectorIPNS_11EnvironmentESaIS4_EEPFvS4_EEEvRKT_T0_.exit: ; preds = %for.body.i.i, %if.then42 - %68 = load ptr, ptr %parent_, align 8 + %67 = load ptr, ptr %parent_, align 8 %vtable47 = load ptr, ptr %9, align 8 %vfn48 = getelementptr inbounds i8, ptr %vtable47, i64 40 - %69 = load ptr, ptr %vfn48, align 8 - tail call void %69(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %68) + %68 = load ptr, ptr %vfn48, align 8 + tail call void %68(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %67) %call49 = tail call noundef zeroext i1 @_ZN7testing4Test15HasFatalFailureEv() br i1 %call49, label %if.end57, label %for.cond51.preheader for.cond51.preheader: ; preds = %_ZN7testing8internal7ForEachISt6vectorIPNS_11EnvironmentESaIS4_EEPFvS4_EEEvRKT_T0_.exit - %70 = load ptr, ptr %_M_finish.i.i.i, align 8 - %71 = load ptr, ptr %test_cases_.i, align 8 - %sub.ptr.lhs.cast.i.i152 = ptrtoint ptr %70 to i64 - %sub.ptr.rhs.cast.i.i153 = ptrtoint ptr %71 to i64 + %69 = load ptr, ptr %_M_finish.i.i.i, align 8 + %70 = load ptr, ptr %test_cases_.i, align 8 + %sub.ptr.lhs.cast.i.i152 = ptrtoint ptr %69 to i64 + %sub.ptr.rhs.cast.i.i153 = ptrtoint ptr %70 to i64 %sub.ptr.sub.i.i154 = sub i64 %sub.ptr.lhs.cast.i.i152, %sub.ptr.rhs.cast.i.i153 %sub.ptr.div.i.i155 = lshr exact i64 %sub.ptr.sub.i.i154, 3 %conv.i116156 = trunc i64 %sub.ptr.div.i.i155 to i32 @@ -38898,112 +38897,112 @@ for.cond51.preheader: ; preds = %_ZN7testing8interna for.body55: ; preds = %for.cond51.preheader, %for.body55 %indvars.iv = phi i64 [ %indvars.iv.next, %for.body55 ], [ 0, %for.cond51.preheader ] - %72 = phi ptr [ %79, %for.body55 ], [ %71, %for.cond51.preheader ] - %73 = load ptr, ptr %_M_finish.i.i.i117, align 8 - %74 = load ptr, ptr %test_case_indices_.i, align 8 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %73 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %74 to i64 + %71 = phi ptr [ %78, %for.body55 ], [ %70, %for.cond51.preheader ] + %72 = load ptr, ptr %_M_finish.i.i.i117, align 8 + %73 = load ptr, ptr %test_case_indices_.i, align 8 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %72 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %73 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sext = shl i64 %sub.ptr.sub.i.i.i, 30 - %75 = ashr i64 %sext, 32 - %cmp1.not.i.i = icmp slt i64 %indvars.iv, %75 + %74 = ashr i64 %sext, 32 + %cmp1.not.i.i = icmp slt i64 %indvars.iv, %74 tail call void @llvm.assume(i1 %cmp1.not.i.i) - %add.ptr.i.i.i = getelementptr inbounds i32, ptr %74, i64 %indvars.iv - %76 = load i32, ptr %add.ptr.i.i.i, align 4 - %cmp.i119 = icmp sgt i32 %76, -1 + %add.ptr.i.i.i = getelementptr inbounds i32, ptr %73, i64 %indvars.iv + %75 = load i32, ptr %add.ptr.i.i.i, align 4 + %cmp.i119 = icmp sgt i32 %75, -1 tail call void @llvm.assume(i1 %cmp.i119) - %conv.i121 = zext nneg i32 %76 to i64 - %add.ptr.i.i = getelementptr inbounds ptr, ptr %72, i64 %conv.i121 - %77 = load ptr, ptr %add.ptr.i.i, align 8 - tail call void @_ZN7testing8TestCase3RunEv(ptr noundef nonnull align 8 dereferenceable(200) %77) + %conv.i121 = zext nneg i32 %75 to i64 + %add.ptr.i.i = getelementptr inbounds ptr, ptr %71, i64 %conv.i121 + %76 = load ptr, ptr %add.ptr.i.i, align 8 + tail call void @_ZN7testing8TestCase3RunEv(ptr noundef nonnull align 8 dereferenceable(200) %76) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %78 = load ptr, ptr %_M_finish.i.i.i, align 8 - %79 = load ptr, ptr %test_cases_.i, align 8 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %78 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %79 to i64 + %77 = load ptr, ptr %_M_finish.i.i.i, align 8 + %78 = load ptr, ptr %test_cases_.i, align 8 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %77 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %78 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sext163 = shl i64 %sub.ptr.sub.i.i, 29 - %80 = ashr i64 %sext163, 32 - %cmp53 = icmp slt i64 %indvars.iv.next, %80 + %79 = ashr i64 %sext163, 32 + %cmp53 = icmp slt i64 %indvars.iv.next, %79 br i1 %cmp53, label %for.body55, label %if.end57, !llvm.loop !411 if.end57: ; preds = %for.body55, %for.cond51.preheader, %_ZN7testing8internal7ForEachISt6vectorIPNS_11EnvironmentESaIS4_EEPFvS4_EEEvRKT_T0_.exit - %81 = load ptr, ptr %parent_, align 8 + %80 = load ptr, ptr %parent_, align 8 %vtable59 = load ptr, ptr %9, align 8 %vfn60 = getelementptr inbounds i8, ptr %vtable59, i64 88 - %82 = load ptr, ptr %vfn60, align 8 - tail call void %82(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %81) - %83 = load ptr, ptr %_M_finish.i.i, align 8, !noalias !412 - %84 = load ptr, ptr %environments_, align 8, !noalias !415 - %cmp.i.i.i.not7.i = icmp eq ptr %83, %84 + %81 = load ptr, ptr %vfn60, align 8 + tail call void %81(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %80) + %82 = load ptr, ptr %_M_finish.i.i, align 8, !noalias !412 + %83 = load ptr, ptr %environments_, align 8, !noalias !415 + %cmp.i.i.i.not7.i = icmp eq ptr %82, %83 br i1 %cmp.i.i.i.not7.i, label %_ZSt8for_eachISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPPN7testing11EnvironmentESt6vectorIS5_SaIS5_EEEEEPFvS5_EET0_T_SF_SE_.exit, label %for.body.i for.body.i: ; preds = %if.end57, %for.body.i - %agg.tmp.sroa.0.0 = phi ptr [ %incdec.ptr.i.i.i123, %for.body.i ], [ %83, %if.end57 ] + %agg.tmp.sroa.0.0 = phi ptr [ %incdec.ptr.i.i.i123, %for.body.i ], [ %82, %if.end57 ] %incdec.ptr.i.i.i123 = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0, i64 -8 - %85 = load ptr, ptr %incdec.ptr.i.i.i123, align 8 - %vtable.i150 = load ptr, ptr %85, align 8 + %84 = load ptr, ptr %incdec.ptr.i.i.i123, align 8 + %vtable.i150 = load ptr, ptr %84, align 8 %vfn.i151 = getelementptr inbounds i8, ptr %vtable.i150, i64 24 - %86 = load ptr, ptr %vfn.i151, align 8 - tail call void %86(ptr noundef nonnull align 8 dereferenceable(8) %85) - %cmp.i.i.i.not.i = icmp eq ptr %incdec.ptr.i.i.i123, %84 + %85 = load ptr, ptr %vfn.i151, align 8 + tail call void %85(ptr noundef nonnull align 8 dereferenceable(8) %84) + %cmp.i.i.i.not.i = icmp eq ptr %incdec.ptr.i.i.i123, %83 br i1 %cmp.i.i.i.not.i, label %_ZSt8for_eachISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPPN7testing11EnvironmentESt6vectorIS5_SaIS5_EEEEEPFvS5_EET0_T_SF_SE_.exit, label %for.body.i, !llvm.loop !418 _ZSt8for_eachISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPPN7testing11EnvironmentESt6vectorIS5_SaIS5_EEEEEPFvS5_EET0_T_SF_SE_.exit: ; preds = %for.body.i, %if.end57 - %87 = load ptr, ptr %parent_, align 8 + %86 = load ptr, ptr %parent_, align 8 %vtable66 = load ptr, ptr %9, align 8 %vfn67 = getelementptr inbounds i8, ptr %vtable66, i64 96 - %88 = load ptr, ptr %vfn67, align 8 - tail call void %88(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %87) + %87 = load ptr, ptr %vfn67, align 8 + tail call void %87(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %86) br label %if.end68 if.end68: ; preds = %_ZSt8for_eachISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPPN7testing11EnvironmentESt6vectorIS5_SaIS5_EEEEEPFvS5_EET0_T_SF_SE_.exit, %if.end37 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %now.i124) #52 %call.i125 = call i32 @gettimeofday(ptr noundef nonnull %now.i124, ptr noundef null) #52 - %89 = load i64, ptr %now.i124, align 8 - %90 = load i64, ptr %tv_usec.i127, align 8 - %div.i128 = sdiv i64 %90, 1000 + %88 = load i64, ptr %now.i124, align 8 + %89 = load i64, ptr %tv_usec.i127, align 8 + %div.i128 = sdiv i64 %89, 1000 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %now.i124) #52 - %reass.add = sub i64 %89, %44 + %reass.add = sub i64 %88, %43 %reass.mul = mul i64 %reass.add, 1000 %add.i113.neg = add nsw i64 %div.i128, %div.i112.neg %sub = add i64 %add.i113.neg, %reass.mul store i64 %sub, ptr %elapsed_time_, align 8 - %91 = load ptr, ptr %parent_, align 8 + %90 = load ptr, ptr %parent_, align 8 %vtable71 = load ptr, ptr %9, align 8 %vfn72 = getelementptr inbounds i8, ptr %vtable71, i64 104 - %92 = load ptr, ptr %vfn72, align 8 - tail call void %92(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %91, i32 noundef %i.0161) + %91 = load ptr, ptr %vfn72, align 8 + tail call void %91(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(24) %90, i32 noundef %i.0161) %call.i130 = tail call noundef zeroext i1 @_ZNK7testing8internal12UnitTestImpl6FailedEv(ptr noundef nonnull align 8 dereferenceable(401) %this) %spec.select = select i1 %call.i130, i8 1, i8 %failed.0160 - %93 = load ptr, ptr %_M_finish.i.i.i, align 8 - %94 = load ptr, ptr %test_cases_.i, align 8 - %cmp14.not.i = icmp eq ptr %93, %94 + %92 = load ptr, ptr %_M_finish.i.i.i, align 8 + %93 = load ptr, ptr %test_cases_.i, align 8 + %cmp14.not.i = icmp eq ptr %92, %93 br i1 %cmp14.not.i, label %_ZN7testing8internal12UnitTestImpl14UnshuffleTestsEv.exit, label %for.body.i134 for.body.i134: ; preds = %if.end68, %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i - %95 = phi ptr [ %104, %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i ], [ %94, %if.end68 ] + %94 = phi ptr [ %103, %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i ], [ %93, %if.end68 ] %i.015.i = phi i64 [ %inc.i, %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i ], [ 0, %if.end68 ] - %add.ptr.i.i135 = getelementptr inbounds ptr, ptr %95, i64 %i.015.i - %96 = load ptr, ptr %add.ptr.i.i135, align 8 - %test_indices_.i.i = getelementptr inbounds i8, ptr %96, i64 72 - %_M_finish.i.i.i136 = getelementptr inbounds i8, ptr %96, i64 80 - %97 = load ptr, ptr %_M_finish.i.i.i136, align 8 - %98 = load ptr, ptr %test_indices_.i.i, align 8 - %cmp11.not.i.i = icmp eq ptr %97, %98 + %add.ptr.i.i135 = getelementptr inbounds ptr, ptr %94, i64 %i.015.i + %95 = load ptr, ptr %add.ptr.i.i135, align 8 + %test_indices_.i.i = getelementptr inbounds i8, ptr %95, i64 72 + %_M_finish.i.i.i136 = getelementptr inbounds i8, ptr %95, i64 80 + %96 = load ptr, ptr %_M_finish.i.i.i136, align 8 + %97 = load ptr, ptr %test_indices_.i.i, align 8 + %cmp11.not.i.i = icmp eq ptr %96, %97 br i1 %cmp11.not.i.i, label %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i, label %for.body.i.i137 for.body.i.i137: ; preds = %for.body.i134, %for.body.i.i137 - %99 = phi ptr [ %101, %for.body.i.i137 ], [ %98, %for.body.i134 ] + %98 = phi ptr [ %100, %for.body.i.i137 ], [ %97, %for.body.i134 ] %i.012.i.i = phi i64 [ %inc.i.i, %for.body.i.i137 ], [ 0, %for.body.i134 ] %conv.i.i138 = trunc i64 %i.012.i.i to i32 - %add.ptr.i.i.i139 = getelementptr inbounds i32, ptr %99, i64 %i.012.i.i + %add.ptr.i.i.i139 = getelementptr inbounds i32, ptr %98, i64 %i.012.i.i store i32 %conv.i.i138, ptr %add.ptr.i.i.i139, align 4 %inc.i.i = add nuw i64 %i.012.i.i, 1 - %100 = load ptr, ptr %_M_finish.i.i.i136, align 8 - %101 = load ptr, ptr %test_indices_.i.i, align 8 - %sub.ptr.lhs.cast.i.i.i140 = ptrtoint ptr %100 to i64 - %sub.ptr.rhs.cast.i.i.i141 = ptrtoint ptr %101 to i64 + %99 = load ptr, ptr %_M_finish.i.i.i136, align 8 + %100 = load ptr, ptr %test_indices_.i.i, align 8 + %sub.ptr.lhs.cast.i.i.i140 = ptrtoint ptr %99 to i64 + %sub.ptr.rhs.cast.i.i.i141 = ptrtoint ptr %100 to i64 %sub.ptr.sub.i.i.i142 = sub i64 %sub.ptr.lhs.cast.i.i.i140, %sub.ptr.rhs.cast.i.i.i141 %sub.ptr.div.i.i.i143 = ashr exact i64 %sub.ptr.sub.i.i.i142, 2 %cmp.i.i = icmp ult i64 %inc.i.i, %sub.ptr.div.i.i.i143 @@ -39011,35 +39010,35 @@ for.body.i.i137: ; preds = %for.body.i134, %for _ZN7testing8TestCase14UnshuffleTestsEv.exit.i: ; preds = %for.body.i.i137, %for.body.i134 %conv.i144 = trunc i64 %i.015.i to i32 - %102 = load ptr, ptr %test_case_indices_.i, align 8 - %add.ptr.i9.i = getelementptr inbounds i32, ptr %102, i64 %i.015.i + %101 = load ptr, ptr %test_case_indices_.i, align 8 + %add.ptr.i9.i = getelementptr inbounds i32, ptr %101, i64 %i.015.i store i32 %conv.i144, ptr %add.ptr.i9.i, align 4 %inc.i = add nuw i64 %i.015.i, 1 - %103 = load ptr, ptr %_M_finish.i.i.i, align 8 - %104 = load ptr, ptr %test_cases_.i, align 8 - %sub.ptr.lhs.cast.i.i145 = ptrtoint ptr %103 to i64 - %sub.ptr.rhs.cast.i.i146 = ptrtoint ptr %104 to i64 + %102 = load ptr, ptr %_M_finish.i.i.i, align 8 + %103 = load ptr, ptr %test_cases_.i, align 8 + %sub.ptr.lhs.cast.i.i145 = ptrtoint ptr %102 to i64 + %sub.ptr.rhs.cast.i.i146 = ptrtoint ptr %103 to i64 %sub.ptr.sub.i.i147 = sub i64 %sub.ptr.lhs.cast.i.i145, %sub.ptr.rhs.cast.i.i146 %sub.ptr.div.i.i148 = ashr exact i64 %sub.ptr.sub.i.i147, 3 %cmp.i149 = icmp ult i64 %inc.i, %sub.ptr.div.i.i148 br i1 %cmp.i149, label %for.body.i134, label %_ZN7testing8internal12UnitTestImpl14UnshuffleTestsEv.exit, !llvm.loop !419 _ZN7testing8internal12UnitTestImpl14UnshuffleTestsEv.exit: ; preds = %_ZN7testing8TestCase14UnshuffleTestsEv.exit.i, %if.end68 - %105 = load i8, ptr @_ZN7testing19FLAGS_gtest_shuffleE, align 1, !range !11, !noundef !12 - %tobool76.not = icmp eq i8 %105, 0 + %104 = load i8, ptr @_ZN7testing19FLAGS_gtest_shuffleE, align 1, !range !11, !noundef !12 + %tobool76.not = icmp eq i8 %104, 0 br i1 %tobool76.not, label %if.end81, label %if.then77 if.then77: ; preds = %_ZN7testing8internal12UnitTestImpl14UnshuffleTestsEv.exit - %106 = load i32, ptr %random_seed_, align 4 - %call79 = tail call noundef i32 @_ZN7testing8internal17GetNextRandomSeedEi(i32 noundef %106) + %105 = load i32, ptr %random_seed_, align 4 + %call79 = tail call noundef i32 @_ZN7testing8internal17GetNextRandomSeedEi(i32 noundef %105) store i32 %call79, ptr %random_seed_, align 4 br label %if.end81 if.end81: ; preds = %if.then77, %_ZN7testing8internal12UnitTestImpl14UnshuffleTestsEv.exit %inc83 = add nuw nsw i32 %i.0161, 1 %cmp30 = icmp ne i32 %inc83, %cond26 - %107 = select i1 %cmp27, i1 true, i1 %cmp30 - br i1 %107, label %for.body, label %for.cond.cleanup.loopexit, !llvm.loop !420 + %106 = select i1 %cmp27, i1 true, i1 %cmp30 + br i1 %106, label %for.body, label %for.cond.cleanup.loopexit, !llvm.loop !420 return: ; preds = %for.cond.cleanup, %if.then14, %if.end, %if.then %retval.1 = phi i1 [ false, %if.then ], [ true, %if.end ], [ true, %if.then14 ], [ %failed.0.lcssa, %for.cond.cleanup ] diff --git a/bench/icu/optimized/parse.ll b/bench/icu/optimized/parse.ll index 72c687dac1a..fbbb452dd85 100644 --- a/bench/icu/optimized/parse.ll +++ b/bench/icu/optimized/parse.ll @@ -3091,28 +3091,27 @@ if.end36: ; preds = %if.end28 call void @llvm.memset.p0.i64(ptr align 2 %call39, i8 0, i64 %conv38, i1 false) %idx.ext = sext i32 %add to i64 %add.ptr = getelementptr inbounds i16, ptr %call39, i64 %idx.ext - %cmp42123 = icmp sgt i32 %call37, -1 - br i1 %cmp42123, label %while.body.lr.ph.split.us, label %while.end119 + %cmp42122 = icmp sgt i32 %call37, -1 + br i1 %cmp42122, label %while.body.lr.ph.split.us, label %while.end119 while.body.lr.ph.split.us: ; preds = %if.end36, %if.end118 - %target.0.ph125 = phi ptr [ %target.5, %if.end118 ], [ %call39, %if.end36 ] - %quoted.0.ph124 = phi i8 [ %quoted.190, %if.end118 ], [ 0, %if.end36 ] + %target.0.ph124 = phi ptr [ %target.5, %if.end118 ], [ %call39, %if.end36 ] + %quoted.0.ph123 = phi i8 [ %quoted.190, %if.end118 ], [ 0, %if.end36 ] %call43.us109 = call i32 @ucbuf_getc(ptr noundef %call31, ptr noundef nonnull %status) %cmp44.us110 = icmp eq i32 %call43.us109, 39 - %tobool46.not.us111 = icmp eq i8 %quoted.0.ph124, 0 - %conv47.us112 = zext i1 %tobool46.not.us111 to i8 - %quoted.1.us113 = select i1 %cmp44.us110, i8 %conv47.us112, i8 %quoted.0.ph124 - %cmp49.us114 = icmp ne i32 %call43.us109, 91 - %tobool50.us115 = icmp ne i8 %quoted.1.us113, 0 - %or.cond.us116 = select i1 %cmp49.us114, i1 true, i1 %tobool50.us115 - br i1 %or.cond.us116, label %if.else66.us, label %do.body.preheader + %conv47.us111 = zext i1 %cmp44.us110 to i8 + %quoted.1.us112 = xor i8 %quoted.0.ph123, %conv47.us111 + %cmp49.us113 = icmp ne i32 %call43.us109, 91 + %tobool50.us114 = icmp ne i8 %quoted.0.ph123, %conv47.us111 + %or.cond.us115 = select i1 %cmp49.us113, i1 true, i1 %tobool50.us114 + br i1 %or.cond.us115, label %if.else66.us, label %while.cond52.preheader if.else66.us: ; preds = %while.body.lr.ph.split.us, %while.cond.backedge.us - %tobool50.us119 = phi i1 [ %tobool50.us, %while.cond.backedge.us ], [ %tobool50.us115, %while.body.lr.ph.split.us ] - %quoted.1.us118 = phi i8 [ %quoted.1.us, %while.cond.backedge.us ], [ %quoted.1.us113, %while.body.lr.ph.split.us ] - %call43.us117 = phi i32 [ %call43.us, %while.cond.backedge.us ], [ %call43.us109, %while.body.lr.ph.split.us ] - %cmp67.us = icmp ne i32 %call43.us117, 35 - %or.cond1.us = select i1 %cmp67.us, i1 true, i1 %tobool50.us119 + %tobool50.us118 = phi i1 [ %tobool50.us, %while.cond.backedge.us ], [ %tobool50.us114, %while.body.lr.ph.split.us ] + %quoted.1.us117 = phi i8 [ %quoted.1.us, %while.cond.backedge.us ], [ %quoted.1.us112, %while.body.lr.ph.split.us ] + %call43.us116 = phi i32 [ %call43.us, %while.cond.backedge.us ], [ %call43.us109, %while.body.lr.ph.split.us ] + %cmp67.us = icmp ne i32 %call43.us116, 35 + %or.cond1.us = select i1 %cmp67.us, i1 true, i1 %tobool50.us118 br i1 %or.cond1.us, label %if.else77.us, label %while.cond71.us while.cond71.us: ; preds = %if.else66.us, %while.body74.us @@ -3127,14 +3126,14 @@ while.body74.us: ; preds = %while.cond71.us br label %while.cond71.us, !llvm.loop !15 if.else77.us: ; preds = %if.else66.us - %cmp78.us = icmp eq i32 %call43.us117, 92 + %cmp78.us = icmp eq i32 %call43.us116, 92 br i1 %cmp78.us, label %if.then79, label %if.else84.us if.else84.us: ; preds = %if.else77.us - br i1 %tobool50.us119, label %if.end97, label %land.lhs.true86.us + br i1 %tobool50.us118, label %if.end97, label %land.lhs.true86.us land.lhs.true86.us: ; preds = %if.else84.us - switch i32 %call43.us117, label %if.end97 [ + switch i32 %call43.us116, label %if.end97 [ i32 32, label %while.cond.backedge.us i32 13, label %while.cond.backedge.us i32 10, label %while.cond.backedge.us @@ -3142,46 +3141,46 @@ land.lhs.true86.us: ; preds = %if.else84.us ] while.cond.backedge.us: ; preds = %while.cond71.us, %while.cond71.us, %land.lhs.true86.us, %land.lhs.true86.us, %land.lhs.true86.us, %land.lhs.true86.us - %quoted.0.be.us = phi i8 [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ %quoted.1.us118, %while.cond71.us ], [ %quoted.1.us118, %while.cond71.us ] + %quoted.0.be.us = phi i8 [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ 0, %land.lhs.true86.us ], [ %quoted.1.us117, %while.cond71.us ], [ %quoted.1.us117, %while.cond71.us ] %call43.us = call i32 @ucbuf_getc(ptr noundef %call31, ptr noundef nonnull %status) %cmp44.us = icmp eq i32 %call43.us, 39 - %tobool46.not.us = icmp eq i8 %quoted.0.be.us, 0 - %conv47.us = zext i1 %tobool46.not.us to i8 - %quoted.1.us = select i1 %cmp44.us, i8 %conv47.us, i8 %quoted.0.be.us + %conv47.us = zext i1 %cmp44.us to i8 + %quoted.1.us = xor i8 %quoted.0.be.us, %conv47.us %cmp49.us = icmp ne i32 %call43.us, 91 - %tobool50.us = icmp ne i8 %quoted.1.us, 0 + %tobool50.us = icmp ne i8 %quoted.0.be.us, %conv47.us %or.cond.us = select i1 %cmp49.us, i1 true, i1 %tobool50.us - br i1 %or.cond.us, label %if.else66.us, label %do.body.preheader + br i1 %or.cond.us, label %if.else66.us, label %while.cond52.preheader -do.body.preheader: ; preds = %while.cond.backedge.us, %while.body.lr.ph.split.us +while.cond52.preheader: ; preds = %while.cond.backedge.us, %while.body.lr.ph.split.us + %.us-phi = phi i8 [ %quoted.1.us112, %while.body.lr.ph.split.us ], [ %quoted.1.us, %while.cond.backedge.us ] br label %do.body -do.body: ; preds = %do.body.preheader, %do.end - %target.2122 = phi ptr [ %incdec.ptr, %do.end ], [ %target.0.ph125, %do.body.preheader ] - %c.0121 = phi i32 [ %call65, %do.end ], [ 91, %do.body.preheader ] - %cmp55 = icmp slt i32 %c.0121, 65536 +do.body: ; preds = %while.cond52.preheader, %do.end + %target.2121 = phi ptr [ %target.0.ph124, %while.cond52.preheader ], [ %incdec.ptr, %do.end ] + %c.0120 = phi i32 [ 91, %while.cond52.preheader ], [ %call65, %do.end ] + %cmp55 = icmp slt i32 %c.0120, 65536 br i1 %cmp55, label %if.then56, label %if.else if.then56: ; preds = %do.body - %conv57 = trunc i32 %c.0121 to i16 + %conv57 = trunc i32 %c.0120 to i16 br label %do.end if.else: ; preds = %do.body - %shr = lshr i32 %c.0121, 10 + %shr = lshr i32 %c.0120, 10 %19 = trunc i32 %shr to i16 %conv59 = add i16 %19, -10304 - %20 = trunc i32 %c.0121 to i16 + %20 = trunc i32 %c.0120 to i16 %21 = and i16 %20, 1023 %conv61 = or disjoint i16 %21, -9216 - %arrayidx62 = getelementptr inbounds i8, ptr %target.2122, i64 2 + %arrayidx62 = getelementptr inbounds i8, ptr %target.2121, i64 2 store i16 %conv61, ptr %arrayidx62, align 2 br label %do.end do.end: ; preds = %if.then56, %if.else %.sink = phi i64 [ 2, %if.then56 ], [ 4, %if.else ] %conv59.sink = phi i16 [ %conv57, %if.then56 ], [ %conv59, %if.else ] - %incdec.ptr = getelementptr inbounds i8, ptr %target.2122, i64 %.sink - store i16 %conv59.sink, ptr %target.2122, align 2 + %incdec.ptr = getelementptr inbounds i8, ptr %target.2121, i64 %.sink + store i16 %conv59.sink, ptr %target.2121, align 2 %call65 = call i32 @ucbuf_getc(ptr noundef %call31, ptr noundef nonnull %status) %cmp53.not = icmp eq i32 %call65, 93 br i1 %cmp53.not, label %if.then102, label %do.body, !llvm.loop !16 @@ -3197,7 +3196,7 @@ if.then82: ; preds = %if.then79 br label %return if.end97: ; preds = %land.lhs.true86.us, %if.else84.us, %if.then79 - %c.1 = phi i32 [ %call80, %if.then79 ], [ %call43.us117, %if.else84.us ], [ %call43.us117, %land.lhs.true86.us ] + %c.1 = phi i32 [ %call80, %if.then79 ], [ %call43.us116, %if.else84.us ], [ %call43.us116, %land.lhs.true86.us ] %cmp98.not = icmp eq i32 %c.1, -1 br i1 %cmp98.not, label %while.end119, label %do.body100 @@ -3206,9 +3205,9 @@ do.body100: ; preds = %if.end97 br i1 %cmp101, label %if.then102, label %if.else105 if.then102: ; preds = %do.end, %do.body100 - %quoted.191 = phi i8 [ %quoted.1.us118, %do.body100 ], [ 0, %do.end ] + %quoted.191 = phi i8 [ %quoted.1.us117, %do.body100 ], [ %.us-phi, %do.end ] %c.18086 = phi i32 [ %c.1, %do.body100 ], [ 93, %do.end ] - %target.48185 = phi ptr [ %target.0.ph125, %do.body100 ], [ %incdec.ptr, %do.end ] + %target.48185 = phi ptr [ %target.0.ph124, %do.body100 ], [ %incdec.ptr, %do.end ] %conv103 = trunc i32 %c.18086 to i16 %incdec.ptr104 = getelementptr inbounds i8, ptr %target.48185, i64 2 store i16 %conv103, ptr %target.48185, align 2 @@ -3218,23 +3217,23 @@ if.else105: ; preds = %do.body100 %shr106 = lshr i32 %c.1, 10 %22 = trunc i32 %shr106 to i16 %conv108 = add i16 %22, -10304 - store i16 %conv108, ptr %target.0.ph125, align 2 + store i16 %conv108, ptr %target.0.ph124, align 2 %23 = trunc i32 %c.1 to i16 %24 = and i16 %23, 1023 %conv112 = or disjoint i16 %24, -9216 - %arrayidx113 = getelementptr inbounds i8, ptr %target.0.ph125, i64 2 + %arrayidx113 = getelementptr inbounds i8, ptr %target.0.ph124, i64 2 store i16 %conv112, ptr %arrayidx113, align 2 - %add.ptr114 = getelementptr inbounds i8, ptr %target.0.ph125, i64 4 + %add.ptr114 = getelementptr inbounds i8, ptr %target.0.ph124, i64 4 br label %if.end118 if.end118: ; preds = %if.else105, %if.then102 - %quoted.190 = phi i8 [ %quoted.191, %if.then102 ], [ %quoted.1.us118, %if.else105 ] + %quoted.190 = phi i8 [ %quoted.191, %if.then102 ], [ %quoted.1.us117, %if.else105 ] %target.5 = phi ptr [ %incdec.ptr104, %if.then102 ], [ %add.ptr114, %if.else105 ] %cmp42 = icmp ult ptr %target.5, %add.ptr br i1 %cmp42, label %while.body.lr.ph.split.us, label %while.end119, !llvm.loop !17 while.end119: ; preds = %if.end97, %if.end118, %if.end36 - %target.0.ph97 = phi ptr [ %call39, %if.end36 ], [ %target.0.ph125, %if.end97 ], [ %target.5, %if.end118 ] + %target.0.ph97 = phi ptr [ %call39, %if.end36 ], [ %target.0.ph124, %if.end97 ], [ %target.5, %if.end118 ] %cmp120 = icmp ult ptr %target.0.ph97, %add.ptr br i1 %cmp120, label %if.then121, label %if.end122 diff --git a/bench/icu/optimized/smpdtfmt.ll b/bench/icu/optimized/smpdtfmt.ll index 99583da3122..5b3661c83d2 100644 --- a/bench/icu/optimized/smpdtfmt.ll +++ b/bench/icu/optimized/smpdtfmt.ll @@ -2421,9 +2421,8 @@ for.body.i: ; preds = %for.inc.i, %for.bod %7 = load i16, ptr %arrayidx.i.i.i, align 2 %.fr.i = freeze i16 %7 %cmp4.i = icmp eq i16 %.fr.i, 39 - %tobool.not.i = icmp eq i8 %inQuote.019.i, 0 - %conv5.i = zext i1 %tobool.not.i to i8 - %spec.select.i = select i1 %cmp4.i, i8 %conv5.i, i8 %inQuote.019.i + %conv5.i = zext i1 %cmp4.i to i8 + %spec.select.i = xor i8 %inQuote.019.i, %conv5.i %cmp7.i = icmp eq i16 %.fr.i, 24180 br i1 %cmp7.i, label %if.then8.i, label %if.end10.i @@ -2433,7 +2432,7 @@ if.then8.i: ; preds = %for.body.i if.end10.i: ; preds = %if.then8.i, %for.body.i %8 = phi i8 [ 1, %if.then8.i ], [ %6, %for.body.i ] - %tobool11.not.i = icmp eq i8 %spec.select.i, 0 + %tobool11.not.i = icmp eq i8 %inQuote.019.i, %conv5.i br i1 %tobool11.not.i, label %if.then12.i, label %for.inc.i if.then12.i: ; preds = %if.end10.i @@ -5159,9 +5158,8 @@ for.body: ; preds = %for.body.lr.ph, %fo %5 = load i16, ptr %arrayidx.i.i, align 2 %.fr = freeze i16 %5 %cmp4 = icmp eq i16 %.fr, 39 - %tobool.not = icmp eq i8 %inQuote.019, 0 - %conv5 = zext i1 %tobool.not to i8 - %spec.select = select i1 %cmp4, i8 %conv5, i8 %inQuote.019 + %conv5 = zext i1 %cmp4 to i8 + %spec.select = xor i8 %inQuote.019, %conv5 %cmp7 = icmp eq i16 %.fr, 24180 br i1 %cmp7, label %if.then8, label %if.end10 @@ -5170,7 +5168,7 @@ if.then8: ; preds = %for.body br label %if.end10 if.end10: ; preds = %if.then8, %for.body - %tobool11.not = icmp eq i8 %spec.select, 0 + %tobool11.not = icmp eq i8 %inQuote.019, %conv5 br i1 %tobool11.not, label %if.then12, label %for.inc if.then12: ; preds = %if.end10 @@ -13594,9 +13592,8 @@ for.body.i: ; preds = %for.inc.i, %for.bod %5 = load i16, ptr %arrayidx.i.i.i, align 2 %.fr.i = freeze i16 %5 %cmp4.i = icmp eq i16 %.fr.i, 39 - %tobool.not.i = icmp eq i8 %inQuote.019.i, 0 - %conv5.i = zext i1 %tobool.not.i to i8 - %spec.select.i = select i1 %cmp4.i, i8 %conv5.i, i8 %inQuote.019.i + %conv5.i = zext i1 %cmp4.i to i8 + %spec.select.i = xor i8 %inQuote.019.i, %conv5.i %cmp7.i = icmp eq i16 %.fr.i, 24180 br i1 %cmp7.i, label %if.then8.i, label %if.end10.i @@ -13605,7 +13602,7 @@ if.then8.i: ; preds = %for.body.i br label %if.end10.i if.end10.i: ; preds = %if.then8.i, %for.body.i - %tobool11.not.i = icmp eq i8 %spec.select.i, 0 + %tobool11.not.i = icmp eq i8 %inQuote.019.i, %conv5.i br i1 %tobool11.not.i, label %if.then12.i, label %for.inc.i if.then12.i: ; preds = %if.end10.i @@ -13654,8 +13651,8 @@ if.then: ; preds = %land.lhs.true6 %fUnion.i.i = getelementptr inbounds i8, ptr %this, i64 424 %8 = load i16, ptr %fUnion.i.i, align 8 %conv2.i14.i = and i16 %8, 1 - %tobool.not.i4 = icmp eq i16 %conv2.i14.i, 0 - br i1 %tobool.not.i4, label %if.else.i, label %if.then.i + %tobool.not.i = icmp eq i16 %conv2.i14.i, 0 + br i1 %tobool.not.i, label %if.else.i, label %if.then.i if.then.i: ; preds = %if.then %fUnion.i5.i = getelementptr inbounds i8, ptr %ref.tmp, i64 8 @@ -13665,12 +13662,12 @@ if.then.i: ; preds = %if.then br i1 %tobool3.i.not, label %if.else.critedge, label %land.rhs if.else.i: ; preds = %if.then - %cmp.i.i.i5 = icmp slt i16 %8, 0 + %cmp.i.i.i4 = icmp slt i16 %8, 0 %10 = ashr i16 %8, 5 - %shr.i.i.i6 = sext i16 %10 to i32 - %fLength.i.i7 = getelementptr inbounds i8, ptr %this, i64 428 - %11 = load i32, ptr %fLength.i.i7, align 4 - %cond.i.i8 = select i1 %cmp.i.i.i5, i32 %11, i32 %shr.i.i.i6 + %shr.i.i.i5 = sext i16 %10 to i32 + %fLength.i.i6 = getelementptr inbounds i8, ptr %this, i64 428 + %11 = load i32, ptr %fLength.i.i6, align 4 + %cond.i.i7 = select i1 %cmp.i.i.i4, i32 %11, i32 %shr.i.i.i5 %fUnion.i.i7.i = getelementptr inbounds i8, ptr %ref.tmp, i64 8 %12 = load i16, ptr %fUnion.i.i7.i, align 8 %cmp.i.i8.i = icmp slt i16 %12, 0 @@ -13681,16 +13678,16 @@ if.else.i: ; preds = %if.then %cond.i11.i = select i1 %cmp.i.i8.i, i32 %14, i32 %shr.i.i9.i %conv2.i1316.i = and i16 %12, 1 %tobool7.not.i = icmp eq i16 %conv2.i1316.i, 0 - %cmp.i = icmp eq i32 %cond.i.i8, %cond.i11.i + %cmp.i = icmp eq i32 %cond.i.i7, %cond.i11.i %or.cond.i = and i1 %tobool7.not.i, %cmp.i br i1 %or.cond.i, label %land.rhs.i, label %if.else.critedge land.rhs.i: ; preds = %if.else.i - %call8.i9 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString8doEqualsERKS0_i(ptr noundef nonnull align 8 dereferenceable(64) %fDateOverride, ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp, i32 noundef %cond.i.i8) + %call8.i8 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString8doEqualsERKS0_i(ptr noundef nonnull align 8 dereferenceable(64) %fDateOverride, ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp, i32 noundef %cond.i.i7) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %land.rhs.i - %tobool9.i.not = icmp eq i8 %call8.i9, 0 + %tobool9.i.not = icmp eq i8 %call8.i8, 0 br i1 %tobool9.i.not, label %if.else.critedge, label %land.rhs land.rhs: ; preds = %if.then.i, %invoke.cont @@ -13726,8 +13723,8 @@ if.else.critedge: ; preds = %if.else.i, %if.then if.else: ; preds = %if.else.critedge, %land.rhs %18 = load i16, ptr %fUnion.i.i, align 8 - %conv2.i14 = and i16 %18, 1 - %tobool19.not = icmp eq i16 %conv2.i14, 0 + %conv2.i13 = and i16 %18, 1 + %tobool19.not = icmp eq i16 %conv2.i13, 0 %19 = load i8, ptr %fHasHanYearChar.i, align 2 %tobool22.not = icmp eq i8 %19, 0 %or.cond = select i1 %tobool19.not, i1 true, i1 %tobool22.not @@ -13742,8 +13739,8 @@ if.then23: ; preds = %if.else if.then26: ; preds = %if.then23 %call.i = call noalias dereferenceable_or_null(304) ptr @uprv_malloc_75(i64 noundef 304) #22 - %cmp.i10 = icmp eq ptr %call.i, null - br i1 %cmp.i10, label %_ZN6icu_75L27allocSharedNumberFormattersEv.exit, label %for.body.preheader.i + %cmp.i9 = icmp eq ptr %call.i, null + br i1 %cmp.i9, label %_ZN6icu_75L27allocSharedNumberFormattersEv.exit, label %for.body.preheader.i for.body.preheader.i: ; preds = %if.then26 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %call.i, i8 0, i64 304, i1 false) @@ -13774,8 +13771,8 @@ if.then32: ; preds = %if.end29 invoke.cont40: ; preds = %if.then32 %24 = load i32, ptr %status, align 4 - %cmp.i12 = icmp sgt i32 %24, 0 - br i1 %cmp.i12, label %if.end54, label %if.then45 + %cmp.i11 = icmp sgt i32 %24, 0 + br i1 %cmp.i11, label %if.end54, label %if.then45 if.then45: ; preds = %invoke.cont40 %call47 = invoke noundef i32 @_ZN6icu_7517DateFormatSymbols19getPatternCharIndexEDs(i16 noundef zeroext 121) diff --git a/bench/icu/optimized/ucmstate.ll b/bench/icu/optimized/ucmstate.ll index bf999ffc5a8..8036a79c56e 100644 --- a/bench/icu/optimized/ucmstate.ll +++ b/bench/icu/optimized/ucmstate.ll @@ -1342,7 +1342,7 @@ for.body13.i: ; preds = %for.body13.i, %for. %trailState.0179.i = phi i32 [ 0, %for.body13.preheader.i ], [ %spec.select.i, %for.body13.i ] %arrayidx15.i = getelementptr inbounds [256 x i16], ptr %count.i, i64 0, i64 %indvars.iv232.i %8 = load i16, ptr %arrayidx15.i, align 2 - %idxprom17.i = sext i32 %trailState.0179.i to i64 + %idxprom17.i = zext nneg i32 %trailState.0179.i to i64 %arrayidx18.i = getelementptr inbounds [256 x i16], ptr %count.i, i64 0, i64 %idxprom17.i %9 = load i16, ptr %arrayidx18.i, align 2 %cmp20.i = icmp ugt i16 %8, %9 @@ -1539,7 +1539,6 @@ do.body.i: ; preds = %if.end107.i %idxprom123.i = sext i32 %31 to i64 %arrayidx124.i = getelementptr inbounds [128 x i32], ptr %stateFlags.i, i64 0, i64 %idxprom123.i store i32 0, ptr %arrayidx124.i, align 4 - %idxprom129.i = sext i32 %trailState.0.lcssa.i to i64 br label %for.body127.i for.cond153.preheader.i: ; preds = %for.body127.i @@ -1548,7 +1547,7 @@ for.cond153.preheader.i: ; preds = %for.body127.i for.body127.i: ; preds = %for.body127.i, %do.body.i %indvars.iv240.i = phi i64 [ 0, %do.body.i ], [ %indvars.iv.next241.i, %for.body127.i ] - %arrayidx132.i = getelementptr inbounds [128 x [256 x i32]], ptr %states, i64 0, i64 %idxprom129.i, i64 %indvars.iv240.i + %arrayidx132.i = getelementptr inbounds [128 x [256 x i32]], ptr %states, i64 0, i64 %idxprom43.i, i64 %indvars.iv240.i %32 = load i32, ptr %arrayidx132.i, align 4 %33 = and i32 %32, 14680064 %switch.i = icmp eq i32 %33, 4194304 diff --git a/bench/jemalloc/optimized/decay.ll b/bench/jemalloc/optimized/decay.ll index 12bbedc599e..e431bdbf6e1 100644 --- a/bench/jemalloc/optimized/decay.ll +++ b/bench/jemalloc/optimized/decay.ll @@ -389,18 +389,13 @@ while.body: ; preds = %while.cond.preheade %npurge_lb.079 = phi i64 [ %npurge_lb.0.call28, %decay_npurge_after_interval.exit71 ], [ %shr.i, %while.cond.preheader ] %ub.078 = phi i64 [ %div32.ub.0, %decay_npurge_after_interval.exit71 ], [ 200, %while.cond.preheader ] %lb.077 = phi i64 [ %lb.0.div32, %decay_npurge_after_interval.exit71 ], [ 2, %while.cond.preheader ] - %add27 = add i64 %ub.078, %lb.077 + %add27 = add nuw i64 %ub.078, %lb.077 %div32 = lshr i64 %add27, 1 - %cmp13.not.i = icmp ult i64 %add27, 2 - br i1 %cmp13.not.i, label %for.body4.i59.preheader, label %for.body.i47 - -for.body4.i59.preheader: ; preds = %for.cond2.preheader.i56, %while.body - %sum.119.i60.ph = phi i64 [ 0, %while.body ], [ %add.i53, %for.cond2.preheader.i56 ] - br label %for.body4.i59 + br label %for.body.i47 for.cond2.preheader.i56: ; preds = %for.body.i47 %cmp317.i = icmp ult i64 %add27, 400 - br i1 %cmp317.i, label %for.body4.i59.preheader, label %decay_npurge_after_interval.exit71 + br i1 %cmp317.i, label %for.body4.i59, label %decay_npurge_after_interval.exit71 for.body.i47: ; preds = %while.body, %for.body.i47 %sum.015.i48 = phi i64 [ %add.i53, %for.body.i47 ], [ 0, %while.body ] @@ -415,9 +410,9 @@ for.body.i47: ; preds = %while.body, %for.bo %exitcond.not.i55 = icmp eq i64 %inc.i54, %div32 br i1 %exitcond.not.i55, label %for.cond2.preheader.i56, label %for.body.i47, !llvm.loop !9 -for.body4.i59: ; preds = %for.body4.i59.preheader, %for.body4.i59 - %sum.119.i60 = phi i64 [ %add11.i68, %for.body4.i59 ], [ %sum.119.i60.ph, %for.body4.i59.preheader ] - %i.118.i61 = phi i64 [ %inc13.i69, %for.body4.i59 ], [ %div32, %for.body4.i59.preheader ] +for.body4.i59: ; preds = %for.cond2.preheader.i56, %for.body4.i59 + %sum.119.i60 = phi i64 [ %add11.i68, %for.body4.i59 ], [ %add.i53, %for.cond2.preheader.i56 ] + %i.118.i61 = phi i64 [ %inc13.i69, %for.body4.i59 ], [ %div32, %for.cond2.preheader.i56 ] %arrayidx6.i62 = getelementptr inbounds [200 x i64], ptr %backlog.i, i64 0, i64 %i.118.i61 %11 = load i64, ptr %arrayidx6.i62, align 8 %arrayidx7.i63 = getelementptr inbounds [200 x i64], ptr @h_steps, i64 0, i64 %i.118.i61 @@ -442,13 +437,13 @@ decay_npurge_after_interval.exit71: ; preds = %for.body4.i59, %for %call28.npurge_ub.0 = select i1 %cmp29, i64 %shr.i57, i64 %npurge_ub.080 %add = add nuw nsw i64 %npurge_lb.0.call28, %npages_threshold %cmp24 = icmp ult i64 %add, %call28.npurge_ub.0 - %add25 = add i64 %lb.0.div32, 2 + %add25 = add nuw i64 %lb.0.div32, 2 %cmp26 = icmp ult i64 %add25, %div32.ub.0 - %14 = and i1 %cmp24, %cmp26 + %14 = select i1 %cmp24, i1 %cmp26, i1 false br i1 %14, label %while.body, label %while.end.loopexit, !llvm.loop !11 while.end.loopexit: ; preds = %decay_npurge_after_interval.exit71 - %15 = add i64 %div32.ub.0, %lb.0.div32 + %15 = add nuw i64 %div32.ub.0, %lb.0.div32 br label %while.end while.end: ; preds = %while.end.loopexit, %while.cond.preheader diff --git a/bench/libquic/optimized/exponentiation.c.ll b/bench/libquic/optimized/exponentiation.c.ll index f392ff47fb9..a88d8fd6d5d 100644 --- a/bench/libquic/optimized/exponentiation.c.ll +++ b/bench/libquic/optimized/exponentiation.c.ll @@ -319,7 +319,6 @@ for.cond83.preheader.i: ; preds = %if.end77.i for.cond83.outer.i: ; preds = %if.end133.i, %for.cond83.preheader.i %wstart.0.ph.i = phi i32 [ %sub78.i, %for.cond83.preheader.i ], [ %sub135.i, %if.end133.i ] %tobool87.not.i = phi i1 [ false, %for.cond83.preheader.i ], [ true, %if.end133.i ] - %tobool115.not.i = phi i1 [ true, %for.cond83.preheader.i ], [ false, %if.end133.i ] %call8496.i = call i32 @BN_is_bit_set(ptr noundef %p, i32 noundef %wstart.0.ph.i) #7 %cmp8597.i = icmp eq i32 %call8496.i, 0 br i1 %cmp8597.i, label %if.then86.lr.ph.i, label %for.cond98.preheader.i @@ -389,17 +388,15 @@ for.end114.i: ; preds = %for.end114.loopexit %wvalue.0.lcssa.i = phi i64 [ 0, %for.cond98.preheader.i ], [ %9, %for.end114.loopexit.i ] %wend.0.lcssa.i = phi i32 [ 0, %for.cond98.preheader.i ], [ %wend.0.lcssa.ph.i, %for.end114.loopexit.i ] %add.neg.i = xor i32 %wend.0.lcssa.i, -1 - %cmp118.not108.i = icmp slt i32 %wend.0.lcssa.i, 0 - %or.cond110.i = select i1 %tobool115.not.i, i1 true, i1 %cmp118.not108.i - br i1 %or.cond110.i, label %if.end127.i, label %for.body119.i + br i1 %tobool87.not.i, label %for.body119.i, label %if.end127.i for.cond117.i: ; preds = %for.body119.i - %inc125.i = add nuw i32 %i.2109.i, 1 - %exitcond119.not.i = icmp eq i32 %i.2109.i, %wend.0.lcssa.i - br i1 %exitcond119.not.i, label %if.end127.i, label %for.body119.i, !llvm.loop !11 + %inc125.i = add nuw i32 %i.2108.i, 1 + %exitcond117.not.i = icmp eq i32 %i.2108.i, %wend.0.lcssa.i + br i1 %exitcond117.not.i, label %if.end127.i, label %for.body119.i, !llvm.loop !11 for.body119.i: ; preds = %for.end114.i, %for.cond117.i - %i.2109.i = phi i32 [ %inc125.i, %for.cond117.i ], [ 0, %for.end114.i ] + %i.2108.i = phi i32 [ %inc125.i, %for.cond117.i ], [ 0, %for.end114.i ] %call120.i = call fastcc i32 @BN_mod_mul_reciprocal(ptr noundef %r, ptr noundef %r, ptr noundef %r, ptr noundef %recp.i, ptr noundef %ctx) %tobool121.not.i = icmp eq i32 %call120.i, 0 br i1 %tobool121.not.i, label %err.i, label %for.cond117.i @@ -871,16 +868,16 @@ for.body112.preheader: ; preds = %if.end102 br label %for.body112 for.body112: ; preds = %for.body112.preheader, %for.body112 - %indvars.iv145 = phi i64 [ 1, %for.body112.preheader ], [ %indvars.iv.next146, %for.body112 ] + %indvars.iv143 = phi i64 [ 1, %for.body112.preheader ], [ %indvars.iv.next144, %for.body112 ] %12 = load ptr, ptr %m, align 8 - %arrayidx115 = getelementptr inbounds i64, ptr %12, i64 %indvars.iv145 + %arrayidx115 = getelementptr inbounds i64, ptr %12, i64 %indvars.iv143 %13 = load i64, ptr %arrayidx115, align 8 %not = xor i64 %13, -1 %14 = load ptr, ptr %call15, align 8 - %arrayidx119 = getelementptr inbounds i64, ptr %14, i64 %indvars.iv145 + %arrayidx119 = getelementptr inbounds i64, ptr %14, i64 %indvars.iv143 store i64 %not, ptr %arrayidx119, align 8 - %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next146, %wide.trip.count + %indvars.iv.next144 = add nuw nsw i64 %indvars.iv143, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next144, %wide.trip.count br i1 %exitcond.not, label %for.end122, label %for.body112, !llvm.loop !14 for.end122: ; preds = %for.body112, %if.end102 @@ -902,7 +899,6 @@ if.end130: ; preds = %if.else124, %for.en for.cond131.outer: ; preds = %if.end184, %if.end130 %wstart.0.ph = phi i32 [ %sub186, %if.end184 ], [ %sub91, %if.end130 ] %tobool136.not = phi i1 [ true, %if.end184 ], [ false, %if.end130 ] - %tobool165.not = phi i1 [ false, %if.end184 ], [ true, %if.end130 ] %call132123 = tail call i32 @BN_is_bit_set(ptr noundef %p, i32 noundef %wstart.0.ph) #7 %cmp133124 = icmp eq i32 %call132123, 0 br i1 %cmp133124, label %if.then135.lr.ph, label %for.cond146.preheader @@ -958,8 +954,8 @@ if.end154: ; preds = %for.body149 %wvalue.1 = select i1 %tobool157.not, i32 %wvalue.0128, i32 %or %wend.1 = select i1 %tobool157.not, i32 %wend.0129, i32 %i.2127 %inc163 = add nuw nsw i32 %i.2127, 1 - %exitcond148.not = icmp eq i32 %inc163, %cond67110 - br i1 %exitcond148.not, label %for.end164.loopexit, label %for.body149, !llvm.loop !15 + %exitcond146.not = icmp eq i32 %inc163, %cond67110 + br i1 %exitcond146.not, label %for.end164.loopexit, label %for.body149, !llvm.loop !15 for.end164.loopexit: ; preds = %for.body149, %if.end154 %wvalue.0.lcssa.ph = phi i32 [ %wvalue.1, %if.end154 ], [ %wvalue.0128, %for.body149 ] @@ -972,17 +968,15 @@ for.end164: ; preds = %for.end164.loopexit %wvalue.0.lcssa = phi i64 [ 0, %for.cond146.preheader ], [ %16, %for.end164.loopexit ] %wend.0.lcssa = phi i32 [ 0, %for.cond146.preheader ], [ %wend.0.lcssa.ph, %for.end164.loopexit ] %add.neg = xor i32 %wend.0.lcssa, -1 - %cmp168.not134 = icmp slt i32 %wend.0.lcssa, 0 - %or.cond136 = select i1 %tobool165.not, i1 true, i1 %cmp168.not134 - br i1 %or.cond136, label %if.end178, label %for.body170 + br i1 %tobool136.not, label %for.body170, label %if.end178 for.cond167: ; preds = %for.body170 - %inc176 = add nuw i32 %i.3135, 1 - %exitcond149.not = icmp eq i32 %i.3135, %wend.0.lcssa - br i1 %exitcond149.not, label %if.end178, label %for.body170, !llvm.loop !16 + %inc176 = add nuw i32 %i.3134, 1 + %exitcond147.not = icmp eq i32 %i.3134, %wend.0.lcssa + br i1 %exitcond147.not, label %if.end178, label %for.body170, !llvm.loop !16 for.body170: ; preds = %for.end164, %for.cond167 - %i.3135 = phi i32 [ %inc176, %for.cond167 ], [ 0, %for.end164 ] + %i.3134 = phi i32 [ %inc176, %for.cond167 ], [ 0, %for.end164 ] %call171 = tail call i32 @BN_mod_mul_montgomery(ptr noundef nonnull %call15, ptr noundef nonnull %call15, ptr noundef nonnull %call15, ptr noundef nonnull %mont.addr.0, ptr noundef %ctx) #7 %tobool172.not = icmp eq i32 %call171, 0 br i1 %tobool172.not, label %err, label %for.cond167 diff --git a/bench/libquic/optimized/reliable_quic_stream.cc.ll b/bench/libquic/optimized/reliable_quic_stream.cc.ll index 90f810d1e73..a2ec773f858 100644 --- a/bench/libquic/optimized/reliable_quic_stream.cc.ll +++ b/bench/libquic/optimized/reliable_quic_stream.cc.ll @@ -1149,7 +1149,7 @@ while.body.lr.ph: ; preds = %entry br label %while.body while.body: ; preds = %while.body.lr.ph, %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit - %1 = phi ptr [ %0, %while.body.lr.ph ], [ %21, %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit ] + %1 = phi ptr [ %0, %while.body.lr.ph ], [ %19, %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit ] %fin.022 = phi i8 [ 0, %while.body.lr.ph ], [ %fin.1, %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit ] %_M_storage.i.i.i = getelementptr inbounds i8, ptr %1, i64 16 %ack_listener4 = getelementptr inbounds i8, ptr %1, i64 56 @@ -1220,57 +1220,53 @@ if.end32: ; preds = %land.lhs.true9, %wh %sub41 = sub i64 %12, %11 store i64 %sub41, ptr %queued_data_bytes_, align 8 %cmp43 = icmp eq i64 %11, %sub - br i1 %cmp43, label %land.lhs.true44, label %if.else - -land.lhs.true44: ; preds = %if.end32 %13 = extractvalue { i64, i8 } %call40, 1 - %14 = xor i8 %13, %fin.1 - %15 = and i8 %14, 1 - %cmp48 = icmp eq i8 %15, 0 - br i1 %cmp48, label %if.then49, label %if.else - -if.then49: ; preds = %land.lhs.true44 - %16 = load ptr, ptr %queued_data_, align 8 - %17 = load i64, ptr %_M_size.i.i.i, align 8 - %sub.i.i.i = add i64 %17, -1 + %.masked = and i8 %13, 1 + %cmp48 = icmp eq i8 %fin.1, %.masked + %or.cond = select i1 %cmp43, i1 %cmp48, i1 false + br i1 %or.cond, label %if.then49, label %if.else + +if.then49: ; preds = %if.end32 + %14 = load ptr, ptr %queued_data_, align 8 + %15 = load i64, ptr %_M_size.i.i.i, align 8 + %sub.i.i.i = add i64 %15, -1 store i64 %sub.i.i.i, ptr %_M_size.i.i.i, align 8 - call void @_ZNSt8__detail15_List_node_base9_M_unhookEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #16 - %ack_listener.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 56 - %18 = load ptr, ptr %ack_listener.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i = icmp eq ptr %18, null + call void @_ZNSt8__detail15_List_node_base9_M_unhookEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #16 + %ack_listener.i.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 56 + %16 = load ptr, ptr %ack_listener.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i = icmp eq ptr %16, null br i1 %tobool.not.i.i.i.i.i.i, label %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit, label %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %if.then49 - %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %18, i64 8 - %19 = load i32, ptr %add.ptr.i.i.i.i.i.i.i, align 4 - %dec.i.i.i.i.i.i.i.i.i = add nsw i32 %19, -1 + %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 8 + %17 = load i32, ptr %add.ptr.i.i.i.i.i.i.i, align 4 + %dec.i.i.i.i.i.i.i.i.i = add nsw i32 %17, -1 store i32 %dec.i.i.i.i.i.i.i.i.i, ptr %add.ptr.i.i.i.i.i.i.i, align 4 %cmp.i.i.i.i.i.i.i.i.i = icmp eq i32 %dec.i.i.i.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i.i.i.i, label %delete.notnull.i.i.i.i.i.i.i.i, label %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit delete.notnull.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i - %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %18, align 8 + %vtable.i.i.i.i.i.i.i.i = load ptr, ptr %16, align 8 %vfn.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i, i64 24 - %20 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8 - call void %20(ptr noundef nonnull align 8 dereferenceable(12) %18) #16 + %18 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i, align 8 + call void %18(ptr noundef nonnull align 8 dereferenceable(12) %16) #16 br label %_ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit _ZNSt7__cxx114listIN3net18ReliableQuicStream11PendingDataESaIS3_EE9pop_frontEv.exit: ; preds = %if.then49, %if.then.i.i.i.i.i.i, %delete.notnull.i.i.i.i.i.i.i.i - %_M_storage.i.i.i18 = getelementptr inbounds i8, ptr %16, i64 16 + %_M_storage.i.i.i18 = getelementptr inbounds i8, ptr %14, i64 16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(48) %_M_storage.i.i.i18) #16 - call void @_ZdlPv(ptr noundef nonnull %16) #17 - %21 = load ptr, ptr %queued_data_, align 8 - %cmp.i = icmp eq ptr %21, %queued_data_ + call void @_ZdlPv(ptr noundef nonnull %14) #17 + %19 = load ptr, ptr %queued_data_, align 8 + %cmp.i = icmp eq ptr %19, %queued_data_ br i1 %cmp.i, label %while.end, label %while.body, !llvm.loop !8 -if.else: ; preds = %land.lhs.true44, %if.end32 - %.lcssa = phi i64 [ %sub, %land.lhs.true44 ], [ %11, %if.end32 ] - %cmp52.not = icmp eq i64 %.lcssa, 0 +if.else: ; preds = %if.end32 + %cmp52.not = icmp eq i64 %11, 0 br i1 %cmp52.not, label %while.end, label %if.then53 if.then53: ; preds = %if.else - %22 = load i64, ptr %offset, align 8 - %add = add i64 %22, %.lcssa + %20 = load i64, ptr %offset, align 8 + %add = add i64 %20, %11 store i64 %add, ptr %offset, align 8 br label %while.end diff --git a/bench/libwebp/optimized/quant_levels_utils.c.ll b/bench/libwebp/optimized/quant_levels_utils.c.ll index 29a795dc495..9f839b3d654 100644 --- a/bench/libwebp/optimized/quant_levels_utils.c.ll +++ b/bench/libwebp/optimized/quant_levels_utils.c.ll @@ -19,7 +19,7 @@ define hidden range(i32 0, 2) i32 @QuantizeLevels(ptr noundef %0, i32 noundef %1 %14 = uitofp i64 %13 to double %15 = fmul double %14, 1.000000e-04 %16 = icmp eq ptr %0, null - br i1 %16, label %126, label %17 + br i1 %16, label %125, label %17 17: ; preds = %5 %18 = icmp slt i32 %1, 1 @@ -28,7 +28,7 @@ define hidden range(i32 0, 2) i32 @QuantizeLevels(ptr noundef %0, i32 noundef %1 %20 = add i32 %3, -257 %or.cond3 = icmp ult i32 %20, -255 %or.cond132 = or i1 %or.cond, %or.cond3 - br i1 %or.cond132, label %126, label %.preheader137 + br i1 %or.cond132, label %125, label %.preheader137 .preheader137: ; preds = %17 %.not170 = icmp eq i32 %12, 0 @@ -48,8 +48,8 @@ define hidden range(i32 0, 2) i32 @QuantizeLevels(ptr noundef %0, i32 noundef %1 %27 = zext i1 %26 to i32 %28 = add nuw nsw i32 %.0119138, %27 %29 = zext i8 %22 to i32 - %spec.select = tail call i32 @llvm.smin.i32(i32 %.0105141, i32 %29) - %.1107 = tail call i32 @llvm.smax.i32(i32 %.0106140, i32 %29) + %spec.select = tail call i32 @llvm.umin.i32(i32 %.0105141, i32 %29) + %.1107 = tail call i32 @llvm.umax.i32(i32 %.0106140, i32 %29) %30 = add nsw i32 %25, 1 store i32 %30, ptr %24, align 4 %31 = add nuw i64 %.0112139, 1 @@ -101,183 +101,185 @@ define hidden range(i32 0, 2) i32 @QuantizeLevels(ptr noundef %0, i32 noundef %1 %47 = zext nneg i32 %.0106.lcssa to i64 %48 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %47 store i32 %.pre-phi, ptr %48, align 4 - %.not128147 = icmp sgt i32 %.0105.lcssa, %.0106.lcssa + %.not128147 = icmp samesign ugt i32 %.0105.lcssa, %.0106.lcssa %49 = icmp slt i32 %3, 3 %50 = sext i32 %.pre-phi to i64 - %51 = zext nneg i32 %.0105.lcssa to i64 - %52 = add nuw nsw i32 %.0106.lcssa, 1 - %wide.trip.count185 = zext i32 %.pre-phi to i64 - br label %53 + %51 = add nuw nsw i32 %.0106.lcssa, 1 + %wide.trip.count181 = zext nneg i32 %51 to i64 + %wide.trip.count186 = zext i32 %.pre-phi to i64 + %wide.trip.count191 = zext nneg i32 %51 to i64 + br label %52 -53: ; preds = %._crit_edge158, %._crit_edge146 +52: ; preds = %._crit_edge158, %._crit_edge146 %.0117161 = phi double [ 0x47D2CED32A16A1B1, %._crit_edge146 ], [ %.3.lcssa, %._crit_edge158 ] - %.0118160 = phi i32 [ 0, %._crit_edge146 ], [ %108, %._crit_edge158 ] + %.0118160 = phi i32 [ 0, %._crit_edge146 ], [ %107, %._crit_edge158 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %9, i8 0, i64 2048, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2048) %10, i8 0, i64 2048, i1 false) br i1 %.not128147, label %._crit_edge150, label %.preheader133 -.preheader133: ; preds = %53, %82 - %indvars.iv178 = phi i64 [ %indvars.iv.next179, %82 ], [ %51, %53 ] - %.0108149 = phi i32 [ %.1109.lcssa, %82 ], [ 0, %53 ] +.preheader133: ; preds = %52, %81 + %indvars.iv178 = phi i64 [ %indvars.iv.next179, %81 ], [ %45, %52 ] + %.0108149 = phi i32 [ %.1109.lcssa, %81 ], [ 0, %52 ] %indvars.iv178.tr = trunc i64 %indvars.iv178 to i32 - %54 = shl i32 %indvars.iv178.tr, 1 - %55 = sitofp i32 %54 to double - %56 = sext i32 %.0108149 to i64 + %53 = shl i32 %indvars.iv178.tr, 1 + %54 = uitofp nneg i32 %53 to double + %55 = sext i32 %.0108149 to i64 %smax = tail call i32 @llvm.smax.i32(i32 %.0108149, i32 %.pre-phi) - br label %57 + br label %56 -57: ; preds = %.preheader133, %59 - %indvars.iv175 = phi i64 [ %56, %.preheader133 ], [ %indvars.iv.next176, %59 ] - %58 = icmp slt i64 %indvars.iv175, %50 - br i1 %58, label %59, label %.critedge +56: ; preds = %.preheader133, %58 + %indvars.iv175 = phi i64 [ %55, %.preheader133 ], [ %indvars.iv.next176, %58 ] + %57 = icmp slt i64 %indvars.iv175, %50 + br i1 %57, label %58, label %.critedge -59: ; preds = %57 - %60 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv175 - %61 = load double, ptr %60, align 8 +58: ; preds = %56 + %59 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv175 + %60 = load double, ptr %59, align 8 %indvars.iv.next176 = add nsw i64 %indvars.iv175, 1 - %62 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv.next176 - %63 = load double, ptr %62, align 8 - %64 = fadd double %61, %63 - %65 = fcmp olt double %64, %55 - br i1 %65, label %57, label %.critedge.split.loop.exit201, !llvm.loop !7 - -.critedge.split.loop.exit201: ; preds = %59 - %66 = trunc nsw i64 %indvars.iv175 to i32 + %61 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv.next176 + %62 = load double, ptr %61, align 8 + %63 = fadd double %60, %62 + %64 = fcmp olt double %63, %54 + br i1 %64, label %56, label %.critedge.split.loop.exit202, !llvm.loop !7 + +.critedge.split.loop.exit202: ; preds = %58 + %65 = trunc nsw i64 %indvars.iv175 to i32 br label %.critedge -.critedge: ; preds = %57, %.critedge.split.loop.exit201 - %.1109.lcssa = phi i32 [ %66, %.critedge.split.loop.exit201 ], [ %smax, %57 ] - %67 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %indvars.iv178 - %68 = load i32, ptr %67, align 4 - %69 = icmp sgt i32 %68, 0 - br i1 %69, label %70, label %82 - -70: ; preds = %.critedge - %71 = trunc nsw i64 %indvars.iv178 to i32 - %72 = mul nsw i32 %68, %71 - %73 = sitofp i32 %72 to double - %74 = sext i32 %.1109.lcssa to i64 - %75 = getelementptr inbounds [256 x double], ptr %9, i64 0, i64 %74 - %76 = load double, ptr %75, align 8 - %77 = fadd double %76, %73 - store double %77, ptr %75, align 8 - %78 = uitofp nneg i32 %68 to double - %79 = getelementptr inbounds [256 x double], ptr %10, i64 0, i64 %74 - %80 = load double, ptr %79, align 8 - %81 = fadd double %80, %78 - store double %81, ptr %79, align 8 - br label %82 - -82: ; preds = %70, %.critedge - %83 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv178 - store i32 %.1109.lcssa, ptr %83, align 4 +.critedge: ; preds = %56, %.critedge.split.loop.exit202 + %.1109.lcssa = phi i32 [ %65, %.critedge.split.loop.exit202 ], [ %smax, %56 ] + %66 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %indvars.iv178 + %67 = load i32, ptr %66, align 4 + %68 = icmp sgt i32 %67, 0 + br i1 %68, label %69, label %81 + +69: ; preds = %.critedge + %70 = trunc nuw nsw i64 %indvars.iv178 to i32 + %71 = mul nuw nsw i32 %67, %70 + %72 = sitofp i32 %71 to double + %73 = sext i32 %.1109.lcssa to i64 + %74 = getelementptr inbounds [256 x double], ptr %9, i64 0, i64 %73 + %75 = load double, ptr %74, align 8 + %76 = fadd double %75, %72 + store double %76, ptr %74, align 8 + %77 = uitofp nneg i32 %67 to double + %78 = getelementptr inbounds [256 x double], ptr %10, i64 0, i64 %73 + %79 = load double, ptr %78, align 8 + %80 = fadd double %79, %77 + store double %80, ptr %78, align 8 + br label %81 + +81: ; preds = %69, %.critedge + %82 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv178 + store i32 %.1109.lcssa, ptr %82, align 4 %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next179 to i32 - %exitcond181.not = icmp eq i32 %52, %lftr.wideiv - br i1 %exitcond181.not, label %._crit_edge150, label %.preheader133, !llvm.loop !8 + %exitcond182.not = icmp eq i64 %indvars.iv.next179, %wide.trip.count181 + br i1 %exitcond182.not, label %._crit_edge150, label %.preheader133, !llvm.loop !8 -._crit_edge150: ; preds = %82, %53 +._crit_edge150: ; preds = %81, %52 br i1 %49, label %.loopexit135, label %.lr.ph152 -.lr.ph152: ; preds = %._crit_edge150, %92 - %indvars.iv182 = phi i64 [ %indvars.iv.next183, %92 ], [ 1, %._crit_edge150 ] - %84 = getelementptr inbounds [256 x double], ptr %10, i64 0, i64 %indvars.iv182 - %85 = load double, ptr %84, align 8 - %86 = fcmp ogt double %85, 0.000000e+00 - br i1 %86, label %87, label %92 - -87: ; preds = %.lr.ph152 - %88 = getelementptr inbounds [256 x double], ptr %9, i64 0, i64 %indvars.iv182 - %89 = load double, ptr %88, align 8 - %90 = fdiv double %89, %85 - %91 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv182 - store double %90, ptr %91, align 8 - br label %92 - -92: ; preds = %.lr.ph152, %87 - %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %exitcond186.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count185 - br i1 %exitcond186.not, label %.loopexit135, label %.lr.ph152, !llvm.loop !9 - -.loopexit135: ; preds = %92, %._crit_edge150 +.lr.ph152: ; preds = %._crit_edge150, %91 + %indvars.iv183 = phi i64 [ %indvars.iv.next184, %91 ], [ 1, %._crit_edge150 ] + %83 = getelementptr inbounds [256 x double], ptr %10, i64 0, i64 %indvars.iv183 + %84 = load double, ptr %83, align 8 + %85 = fcmp ogt double %84, 0.000000e+00 + br i1 %85, label %86, label %91 + +86: ; preds = %.lr.ph152 + %87 = getelementptr inbounds [256 x double], ptr %9, i64 0, i64 %indvars.iv183 + %88 = load double, ptr %87, align 8 + %89 = fdiv double %88, %84 + %90 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %indvars.iv183 + store double %89, ptr %90, align 8 + br label %91 + +91: ; preds = %.lr.ph152, %86 + %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1 + %exitcond187.not = icmp eq i64 %indvars.iv.next184, %wide.trip.count186 + br i1 %exitcond187.not, label %.loopexit135, label %.lr.ph152, !llvm.loop !9 + +.loopexit135: ; preds = %91, %._crit_edge150 br i1 %.not128147, label %._crit_edge158, label %.lr.ph157 .lr.ph157: ; preds = %.loopexit135, %.lr.ph157 - %indvars.iv187 = phi i64 [ %indvars.iv.next188, %.lr.ph157 ], [ %51, %.loopexit135 ] - %.3154 = phi double [ %105, %.lr.ph157 ], [ 0.000000e+00, %.loopexit135 ] - %93 = trunc nsw i64 %indvars.iv187 to i32 - %94 = sitofp i32 %93 to double - %95 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv187 - %96 = load i32, ptr %95, align 4 - %97 = sext i32 %96 to i64 - %98 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %97 - %99 = load double, ptr %98, align 8 - %100 = fsub double %94, %99 - %101 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %indvars.iv187 - %102 = load i32, ptr %101, align 4 - %103 = sitofp i32 %102 to double - %104 = fmul double %100, %103 - %105 = tail call double @llvm.fmuladd.f64(double %104, double %100, double %.3154) - %indvars.iv.next188 = add nuw nsw i64 %indvars.iv187, 1 - %lftr.wideiv190 = trunc i64 %indvars.iv.next188 to i32 - %exitcond191.not = icmp eq i32 %52, %lftr.wideiv190 - br i1 %exitcond191.not, label %._crit_edge158, label %.lr.ph157, !llvm.loop !10 + %indvars.iv188 = phi i64 [ %indvars.iv.next189, %.lr.ph157 ], [ %45, %.loopexit135 ] + %.3154 = phi double [ %104, %.lr.ph157 ], [ 0.000000e+00, %.loopexit135 ] + %92 = trunc nuw nsw i64 %indvars.iv188 to i32 + %93 = uitofp nneg i32 %92 to double + %94 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv188 + %95 = load i32, ptr %94, align 4 + %96 = sext i32 %95 to i64 + %97 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %96 + %98 = load double, ptr %97, align 8 + %99 = fsub double %93, %98 + %100 = getelementptr inbounds [256 x i32], ptr %6, i64 0, i64 %indvars.iv188 + %101 = load i32, ptr %100, align 4 + %102 = sitofp i32 %101 to double + %103 = fmul double %99, %102 + %104 = tail call double @llvm.fmuladd.f64(double %103, double %99, double %.3154) + %indvars.iv.next189 = add nuw nsw i64 %indvars.iv188, 1 + %exitcond192.not = icmp eq i64 %indvars.iv.next189, %wide.trip.count191 + br i1 %exitcond192.not, label %._crit_edge158, label %.lr.ph157, !llvm.loop !10 ._crit_edge158: ; preds = %.lr.ph157, %.loopexit135 - %.3.lcssa = phi double [ 0.000000e+00, %.loopexit135 ], [ %105, %.lr.ph157 ] - %106 = fsub double %.0117161, %.3.lcssa - %107 = fcmp olt double %106, %15 - %108 = add nuw nsw i32 %.0118160, 1 - %exitcond192.not = icmp eq i32 %108, 6 - %or.cond203 = select i1 %107, i1 true, i1 %exitcond192.not - br i1 %or.cond203, label %109, label %53, !llvm.loop !11 - -109: ; preds = %._crit_edge158 - br i1 %.not128147, label %.preheader, label %.lr.ph165 - -.preheader: ; preds = %.lr.ph165, %109 + %.3.lcssa = phi double [ 0.000000e+00, %.loopexit135 ], [ %104, %.lr.ph157 ] + %105 = fsub double %.0117161, %.3.lcssa + %106 = fcmp olt double %105, %15 + %107 = add nuw nsw i32 %.0118160, 1 + %exitcond193.not = icmp eq i32 %107, 6 + %or.cond204 = select i1 %106, i1 true, i1 %exitcond193.not + br i1 %or.cond204, label %108, label %52, !llvm.loop !11 + +108: ; preds = %._crit_edge158 + br i1 %.not128147, label %.preheader, label %.lr.ph165.preheader + +.lr.ph165.preheader: ; preds = %108 + %wide.trip.count197 = zext nneg i32 %51 to i64 + br label %.lr.ph165 + +.preheader: ; preds = %.lr.ph165, %108 br i1 %.not170, label %.loopexit, label %.lr.ph167 -.lr.ph165: ; preds = %109, %.lr.ph165 - %indvars.iv193 = phi i64 [ %indvars.iv.next194, %.lr.ph165 ], [ %51, %109 ] - %110 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv193 - %111 = load i32, ptr %110, align 4 - %112 = sext i32 %111 to i64 - %113 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %112 - %114 = load double, ptr %113, align 8 - %115 = fadd double %114, 5.000000e-01 - %116 = fptoui double %115 to i8 - %117 = getelementptr inbounds [256 x i8], ptr %11, i64 0, i64 %indvars.iv193 - store i8 %116, ptr %117, align 1 - %indvars.iv.next194 = add nuw nsw i64 %indvars.iv193, 1 - %lftr.wideiv196 = trunc i64 %indvars.iv.next194 to i32 - %exitcond197.not = icmp eq i32 %52, %lftr.wideiv196 - br i1 %exitcond197.not, label %.preheader, label %.lr.ph165, !llvm.loop !12 +.lr.ph165: ; preds = %.lr.ph165.preheader, %.lr.ph165 + %indvars.iv194 = phi i64 [ %45, %.lr.ph165.preheader ], [ %indvars.iv.next195, %.lr.ph165 ] + %109 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv194 + %110 = load i32, ptr %109, align 4 + %111 = sext i32 %110 to i64 + %112 = getelementptr inbounds [256 x double], ptr %8, i64 0, i64 %111 + %113 = load double, ptr %112, align 8 + %114 = fadd double %113, 5.000000e-01 + %115 = fptoui double %114 to i8 + %116 = getelementptr inbounds [256 x i8], ptr %11, i64 0, i64 %indvars.iv194 + store i8 %115, ptr %116, align 1 + %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1 + %exitcond198.not = icmp eq i64 %indvars.iv.next195, %wide.trip.count197 + br i1 %exitcond198.not, label %.preheader, label %.lr.ph165, !llvm.loop !12 .lr.ph167: ; preds = %.preheader, %.lr.ph167 - %.0103166 = phi i64 [ %123, %.lr.ph167 ], [ 0, %.preheader ] - %118 = getelementptr inbounds i8, ptr %0, i64 %.0103166 - %119 = load i8, ptr %118, align 1 - %120 = zext i8 %119 to i64 - %121 = getelementptr inbounds [256 x i8], ptr %11, i64 0, i64 %120 - %122 = load i8, ptr %121, align 1 - store i8 %122, ptr %118, align 1 - %123 = add nuw i64 %.0103166, 1 - %exitcond199.not = icmp eq i64 %123, %13 - br i1 %exitcond199.not, label %.loopexit, label %.lr.ph167, !llvm.loop !13 + %.0103166 = phi i64 [ %122, %.lr.ph167 ], [ 0, %.preheader ] + %117 = getelementptr inbounds i8, ptr %0, i64 %.0103166 + %118 = load i8, ptr %117, align 1 + %119 = zext i8 %118 to i64 + %120 = getelementptr inbounds [256 x i8], ptr %11, i64 0, i64 %119 + %121 = load i8, ptr %120, align 1 + store i8 %121, ptr %117, align 1 + %122 = add nuw i64 %.0103166, 1 + %exitcond200.not = icmp eq i64 %122, %13 + br i1 %exitcond200.not, label %.loopexit, label %.lr.ph167, !llvm.loop !13 .loopexit: ; preds = %.lr.ph167, %.preheader, %._crit_edge %.0114 = phi double [ 0.000000e+00, %._crit_edge ], [ %.3.lcssa, %.preheader ], [ %.3.lcssa, %.lr.ph167 ] %.not131 = icmp eq ptr %4, null - br i1 %.not131, label %126, label %124 + br i1 %.not131, label %125, label %123 -124: ; preds = %.loopexit - %125 = fptoui double %.0114 to i64 - store i64 %125, ptr %4, align 8 - br label %126 +123: ; preds = %.loopexit + %124 = fptoui double %.0114 to i64 + store i64 %124, ptr %4, align 8 + br label %125 -126: ; preds = %.loopexit, %124, %17, %5 - %.0 = phi i32 [ 0, %5 ], [ 0, %17 ], [ 1, %124 ], [ 1, %.loopexit ] +125: ; preds = %.loopexit, %123, %17, %5 + %.0 = phi i32 [ 0, %5 ], [ 0, %17 ], [ 1, %123 ], [ 1, %.loopexit ] ret i32 %.0 } @@ -288,7 +290,10 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare double @llvm.fmuladd.f64(double, double, double) #2 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #3 +declare i32 @llvm.umin.i32(i32, i32) #3 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umax.i32(i32, i32) #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #3 diff --git a/bench/linux/optimized/8250_core.ll b/bench/linux/optimized/8250_core.ll index 7a7d206eaa7..df54d60f272 100644 --- a/bench/linux/optimized/8250_core.ll +++ b/bench/linux/optimized/8250_core.ll @@ -2171,9 +2171,7 @@ define internal range(i32 0, 2) i32 @serial8250_interrupt(i32 %0, ptr noundef %1 29: ; preds = %6 tail call void @_raw_spin_unlock(ptr noundef %3) #12 - %30 = icmp ne i32 %18, 0 - %31 = zext i1 %30 to i32 - ret i32 %31 + ret i32 %18 } ; Function Attrs: null_pointer_is_valid allocsize(2) diff --git a/bench/linux/optimized/cypress_ps2.ll b/bench/linux/optimized/cypress_ps2.ll index 02dd4f648ad..897f146f105 100644 --- a/bench/linux/optimized/cypress_ps2.ll +++ b/bench/linux/optimized/cypress_ps2.ll @@ -84,8 +84,8 @@ define internal fastcc noundef range(i32 -5, 1) i32 @cypress_send_ext_cmd(ptr no %19 = getelementptr i8, ptr %2, i64 2 br label %20 -20: ; preds = %78, %3 - %21 = phi i32 [ 3, %3 ], [ %79, %78 ] +20: ; preds = %76, %3 + %21 = phi i32 [ 3, %3 ], [ %77, %76 ] call fastcc void @cypress_ps2_ext_cmd(ptr noundef %0, i8 noundef zeroext %5) call fastcc void @cypress_ps2_ext_cmd(ptr noundef %0, i8 noundef zeroext %7) call fastcc void @cypress_ps2_ext_cmd(ptr noundef %0, i8 noundef zeroext %8) @@ -137,16 +137,16 @@ define internal fastcc noundef range(i32 -5, 1) i32 @cypress_send_ext_cmd(ptr no store i32 %22, ptr %10, align 8 store i8 0, ptr %11, align 1 call void @ps2_end_command(ptr noundef %9) #8 - br i1 %24, label %45, label %78 + br i1 %24, label %45, label %76 45: ; preds = %44 - br i1 %17, label %81, label %46 + br i1 %17, label %79, label %46 46: ; preds = %45 %47 = load i8, ptr %2, align 1 %48 = and i8 %47, -56 %49 = icmp eq i8 %48, 0 - br i1 %49, label %50, label %78 + br i1 %49, label %50, label %76 50: ; preds = %46 %51 = load i8, ptr %18, align 1 @@ -179,21 +179,19 @@ define internal fastcc noundef range(i32 -5, 1) i32 @cypress_send_ext_cmd(ptr no br i1 %71, label %72, label %63, !llvm.loop !10 72: ; preds = %63 - %73 = and i8 %60, 1 - %74 = icmp eq i8 %73, 0 - %75 = and i8 %69, 1 - %76 = icmp eq i8 %75, 0 - %77 = select i1 %74, i1 true, i1 %76 - br i1 %77, label %78, label %81 - -78: ; preds = %72, %46, %44 - %79 = add nsw i32 %21, -1 - %80 = icmp ugt i32 %21, 1 - br i1 %80, label %20, label %81, !llvm.loop !11 - -81: ; preds = %78, %72, %45 - %82 = phi i32 [ -5, %78 ], [ 0, %45 ], [ 0, %72 ] - ret i32 %82 + %73 = icmp eq i8 %60, 0 + %74 = icmp eq i8 %69, 0 + %75 = select i1 %73, i1 true, i1 %74 + br i1 %75, label %76, label %79 + +76: ; preds = %72, %46, %44 + %77 = add nsw i32 %21, -1 + %78 = icmp ugt i32 %21, 1 + br i1 %78, label %20, label %79, !llvm.loop !11 + +79: ; preds = %76, %72, %45 + %80 = phi i32 [ -5, %76 ], [ 0, %45 ], [ 0, %72 ] + ret i32 %80 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/linux/optimized/drm_probe_helper.ll b/bench/linux/optimized/drm_probe_helper.ll index a5aa3435c7c..e474d2a2830 100644 --- a/bench/linux/optimized/drm_probe_helper.ll +++ b/bench/linux/optimized/drm_probe_helper.ll @@ -171,13 +171,13 @@ define dso_local void @drm_kms_helper_poll_enable(ptr noundef %0) #0 align 16 { %6 = load i8, ptr @drm_kms_helper_poll, align 1, !range !5 %7 = icmp eq i8 %6, 0 %8 = select i1 %5, i1 true, i1 %7 - br i1 %8, label %50, label %9 + br i1 %8, label %49, label %9 9: ; preds = %1 %10 = getelementptr inbounds i8, ptr %0, i64 809 %11 = load i8, ptr %10, align 1, !range !5, !noundef !6 %12 = icmp eq i8 %11, 0 - br i1 %12, label %13, label %50 + br i1 %12, label %13, label %49 13: ; preds = %9 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #6 @@ -185,7 +185,7 @@ define dso_local void @drm_kms_helper_poll_enable(ptr noundef %0) #0 align 16 { call void @drm_connector_list_iter_begin(ptr noundef %0, ptr noundef nonnull %2) #6 %14 = call ptr @drm_connector_list_iter_next(ptr noundef nonnull %2) #6 %15 = icmp eq ptr %14, null - br i1 %15, label %39, label %.preheader + br i1 %15, label %38, label %.preheader .preheader: ; preds = %13, %26 %16 = phi ptr [ %32, %26 ], [ %14, %13 ] @@ -216,42 +216,41 @@ define dso_local void @drm_kms_helper_poll_enable(ptr noundef %0) #0 align 16 { br i1 %33, label %34, label %.preheader, !llvm.loop !8 34: ; preds = %26 - %35 = and i8 %31, 1 - %36 = icmp eq i8 %35, 0 + %35 = icmp eq i8 %31, 0 call void @drm_connector_list_iter_end(ptr noundef nonnull %2) #6 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #6 - br i1 %36, label %40, label %._crit_edge + br i1 %35, label %39, label %._crit_edge ._crit_edge: ; preds = %34 %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 810 %.pre = load i8, ptr %.phi.trans.insert, align 2, !range !5 - %37 = icmp eq i8 %.pre, 0 - %38 = select i1 %37, i64 10000, i64 1000 - br label %44 + %36 = icmp eq i8 %.pre, 0 + %37 = select i1 %36, i64 10000, i64 1000 + br label %43 -39: ; preds = %13 +38: ; preds = %13 call void @drm_connector_list_iter_end(ptr noundef nonnull %2) #6 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #6 - br label %40 - -40: ; preds = %39, %34 - %41 = getelementptr inbounds i8, ptr %0, i64 810 - %42 = load i8, ptr %41, align 2, !range !5, !noundef !6 - %43 = icmp eq i8 %42, 0 - br i1 %43, label %49, label %44 - -44: ; preds = %._crit_edge, %40 - %45 = phi i64 [ %38, %._crit_edge ], [ 1000, %40 ] - %46 = getelementptr inbounds i8, ptr %0, i64 816 - %47 = load ptr, ptr @system_wq, align 8 - %48 = call zeroext i1 @queue_delayed_work_on(i32 noundef 64, ptr noundef %47, ptr noundef %46, i64 noundef %45) #6 - br label %49 + br label %39 + +39: ; preds = %38, %34 + %40 = getelementptr inbounds i8, ptr %0, i64 810 + %41 = load i8, ptr %40, align 2, !range !5, !noundef !6 + %42 = icmp eq i8 %41, 0 + br i1 %42, label %48, label %43 -49: ; preds = %44, %40 +43: ; preds = %._crit_edge, %39 + %44 = phi i64 [ %37, %._crit_edge ], [ 1000, %39 ] + %45 = getelementptr inbounds i8, ptr %0, i64 816 + %46 = load ptr, ptr @system_wq, align 8 + %47 = call zeroext i1 @queue_delayed_work_on(i32 noundef 64, ptr noundef %46, ptr noundef %45, i64 noundef %44) #6 + br label %48 + +48: ; preds = %43, %39 store i8 1, ptr %10, align 1 - br label %50 + br label %49 -50: ; preds = %49, %9, %1 +49: ; preds = %48, %9, %1 ret void } diff --git a/bench/linux/optimized/i915_gem_object.ll b/bench/linux/optimized/i915_gem_object.ll index 08994cc3dfe..c6bfc6c03a7 100644 --- a/bench/linux/optimized/i915_gem_object.ll +++ b/bench/linux/optimized/i915_gem_object.ll @@ -1349,7 +1349,7 @@ define dso_local zeroext i1 @i915_gem_object_needs_ccs_pages(ptr nocapture nound 23: ; preds = %30, %19 %indvars.iv = phi i64 [ %indvars.iv.next, %30 ], [ 0, %19 ] - %24 = phi i8 [ %35, %30 ], [ 0, %19 ] + %24 = phi i8 [ %34, %30 ], [ 0, %19 ] %25 = getelementptr ptr, ptr %21, i64 %indvars.iv %26 = load ptr, ptr %25, align 8 %27 = getelementptr inbounds i8, ptr %26, i64 144 @@ -1358,23 +1358,21 @@ define dso_local zeroext i1 @i915_gem_object_needs_ccs_pages(ptr nocapture nound br i1 %29, label %.loopexit, label %30 30: ; preds = %23 - %31 = and i8 %24, 1 - %32 = icmp eq i8 %31, 0 - %33 = icmp eq i16 %28, 1 - %34 = and i1 %32, %33 - %35 = select i1 %34, i8 1, i8 %24 + %31 = icmp eq i8 %24, 0 + %32 = icmp eq i16 %28, 1 + %33 = and i1 %31, %32 + %34 = select i1 %33, i8 1, i8 %24 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %36 = icmp eq i64 %indvars.iv.next, %22 - br i1 %36, label %37, label %23, !llvm.loop !37 + %35 = icmp eq i64 %indvars.iv.next, %22 + br i1 %35, label %36, label %23, !llvm.loop !37 -37: ; preds = %30 - %38 = and i8 %35, 1 - %39 = icmp ne i8 %38, 0 +36: ; preds = %30 + %37 = icmp ne i8 %34, 0 br label %.loopexit -.loopexit: ; preds = %23, %37, %15, %10, %1 - %40 = phi i1 [ false, %1 ], [ true, %10 ], [ false, %15 ], [ %39, %37 ], [ false, %23 ] - ret i1 %40 +.loopexit: ; preds = %23, %36, %15, %10, %1 + %38 = phi i1 [ false, %1 ], [ true, %10 ], [ false, %15 ], [ %37, %36 ], [ false, %23 ] + ret i1 %38 } ; Function Attrs: fn_ret_thunk_extern nofree norecurse nounwind null_pointer_is_valid memory(argmem: readwrite, inaccessiblemem: readwrite) diff --git a/bench/linux/optimized/memtype_interval.ll b/bench/linux/optimized/memtype_interval.ll index 9fdf240f151..f393c4fb520 100644 --- a/bench/linux/optimized/memtype_interval.ll +++ b/bench/linux/optimized/memtype_interval.ll @@ -383,7 +383,7 @@ define dso_local noundef range(i32 -16, 1) i32 @memtype_check_insert(ptr noundef 199: ; preds = %189, %193, %194, %195, %196, %197, %198 %200 = phi ptr [ @.str.8, %198 ], [ @.str.7, %197 ], [ @.str.6, %196 ], [ @.str.5, %195 ], [ @.str.4, %194 ], [ @.str.3, %193 ], [ @.str.2, %189 ] %201 = tail call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.1, ptr noundef %180, i32 noundef %182, i64 noundef %3, i64 noundef %5, ptr noundef nonnull %190, ptr noundef nonnull %200) #9 - br label %237 + br label %236 202: ; preds = %.thread store i32 %174, ptr %1, align 4 @@ -404,7 +404,7 @@ define dso_local noundef range(i32 -16, 1) i32 @memtype_check_insert(ptr noundef %209 = getelementptr inbounds i8, ptr %0, i64 32 tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %209, i8 0, i64 24, i1 false) store ptr %209, ptr @memtype_rbroot, align 8 - br label %233 + br label %232 .preheader: ; preds = %.thread33, %217 %210 = phi ptr [ %223, %217 ], [ %206, %.thread33 ] @@ -432,30 +432,29 @@ define dso_local noundef range(i32 -16, 1) i32 @memtype_check_insert(ptr noundef 225: ; preds = %217 %226 = getelementptr inbounds i8, ptr %210, i64 %221 %227 = ptrtoint ptr %210 to i64 - %228 = and i8 %220, 1 - %229 = icmp eq i8 %228, 0 - %230 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %205, ptr %230, align 8 - %231 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %227, ptr %231, align 8 - %232 = getelementptr inbounds i8, ptr %0, i64 40 - tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(16) %232, i8 0, i64 16, i1 false) - store ptr %231, ptr %226, align 8 - br i1 %229, label %235, label %233 - -233: ; preds = %.thread34, %225 - %234 = phi ptr [ %209, %.thread34 ], [ %231, %225 ] - store ptr %234, ptr getelementptr inbounds (i8, ptr @memtype_rbroot, i64 8), align 8 - br label %235 - -235: ; preds = %233, %225 - %236 = phi ptr [ %234, %233 ], [ %231, %225 ] - tail call void @__rb_insert_augmented(ptr noundef %236, ptr noundef nonnull @memtype_rbroot, ptr noundef nonnull @interval_augment_rotate) #11 - br label %237 - -237: ; preds = %199, %235 - %238 = phi i32 [ 0, %235 ], [ -16, %199 ] - ret i32 %238 + %228 = icmp eq i8 %220, 0 + %229 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %205, ptr %229, align 8 + %230 = getelementptr inbounds i8, ptr %0, i64 32 + store i64 %227, ptr %230, align 8 + %231 = getelementptr inbounds i8, ptr %0, i64 40 + tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(16) %231, i8 0, i64 16, i1 false) + store ptr %230, ptr %226, align 8 + br i1 %228, label %234, label %232 + +232: ; preds = %.thread34, %225 + %233 = phi ptr [ %209, %.thread34 ], [ %230, %225 ] + store ptr %233, ptr getelementptr inbounds (i8, ptr @memtype_rbroot, i64 8), align 8 + br label %234 + +234: ; preds = %232, %225 + %235 = phi ptr [ %233, %232 ], [ %230, %225 ] + tail call void @__rb_insert_augmented(ptr noundef %235, ptr noundef nonnull @memtype_rbroot, ptr noundef nonnull @interval_augment_rotate) #11 + br label %236 + +236: ; preds = %199, %234 + %237 = phi i32 [ 0, %234 ], [ -16, %199 ] + ret i32 %237 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -467,7 +466,7 @@ define dso_local noundef ptr @memtype_erase(i64 noundef %0, i64 noundef %1) loca 5: ; preds = %2 %6 = tail call fastcc ptr @memtype_match(i64 noundef %0, i64 noundef %1, i32 noundef 1) %7 = icmp eq ptr %6, null - br i1 %7, label %211, label %8 + br i1 %7, label %210, label %8 8: ; preds = %5, %2 %9 = phi ptr [ %3, %2 ], [ %6, %5 ] @@ -748,7 +747,7 @@ define dso_local noundef ptr @memtype_erase(i64 noundef %0, i64 noundef %1) loca br label %interval_remove.exit interval_remove.exit: ; preds = %.thread17.i, %180 - br i1 %11, label %211, label %181 + br i1 %11, label %210, label %181 181: ; preds = %interval_remove.exit %182 = getelementptr inbounds i8, ptr %9, i64 8 @@ -764,7 +763,7 @@ interval_remove.exit: ; preds = %.thread17.i, %180 store i64 %184, ptr %187, align 8 tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false) store ptr %12, ptr @memtype_rbroot, align 8 - br label %209 + br label %208 .preheader: ; preds = %181, %195 %188 = phi ptr [ %201, %195 ], [ %185, %181 ] @@ -792,26 +791,25 @@ interval_remove.exit: ; preds = %.thread17.i, %180 203: ; preds = %195 %204 = getelementptr inbounds i8, ptr %188, i64 %199 %205 = ptrtoint ptr %188 to i64 - %206 = and i8 %198, 1 - %207 = icmp eq i8 %206, 0 - %208 = getelementptr inbounds i8, ptr %9, i64 16 - store i64 %184, ptr %208, align 8 + %206 = icmp eq i8 %198, 0 + %207 = getelementptr inbounds i8, ptr %9, i64 16 + store i64 %184, ptr %207, align 8 store i64 %205, ptr %12, align 8 tail call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false) store ptr %12, ptr %204, align 8 - br i1 %207, label %210, label %209 + br i1 %206, label %209, label %208 -209: ; preds = %.thread, %203 +208: ; preds = %.thread, %203 store ptr %12, ptr getelementptr inbounds (i8, ptr @memtype_rbroot, i64 8), align 8 - br label %210 + br label %209 -210: ; preds = %209, %203 +209: ; preds = %208, %203 tail call void @__rb_insert_augmented(ptr noundef %12, ptr noundef nonnull @memtype_rbroot, ptr noundef nonnull @interval_augment_rotate) #11 - br label %211 + br label %210 -211: ; preds = %210, %interval_remove.exit, %5 - %212 = phi ptr [ null, %210 ], [ inttoptr (i64 -22 to ptr), %5 ], [ %9, %interval_remove.exit ] - ret ptr %212 +210: ; preds = %209, %interval_remove.exit, %5 + %211 = phi ptr [ null, %209 ], [ inttoptr (i64 -22 to ptr), %5 ], [ %9, %interval_remove.exit ] + ret ptr %211 } ; Function Attrs: fn_ret_thunk_extern nofree norecurse nosync nounwind null_pointer_is_valid memory(read, inaccessiblemem: none) diff --git a/bench/linux/optimized/nexthop.ll b/bench/linux/optimized/nexthop.ll index 2dce877431e..13a9f4403b8 100644 --- a/bench/linux/optimized/nexthop.ll +++ b/bench/linux/optimized/nexthop.ll @@ -7670,16 +7670,16 @@ define internal fastcc range(i32 32770, 2) i32 @replace_nexthop_single(ptr nound 8: ; preds = %4 tail call void @do_trace_netlink_extack(ptr noundef nonnull @replace_nexthop_single.__msg) #13 %9 = icmp eq ptr %3, null - br i1 %9, label %.loopexit, label %10 + br i1 %9, label %.loopexit9, label %10 10: ; preds = %8 store ptr @replace_nexthop_single.__msg, ptr %3, align 8 - br label %.loopexit + br label %.loopexit9 11: ; preds = %4 %12 = tail call fastcc i32 @call_nexthop_notifiers(ptr noundef %0, i32 noundef 1, ptr noundef %2, ptr noundef %3) %13 = icmp eq i32 %12, 0 - br i1 %13, label %14, label %.loopexit + br i1 %13, label %14, label %.loopexit9 14: ; preds = %11 %15 = getelementptr inbounds i8, ptr %1, i64 101 @@ -7723,27 +7723,27 @@ define internal fastcc range(i32 32770, 2) i32 @replace_nexthop_single(ptr nound %40 = load ptr, ptr %39, align 8 %41 = tail call fastcc i32 @replace_nexthop_single_notify(ptr noundef %0, ptr noundef %40, ptr noundef %1, ptr noundef %22, ptr noundef %24, ptr noundef %3) %42 = icmp eq i32 %41, 0 - br i1 %42, label %34, label %85 + br i1 %42, label %34, label %82 43: ; preds = %34 %44 = getelementptr inbounds i8, ptr %22, i64 24 %45 = load i8, ptr %44, align 8 %46 = icmp eq i8 %45, 2 - br i1 %46, label %47, label %.loopexit + br i1 %46, label %47, label %.loopexit9 47: ; preds = %43 %48 = getelementptr inbounds i8, ptr %24, i64 24 %49 = load i8, ptr %48, align 8 %50 = icmp eq i8 %49, 10 - br i1 %50, label %51, label %.loopexit + br i1 %50, label %51, label %.loopexit9 51: ; preds = %47 %52 = load ptr, ptr %33, align 8 %53 = icmp eq ptr %52, %33 - br i1 %53, label %.loopexit, label %.preheader + br i1 %53, label %.loopexit9, label %.preheader -.preheader: ; preds = %51, %80 - %54 = phi ptr [ %83, %80 ], [ %52, %51 ] +.preheader: ; preds = %51, %.loopexit + %54 = phi ptr [ %80, %.loopexit ], [ %52, %51 ] %55 = getelementptr i8, ptr %54, i64 16 %56 = load ptr, ptr %55, align 8 %57 = getelementptr inbounds i8, ptr %56, i64 128 @@ -7752,7 +7752,7 @@ define internal fastcc range(i32 32770, 2) i32 @replace_nexthop_single(ptr nound %60 = getelementptr inbounds i8, ptr %58, i64 8 %61 = load i16, ptr %60, align 8 %62 = icmp eq i16 %61, 0 - br i1 %62, label %80, label %63 + br i1 %62, label %.loopexit, label %63 63: ; preds = %.preheader %64 = zext i16 %61 to i64 @@ -7771,21 +7771,17 @@ define internal fastcc range(i32 32770, 2) i32 @replace_nexthop_single(ptr nound %75 = select i1 %74, i8 1, i8 %67 %76 = add nuw nsw i64 %66, 1 %77 = icmp eq i64 %76, %64 - br i1 %77, label %78, label %65, !llvm.loop !129 - -78: ; preds = %65 - %79 = and i8 %75, 1 - br label %80 + br i1 %77, label %.loopexit, label %65, !llvm.loop !129 -80: ; preds = %78, %.preheader - %81 = phi i8 [ 0, %.preheader ], [ %79, %78 ] - %82 = getelementptr inbounds i8, ptr %58, i64 14 - store i8 %81, ptr %82, align 2 - %83 = load ptr, ptr %54, align 8 - %84 = icmp eq ptr %83, %33 - br i1 %84, label %.loopexit, label %.preheader, !llvm.loop !130 +.loopexit: ; preds = %65, %.preheader + %78 = phi i8 [ 0, %.preheader ], [ %75, %65 ] + %79 = getelementptr inbounds i8, ptr %58, i64 14 + store i8 %78, ptr %79, align 2 + %80 = load ptr, ptr %54, align 8 + %81 = icmp eq ptr %80, %33 + br i1 %81, label %.loopexit9, label %.preheader, !llvm.loop !130 -85: ; preds = %38 +82: ; preds = %38 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !131 store volatile ptr %24, ptr %23, align 8 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !132 @@ -7794,28 +7790,28 @@ define internal fastcc range(i32 32770, 2) i32 @replace_nexthop_single(ptr nound store i8 %28, ptr %27, align 4 store ptr %1, ptr %26, align 8 store ptr %2, ptr %25, align 8 - %86 = getelementptr inbounds i8, ptr %36, i64 8 - %87 = load ptr, ptr %86, align 8 - %88 = icmp eq ptr %87, %33 - br i1 %88, label %.loopexit10, label %.preheader9 + %83 = getelementptr inbounds i8, ptr %36, i64 8 + %84 = load ptr, ptr %83, align 8 + %85 = icmp eq ptr %84, %33 + br i1 %85, label %.loopexit11, label %.preheader10 -.preheader9: ; preds = %85, %.preheader9 - %89 = phi ptr [ %94, %.preheader9 ], [ %87, %85 ] - %90 = getelementptr i8, ptr %89, i64 16 +.preheader10: ; preds = %82, %.preheader10 + %86 = phi ptr [ %91, %.preheader10 ], [ %84, %82 ] + %87 = getelementptr i8, ptr %86, i64 16 + %88 = load ptr, ptr %87, align 8 + %89 = tail call fastcc i32 @replace_nexthop_single_notify(ptr noundef %0, ptr noundef %88, ptr noundef %1, ptr noundef %24, ptr noundef %22, ptr noundef null) + %90 = getelementptr inbounds i8, ptr %86, i64 8 %91 = load ptr, ptr %90, align 8 - %92 = tail call fastcc i32 @replace_nexthop_single_notify(ptr noundef %0, ptr noundef %91, ptr noundef %1, ptr noundef %24, ptr noundef %22, ptr noundef null) - %93 = getelementptr inbounds i8, ptr %89, i64 8 - %94 = load ptr, ptr %93, align 8 - %95 = icmp eq ptr %94, %33 - br i1 %95, label %.loopexit10, label %.preheader9, !llvm.loop !133 - -.loopexit10: ; preds = %.preheader9, %85 - %96 = tail call fastcc i32 @call_nexthop_notifiers(ptr noundef %0, i32 noundef 1, ptr noundef nonnull %1, ptr noundef %3) - br label %.loopexit + %92 = icmp eq ptr %91, %33 + br i1 %92, label %.loopexit11, label %.preheader10, !llvm.loop !133 + +.loopexit11: ; preds = %.preheader10, %82 + %93 = tail call fastcc i32 @call_nexthop_notifiers(ptr noundef %0, i32 noundef 1, ptr noundef nonnull %1, ptr noundef %3) + br label %.loopexit9 -.loopexit: ; preds = %80, %.loopexit10, %51, %47, %43, %11, %10, %8 - %97 = phi i32 [ %41, %.loopexit10 ], [ -22, %10 ], [ -22, %8 ], [ %12, %11 ], [ 0, %47 ], [ 0, %43 ], [ 0, %51 ], [ 0, %80 ] - ret i32 %97 +.loopexit9: ; preds = %.loopexit, %.loopexit11, %51, %47, %43, %11, %10, %8 + %94 = phi i32 [ %41, %.loopexit11 ], [ -22, %10 ], [ -22, %8 ], [ %12, %11 ], [ 0, %47 ], [ 0, %43 ], [ 0, %51 ], [ 0, %.loopexit ] + ret i32 %94 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/power_supply_sysfs.ll b/bench/linux/optimized/power_supply_sysfs.ll index 75d3774c574..13b1d9361be 100644 --- a/bench/linux/optimized/power_supply_sysfs.ll +++ b/bench/linux/optimized/power_supply_sysfs.ll @@ -284,20 +284,20 @@ define internal i64 @power_supply_show_property(ptr noundef %0, ptr noundef %1, 21: ; preds = %17 switch i32 %18, label %22 [ - i32 -61, label %89 - i32 -11, label %89 - i32 -19, label %89 + i32 -61, label %88 + i32 -11, label %88 + i32 -19, label %88 ] 22: ; preds = %21 %23 = call i32 @___ratelimit(ptr noundef nonnull @power_supply_show_property._rs, ptr noundef nonnull @__func__.power_supply_show_property) #9 %24 = icmp eq i32 %23, 0 - br i1 %24, label %89, label %25 + br i1 %24, label %88, label %25 25: ; preds = %22 %26 = load ptr, ptr %1, align 8 call void (ptr, ptr, ...) @_dev_err(ptr noundef %0, ptr noundef nonnull @.str.133, ptr noundef %26, i64 noundef %19) #8 - br label %89 + br label %88 27: ; preds = %17, %13 %28 = getelementptr i8, ptr %1, i64 40 @@ -318,14 +318,14 @@ define internal i64 @power_supply_show_property(ptr noundef %0, ptr noundef %1, %39 = load ptr, ptr %38, align 8 %40 = call i32 (ptr, ptr, ...) @sysfs_emit(ptr noundef %2, ptr noundef nonnull @.str.134, ptr noundef %39) #9 %41 = sext i32 %40 to i64 - br label %89 + br label %88 42: ; preds = %31, %27 - switch i32 %11, label %85 [ + switch i32 %11, label %84 [ i32 65, label %43 - i32 73, label %81 - i32 74, label %81 - i32 75, label %81 + i32 73, label %80 + i32 74, label %80 + i32 75, label %80 ] 43: ; preds = %42 @@ -365,40 +365,39 @@ define internal i64 @power_supply_show_property(ptr noundef %0, ptr noundef %1, br i1 %72, label %50, label %73, !llvm.loop !10 73: ; preds = %50 - %74 = and i8 %65, 1 - %75 = icmp eq i8 %74, 0 - br i1 %75, label %.thread, label %76 + %74 = icmp eq i8 %65, 0 + br i1 %74, label %.thread, label %75 .thread: ; preds = %43, %73 call void (ptr, ptr, ...) @_dev_warn(ptr noundef %0, ptr noundef nonnull @.str.136) #8 - br label %89 - -76: ; preds = %73 - %77 = icmp eq i64 %68, 0 - br i1 %77, label %89, label %78 - -78: ; preds = %76 - %79 = getelementptr i8, ptr %2, i64 %68 - %80 = getelementptr i8, ptr %79, i64 -1 - store i8 10, ptr %80, align 1 - br label %89 - -81: ; preds = %42, %42, %42 - %82 = load ptr, ptr %4, align 8 - %83 = call i32 (ptr, ptr, ...) @sysfs_emit(ptr noundef %2, ptr noundef nonnull @.str.134, ptr noundef %82) #9 - %84 = sext i32 %83 to i64 - br label %89 - -85: ; preds = %42 - %86 = load i32, ptr %4, align 8 - %87 = call i32 (ptr, ptr, ...) @sysfs_emit(ptr noundef %2, ptr noundef nonnull @.str.135, i32 noundef %86) #9 - %88 = sext i32 %87 to i64 - br label %89 - -89: ; preds = %85, %81, %78, %76, %.thread, %34, %25, %22, %21, %21, %21 - %90 = phi i64 [ %41, %34 ], [ %19, %25 ], [ %19, %22 ], [ %19, %21 ], [ %88, %85 ], [ %84, %81 ], [ %19, %21 ], [ %19, %21 ], [ -22, %.thread ], [ %68, %78 ], [ 0, %76 ] + br label %88 + +75: ; preds = %73 + %76 = icmp eq i64 %68, 0 + br i1 %76, label %88, label %77 + +77: ; preds = %75 + %78 = getelementptr i8, ptr %2, i64 %68 + %79 = getelementptr i8, ptr %78, i64 -1 + store i8 10, ptr %79, align 1 + br label %88 + +80: ; preds = %42, %42, %42 + %81 = load ptr, ptr %4, align 8 + %82 = call i32 (ptr, ptr, ...) @sysfs_emit(ptr noundef %2, ptr noundef nonnull @.str.134, ptr noundef %81) #9 + %83 = sext i32 %82 to i64 + br label %88 + +84: ; preds = %42 + %85 = load i32, ptr %4, align 8 + %86 = call i32 (ptr, ptr, ...) @sysfs_emit(ptr noundef %2, ptr noundef nonnull @.str.135, i32 noundef %85) #9 + %87 = sext i32 %86 to i64 + br label %88 + +88: ; preds = %84, %80, %77, %75, %.thread, %34, %25, %22, %21, %21, %21 + %89 = phi i64 [ %41, %34 ], [ %19, %25 ], [ %19, %22 ], [ %19, %21 ], [ %87, %84 ], [ %83, %80 ], [ %19, %21 ], [ %19, %21 ], [ -22, %.thread ], [ %68, %77 ], [ 0, %75 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 - ret i64 %90 + ret i64 %89 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/linux/optimized/sky2.ll b/bench/linux/optimized/sky2.ll index faa4db0bba1..30fd3087f3c 100644 --- a/bench/linux/optimized/sky2.ll +++ b/bench/linux/optimized/sky2.ll @@ -3558,7 +3558,7 @@ define internal noundef range(i32 -95, 1) i32 @sky2_set_wol(ptr nocapture nounde %11 = select i1 %10, i32 -34, i32 -1 %12 = and i32 %11, %6 %13 = icmp eq i32 %12, 0 - br i1 %13, label %14, label %49 + br i1 %13, label %14, label %48 14: ; preds = %2 %15 = getelementptr inbounds i8, ptr %4, i64 8 @@ -3567,7 +3567,7 @@ define internal noundef range(i32 -95, 1) i32 @sky2_set_wol(ptr nocapture nounde %18 = load i16, ptr %17, align 4 %19 = and i16 %18, 1 %20 = icmp eq i16 %19, 0 - br i1 %20, label %49, label %21 + br i1 %20, label %48, label %21 21: ; preds = %14 %22 = trunc i32 %6 to i8 @@ -3576,7 +3576,7 @@ define internal noundef range(i32 -95, 1) i32 @sky2_set_wol(ptr nocapture nounde %24 = getelementptr inbounds i8, ptr %4, i64 443 %25 = load i8, ptr %24, align 1 %26 = icmp eq i8 %25, 0 - br i1 %26, label %44, label %27 + br i1 %26, label %43, label %27 27: ; preds = %21 %28 = getelementptr inbounds i8, ptr %4, i64 416 @@ -3597,20 +3597,19 @@ define internal noundef range(i32 -95, 1) i32 @sky2_set_wol(ptr nocapture nounde br i1 %40, label %41, label %30, !llvm.loop !39 41: ; preds = %30 - %42 = and i8 %38, 1 - %43 = icmp ne i8 %42, 0 - br label %44 + %42 = icmp ne i8 %38, 0 + br label %43 -44: ; preds = %41, %21 - %45 = phi i1 [ false, %21 ], [ %43, %41 ] - %46 = load ptr, ptr %15, align 8 - %47 = getelementptr inbounds i8, ptr %46, i64 184 - %48 = tail call i32 @device_set_wakeup_enable(ptr noundef %47, i1 noundef zeroext %45) #23 - br label %49 +43: ; preds = %41, %21 + %44 = phi i1 [ false, %21 ], [ %42, %41 ] + %45 = load ptr, ptr %15, align 8 + %46 = getelementptr inbounds i8, ptr %45, i64 184 + %47 = tail call i32 @device_set_wakeup_enable(ptr noundef %46, i1 noundef zeroext %44) #23 + br label %48 -49: ; preds = %44, %14, %2 - %50 = phi i32 [ 0, %44 ], [ -95, %14 ], [ -95, %2 ] - ret i32 %50 +48: ; preds = %43, %14, %2 + %49 = phi i32 [ 0, %43 ], [ -95, %14 ], [ -95, %2 ] + ret i32 %49 } ; Function Attrs: fn_ret_thunk_extern mustprogress nofree norecurse nosync nounwind null_pointer_is_valid willreturn memory(argmem: read) diff --git a/bench/linux/optimized/xprtsock.ll b/bench/linux/optimized/xprtsock.ll index 0a24cbde9fc..cc1754d17ef 100644 --- a/bench/linux/optimized/xprtsock.ll +++ b/bench/linux/optimized/xprtsock.ll @@ -4431,17 +4431,17 @@ define internal i32 @xs_tcp_send_request(ptr noundef %0) #0 align 16 { %22 = getelementptr inbounds i8, ptr %5, i64 1480 %23 = load ptr, ptr %22, align 8 %24 = icmp eq ptr %23, null - br i1 %24, label %137, label %25 + br i1 %24, label %136, label %25 25: ; preds = %21 %26 = tail call i32 @kernel_sock_shutdown(ptr noundef nonnull %23, i32 noundef 2) #12 - br label %137 + br label %136 27: ; preds = %17, %1 %28 = getelementptr inbounds i8, ptr %5, i64 1488 %29 = load ptr, ptr %28, align 8 %30 = icmp eq ptr %29, null - br i1 %30, label %137, label %31 + br i1 %30, label %136, label %31 31: ; preds = %27 %32 = getelementptr inbounds i8, ptr %5, i64 1544 @@ -4591,12 +4591,12 @@ define internal i32 @xs_tcp_send_request(ptr noundef %0) #0 align 16 { %117 = getelementptr inbounds i8, ptr %5, i64 1256 %118 = load volatile i64, ptr %117, align 8 %119 = icmp eq i64 %118, 1 - br i1 %119, label %120, label %137 + br i1 %119, label %120, label %136 120: ; preds = %.split6 %121 = load ptr, ptr %28, align 8 call void @tcp_sock_set_cork(ptr noundef %121, i1 noundef zeroext false) #12 - br label %137 + br label %136 122: ; preds = %.split %123 = icmp eq i32 %108, 0 @@ -4618,25 +4618,24 @@ define internal i32 @xs_tcp_send_request(ptr noundef %0) #0 align 16 { br i1 %124, label %.split, label %131, !llvm.loop !73 131: ; preds = %127 - switch i32 %107, label %137 [ + switch i32 %107, label %136 [ i32 -88, label %132 i32 -11, label %133 ] 132: ; preds = %131 - br label %137 + br label %136 133: ; preds = %131 - %134 = and i8 %130, 1 - %135 = icmp ne i8 %134, 0 - %136 = call fastcc i32 @xs_stream_nospace(ptr noundef %0, i1 noundef zeroext %135) - br label %137 + %134 = icmp ne i8 %130, 0 + %135 = call fastcc i32 @xs_stream_nospace(ptr noundef %0, i1 noundef zeroext %134) + br label %136 -137: ; preds = %133, %132, %131, %120, %.split6, %27, %25, %21 - %138 = phi i32 [ -107, %25 ], [ -107, %21 ], [ -107, %27 ], [ 0, %120 ], [ 0, %.split6 ], [ %107, %131 ], [ %136, %133 ], [ -107, %132 ] +136: ; preds = %133, %132, %131, %120, %.split6, %27, %25, %21 + %137 = phi i32 [ -107, %25 ], [ -107, %21 ], [ -107, %27 ], [ 0, %120 ], [ 0, %.split6 ], [ %107, %131 ], [ %135, %133 ], [ -107, %132 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #12 call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) #12 - ret i32 %138 + ret i32 %137 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/llama.cpp/optimized/common.cpp.ll b/bench/llama.cpp/optimized/common.cpp.ll index 12e5f4c8191..f3bbe3fd535 100644 --- a/bench/llama.cpp/optimized/common.cpp.ll +++ b/bench/llama.cpp/optimized/common.cpp.ll @@ -38937,15 +38937,15 @@ lpad: ; preds = %_ZNSt6vectorINSt7__ for.end: ; preds = %for.inc, %_ZSt6fill_nIPbmbET_S1_T0_RKT1_.exit %23 = load i8, ptr %_M_has_sol, align 4 - %24 = select i1 %cmp, i8 %23, i8 0 - %__ret.2 = or i8 %__ret.0, %24 - %25 = load ptr, ptr %_M_current, align 8 - %26 = load ptr, ptr %_M_end, align 8 - %cmp.i12.not = icmp eq ptr %25, %26 + %or6 = select i1 %cmp, i8 %23, i8 0 + %__ret.2 = or i8 %or6, %__ret.0 + %24 = load ptr, ptr %_M_current, align 8 + %25 = load ptr, ptr %_M_end, align 8 + %cmp.i12.not = icmp eq ptr %24, %25 br i1 %cmp.i12.not, label %cleanup, label %if.end24 if.end24: ; preds = %for.end - %incdec.ptr.i13 = getelementptr inbounds i8, ptr %25, i64 1 + %incdec.ptr.i13 = getelementptr inbounds i8, ptr %24, i64 1 store ptr %incdec.ptr.i13, ptr %_M_current, align 8 br label %cleanup @@ -38955,12 +38955,12 @@ cleanup: ; preds = %for.end, %if.end24 for.body.i.i.i.i: ; preds = %cleanup, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i ], [ %.pr.i, %cleanup ] %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %27 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null + %26 = load ptr, ptr %second.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %26, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %27) #35 + call void @_ZdlPv(ptr noundef nonnull %26) #35 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i @@ -38989,12 +38989,12 @@ while.end: ; preds = %_ZNSt6vectorISt4pai for.body.i.i.i.i.i: ; preds = %while.end, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i ], [ %.pre23, %while.end ] %second.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 8 - %28 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %28, null + %27 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %27, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %28) #35 + call void @_ZdlPv(ptr noundef nonnull %27) #35 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS2_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISE_EEEEvPT_.exit.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i @@ -39008,9 +39008,9 @@ invoke.cont.i.i: ; preds = %_ZSt8_DestroyISt4pa _ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EE5clearEv.exit: ; preds = %while.body, %while.end, %invoke.cont.i.i %__ret.127 = phi i8 [ %__ret.2, %while.end ], [ %__ret.2, %invoke.cont.i.i ], [ %__ret.0, %while.body ] - %29 = phi i8 [ %.pre22, %while.end ], [ %.pre22, %invoke.cont.i.i ], [ 0, %while.body ] + %28 = phi i8 [ %.pre22, %while.end ], [ %.pre22, %invoke.cont.i.i ], [ 0, %while.body ] %cmp27 = icmp eq i8 %__match_mode, 0 - %__ret.3 = select i1 %cmp27, i8 %29, i8 %__ret.127 + %__ret.3 = select i1 %cmp27, i8 %28, i8 %__ret.127 %tobool35 = trunc i8 %__ret.3 to i1 ret i1 %tobool35 } diff --git a/bench/llvm/optimized/Decl.cpp.ll b/bench/llvm/optimized/Decl.cpp.ll index 5fc53f03382..6e9012c617b 100644 --- a/bench/llvm/optimized/Decl.cpp.ll +++ b/bench/llvm/optimized/Decl.cpp.ll @@ -9807,7 +9807,7 @@ define dso_local noundef range(i32 0, 3) i32 @_ZNK5clang7VarDecl13hasDefinitionE %.sroa.6.018 = phi i1 [ %.sroa.6.0.mux, %10 ], [ false, %2 ] %.sroa.07.017 = phi ptr [ %11, %10 ], [ %4, %2 ] %5 = tail call noundef i32 @_ZNK5clang7VarDecl28isThisDeclarationADefinitionERNS_10ASTContextE(ptr noundef nonnull align 8 dereferenceable(100) %.sroa.07.017, ptr noundef nonnull align 8 dereferenceable(23096) %1) - %.sroa.speculated = tail call i32 @llvm.smax.i32(i32 %.019, i32 %5) + %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %.019, i32 %5) %6 = icmp eq i32 %.sroa.speculated, 2 br i1 %6, label %._crit_edge, label %7 @@ -12454,7 +12454,7 @@ _ZNK5clang4Decl7hasAttrINS_14CUDASharedAttrEEEbv.exit: ; preds = %.lr.ph.i4.i.i. %.sroa.6.018.i.i = phi i1 [ %.sroa.6.0.mux.i.i, %55 ], [ false, %.critedge ] %.sroa.07.017.i.i = phi ptr [ %56, %55 ], [ %49, %.critedge ] %50 = tail call noundef i32 @_ZNK5clang7VarDecl28isThisDeclarationADefinitionERNS_10ASTContextE(ptr noundef nonnull align 8 dereferenceable(100) %.sroa.07.017.i.i, ptr noundef nonnull readonly align 8 dereferenceable(23096) %47) - %.sroa.speculated.i.i = tail call i32 @llvm.smax.i32(i32 %.019.i.i, i32 %50) + %.sroa.speculated.i.i = tail call i32 @llvm.umax.i32(i32 %.019.i.i, i32 %50) %51 = icmp eq i32 %.sroa.speculated.i.i, 2 br i1 %51, label %_ZNK5clang7VarDecl13hasDefinitionEv.exit.loopexit, label %52 @@ -30996,9 +30996,6 @@ declare i32 @llvm.umax.i32(i32, i32) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.fshl.i64(i64, i64, i64) #23 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #23 - attributes #0 = { mustprogress nofree nounwind willreturn memory(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 #1 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { 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" } diff --git a/bench/llvm/optimized/LiveIntervals.cpp.ll b/bench/llvm/optimized/LiveIntervals.cpp.ll index 52b2460e96d..a915da5f575 100644 --- a/bench/llvm/optimized/LiveIntervals.cpp.ll +++ b/bench/llvm/optimized/LiveIntervals.cpp.ll @@ -2847,7 +2847,7 @@ define dso_local void @_ZN4llvm13LiveIntervals19computeRegUnitRangeERNS_9LiveRan br label %24 24: ; preds = %.lr.ph79, %._crit_edge - %.077 = phi i1 [ false, %.lr.ph79 ], [ %61, %._crit_edge ] + %.077 = phi i1 [ false, %.lr.ph79 ], [ %60, %._crit_edge ] %.sroa.562.076 = phi i16 [ %22, %.lr.ph79 ], [ 0, %._crit_edge ] %.sroa.060.075 = phi i16 [ %20, %.lr.ph79 ], [ %.sroa.562.076, %._crit_edge ] %25 = load ptr, ptr %12, align 8 @@ -2905,103 +2905,99 @@ _ZN4llvm18MCSuperRegIteratorppEv.exit: ; preds = %42, %.lr.ph %56 = load i16, ptr %.sroa.347.072, align 2 %57 = add i16 %56, %.sroa.045.071 %.not.i.i = icmp eq i16 %56, 0 - br i1 %.not.i.i, label %._crit_edge.loopexit, label %.lr.ph - -._crit_edge.loopexit: ; preds = %_ZN4llvm18MCSuperRegIteratorppEv.exit - %58 = and i8 %spec.select19, 1 - br label %._crit_edge + br i1 %.not.i.i, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %._crit_edge.loopexit, %24 - %.018.lcssa = phi i8 [ 1, %24 ], [ %58, %._crit_edge.loopexit ] - %59 = zext i1 %.077 to i8 - %60 = or i8 %.018.lcssa, %59 - %61 = icmp ne i8 %60, 0 +._crit_edge: ; preds = %_ZN4llvm18MCSuperRegIteratorppEv.exit, %24 + %.018.lcssa = phi i8 [ 1, %24 ], [ %spec.select19, %_ZN4llvm18MCSuperRegIteratorppEv.exit ] + %58 = zext i1 %.077 to i8 + %59 = or i8 %.018.lcssa, %58 + %60 = icmp ne i8 %59, 0 %.not = icmp eq i16 %.sroa.562.076, 0 br i1 %.not, label %._crit_edge80, label %24, !llvm.loop !36 ._crit_edge80: ; preds = %._crit_edge - br i1 %61, label %.loopexit69, label %._crit_edge80..critedge_crit_edge + br i1 %60, label %.loopexit69, label %._crit_edge80..critedge_crit_edge ._crit_edge80..critedge_crit_edge: ; preds = %._crit_edge80 %.pre93 = load ptr, ptr %12, align 8 br label %.critedge .critedge: ; preds = %._crit_edge80..critedge_crit_edge, %3 - %62 = phi ptr [ %.pre93, %._crit_edge80..critedge_crit_edge ], [ %13, %3 ] - %63 = icmp eq ptr %62, null - %64 = getelementptr inbounds i8, ptr %62, i64 8 - %spec.select1 = select i1 %63, ptr null, ptr %64 - %65 = getelementptr inbounds nuw i8, ptr %spec.select1, i64 40 - %66 = load ptr, ptr %65, align 8 - %67 = getelementptr inbounds [2 x i16], ptr %66, i64 %18 - %68 = load i16, ptr %67, align 2 - %.not6587 = icmp eq i16 %68, 0 + %61 = phi ptr [ %.pre93, %._crit_edge80..critedge_crit_edge ], [ %13, %3 ] + %62 = icmp eq ptr %61, null + %63 = getelementptr inbounds i8, ptr %61, i64 8 + %spec.select1 = select i1 %62, ptr null, ptr %63 + %64 = getelementptr inbounds nuw i8, ptr %spec.select1, i64 40 + %65 = load ptr, ptr %64, align 8 + %66 = getelementptr inbounds [2 x i16], ptr %65, i64 %18 + %67 = load i16, ptr %66, align 2 + %.not6587 = icmp eq i16 %67, 0 br i1 %.not6587, label %.loopexit69, label %.lr.ph91 .lr.ph91: ; preds = %.critedge - %69 = getelementptr inbounds [2 x i16], ptr %66, i64 %18, i64 1 - %70 = load i16, ptr %69, align 2 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - br label %72 + %68 = getelementptr inbounds [2 x i16], ptr %65, i64 %18, i64 1 + %69 = load i16, ptr %68, align 2 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %71 -.loopexit: ; preds = %_ZN4llvm18MCSuperRegIteratorppEv.exit25, %72 +.loopexit: ; preds = %_ZN4llvm18MCSuperRegIteratorppEv.exit25, %71 %.not65 = icmp eq i16 %.sroa.538.089, 0 - br i1 %.not65, label %.loopexit69, label %72, !llvm.loop !37 - -72: ; preds = %.lr.ph91, %.loopexit - %.sroa.538.089 = phi i16 [ %70, %.lr.ph91 ], [ 0, %.loopexit ] - %.sroa.036.088 = phi i16 [ %68, %.lr.ph91 ], [ %.sroa.538.089, %.loopexit ] - %73 = load ptr, ptr %12, align 8 - %74 = getelementptr inbounds i8, ptr %73, i64 56 - %75 = load ptr, ptr %74, align 8, !noalias !38 - %.not6682 = icmp eq ptr %75, null + br i1 %.not65, label %.loopexit69, label %71, !llvm.loop !37 + +71: ; preds = %.lr.ph91, %.loopexit + %.sroa.538.089 = phi i16 [ %69, %.lr.ph91 ], [ 0, %.loopexit ] + %.sroa.036.088 = phi i16 [ %67, %.lr.ph91 ], [ %.sroa.538.089, %.loopexit ] + %72 = load ptr, ptr %12, align 8 + %73 = getelementptr inbounds i8, ptr %72, i64 56 + %74 = load ptr, ptr %73, align 8, !noalias !38 + %.not6682 = icmp eq ptr %74, null br i1 %.not6682, label %.loopexit, label %.lr.ph86.preheader -.lr.ph86.preheader: ; preds = %72 - %76 = getelementptr inbounds i8, ptr %73, i64 8 - %77 = load ptr, ptr %76, align 8, !noalias !38 - %78 = zext i16 %.sroa.036.088 to i64 - %79 = getelementptr inbounds %"struct.llvm::MCRegisterDesc", ptr %77, i64 %78, i32 2 - %80 = load i32, ptr %79, align 4, !noalias !38 - %81 = zext i32 %80 to i64 - %82 = getelementptr inbounds i16, ptr %75, i64 %81 +.lr.ph86.preheader: ; preds = %71 + %75 = getelementptr inbounds i8, ptr %72, i64 8 + %76 = load ptr, ptr %75, align 8, !noalias !38 + %77 = zext i16 %.sroa.036.088 to i64 + %78 = getelementptr inbounds %"struct.llvm::MCRegisterDesc", ptr %76, i64 %77, i32 2 + %79 = load i32, ptr %78, align 4, !noalias !38 + %80 = zext i32 %79 to i64 + %81 = getelementptr inbounds i16, ptr %74, i64 %80 br label %.lr.ph86 .lr.ph86: ; preds = %.lr.ph86.preheader, %_ZN4llvm18MCSuperRegIteratorppEv.exit25 - %.sroa.329.084 = phi ptr [ %92, %_ZN4llvm18MCSuperRegIteratorppEv.exit25 ], [ %82, %.lr.ph86.preheader ] - %.sroa.7.083 = phi i16 [ %94, %_ZN4llvm18MCSuperRegIteratorppEv.exit25 ], [ %.sroa.036.088, %.lr.ph86.preheader ] - %83 = load ptr, ptr %71, align 8 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 304 - %85 = zext i16 %.sroa.7.083 to i64 - %86 = load ptr, ptr %84, align 8 - %87 = getelementptr inbounds ptr, ptr %86, i64 %85 - %.0.i.i.i23 = load ptr, ptr %87, align 8 - %88 = icmp eq ptr %.0.i.i.i23, null - br i1 %88, label %_ZN4llvm18MCSuperRegIteratorppEv.exit25, label %89 - -89: ; preds = %.lr.ph86 - %90 = zext i16 %.sroa.7.083 to i32 - %91 = load ptr, ptr %4, align 8 - tail call void @_ZN4llvm16LiveIntervalCalc12extendToUsesERNS_9LiveRangeENS_8RegisterENS_11LaneBitmaskEPNS_12LiveIntervalE(ptr noundef nonnull align 8 dereferenceable(704) %91, ptr noundef nonnull align 8 dereferenceable(104) %1, i32 %90, i64 -1, ptr noundef null) #16 + %.sroa.329.084 = phi ptr [ %91, %_ZN4llvm18MCSuperRegIteratorppEv.exit25 ], [ %81, %.lr.ph86.preheader ] + %.sroa.7.083 = phi i16 [ %93, %_ZN4llvm18MCSuperRegIteratorppEv.exit25 ], [ %.sroa.036.088, %.lr.ph86.preheader ] + %82 = load ptr, ptr %70, align 8 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 304 + %84 = zext i16 %.sroa.7.083 to i64 + %85 = load ptr, ptr %83, align 8 + %86 = getelementptr inbounds ptr, ptr %85, i64 %84 + %.0.i.i.i23 = load ptr, ptr %86, align 8 + %87 = icmp eq ptr %.0.i.i.i23, null + br i1 %87, label %_ZN4llvm18MCSuperRegIteratorppEv.exit25, label %88 + +88: ; preds = %.lr.ph86 + %89 = zext i16 %.sroa.7.083 to i32 + %90 = load ptr, ptr %4, align 8 + tail call void @_ZN4llvm16LiveIntervalCalc12extendToUsesERNS_9LiveRangeENS_8RegisterENS_11LaneBitmaskEPNS_12LiveIntervalE(ptr noundef nonnull align 8 dereferenceable(704) %90, ptr noundef nonnull align 8 dereferenceable(104) %1, i32 %89, i64 -1, ptr noundef null) #16 br label %_ZN4llvm18MCSuperRegIteratorppEv.exit25 -_ZN4llvm18MCSuperRegIteratorppEv.exit25: ; preds = %.lr.ph86, %89 - %92 = getelementptr inbounds i8, ptr %.sroa.329.084, i64 2 - %93 = load i16, ptr %.sroa.329.084, align 2 - %94 = add i16 %93, %.sroa.7.083 - %.not.i.i24 = icmp eq i16 %93, 0 +_ZN4llvm18MCSuperRegIteratorppEv.exit25: ; preds = %.lr.ph86, %88 + %91 = getelementptr inbounds i8, ptr %.sroa.329.084, i64 2 + %92 = load i16, ptr %.sroa.329.084, align 2 + %93 = add i16 %92, %.sroa.7.083 + %.not.i.i24 = icmp eq i16 %92, 0 br i1 %.not.i.i24, label %.loopexit, label %.lr.ph86 .loopexit69: ; preds = %.loopexit, %.critedge, %._crit_edge80 - %95 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4llvm24UseSegmentSetForPhysRegsE, i64 128), align 8 - %96 = trunc i8 %95 to i1 - br i1 %96, label %97, label %98 + %94 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4llvm24UseSegmentSetForPhysRegsE, i64 128), align 8 + %95 = trunc i8 %94 to i1 + br i1 %95, label %96, label %97 -97: ; preds = %.loopexit69 +96: ; preds = %.loopexit69 tail call void @_ZN4llvm9LiveRange15flushSegmentSetEv(ptr noundef nonnull align 8 dereferenceable(104) %1) #16 - br label %98 + br label %97 -98: ; preds = %97, %.loopexit69 +97: ; preds = %96, %.loopexit69 ret void } diff --git a/bench/llvm/optimized/MLRegAllocEvictAdvisor.cpp.ll b/bench/llvm/optimized/MLRegAllocEvictAdvisor.cpp.ll index 0d44a01f8e3..7cc1d6f2eed 100644 --- a/bench/llvm/optimized/MLRegAllocEvictAdvisor.cpp.ll +++ b/bench/llvm/optimized/MLRegAllocEvictAdvisor.cpp.ll @@ -4458,8 +4458,8 @@ define internal fastcc void @_ZNK12_GLOBAL__N_114MLEvictAdvisor15extractFeatures %49 = getelementptr inbounds %"struct.llvm::RAGreedy::ExtraRegInfo::RegInfo", ptr %48, i64 %47 %50 = load i32, ptr %49, align 4 %51 = zext i32 %50 to i64 - %.sroa.speculated87 = call i64 @llvm.smax.i64(i64 %.0114158, i64 %51) - %.sroa.speculated84 = call i64 @llvm.smin.i64(i64 %.0115157, i64 %51) + %.sroa.speculated87 = call i64 @llvm.umax.i64(i64 %.0114158, i64 %51) + %.sroa.speculated84 = call i64 @llvm.umin.i64(i64 %.0115157, i64 %51) %52 = getelementptr inbounds nuw i8, ptr %42, i64 116 %53 = load float, ptr %52, align 4 %54 = fcmp olt float %.0113161, %53 @@ -6948,6 +6948,9 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #19 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #20 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.umax.i64(i64, i64) #21 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #21 @@ -6957,12 +6960,6 @@ declare i32 @llvm.smin.i32(i32, i32) #21 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umax.i32(i32, i32) #21 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smax.i64(i64, i64) #21 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #21 - 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 = { nofree nounwind } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/llvm/optimized/SimplifyCFGPass.cpp.ll b/bench/llvm/optimized/SimplifyCFGPass.cpp.ll index 125ed0ee3dd..3d6498068cc 100644 --- a/bench/llvm/optimized/SimplifyCFGPass.cpp.ll +++ b/bench/llvm/optimized/SimplifyCFGPass.cpp.ll @@ -2864,7 +2864,7 @@ _ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit: ; preds = %.lr.ph.i5 br i1 %54, label %.split.us, label %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split _ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split: ; preds = %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit, %._crit_edge51 - %.053 = phi i1 [ %82, %._crit_edge51 ], [ false, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit ] + %.053 = phi i1 [ %81, %._crit_edge51 ], [ false, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit ] %55 = load ptr, ptr %51, align 8 %.not3646 = icmp eq ptr %55, %52 br i1 %.not3646, label %.split.us, label %.lr.ph50 @@ -2923,74 +2923,73 @@ _ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split: ; preds = %_ZN ._crit_edge51: ; preds = %.critedge.loopexit, %.critedge.us %.1.lcssa = phi i8 [ %spec.select.us, %.critedge.us ], [ %spec.select, %.critedge.loopexit ] - %79 = and i8 %.1.lcssa, 1 - %80 = zext i1 %.053 to i8 - %81 = or i8 %79, %80 - %82 = icmp ne i8 %81, 0 - %83 = trunc nuw i8 %.1.lcssa to i1 - br i1 %83, label %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split, label %.split.us, !llvm.loop !63 + %79 = zext i1 %.053 to i8 + %80 = or i8 %.1.lcssa, %79 + %81 = icmp ne i8 %80, 0 + %82 = trunc nuw i8 %.1.lcssa to i1 + br i1 %82, label %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split, label %.split.us, !llvm.loop !63 .split.us: ; preds = %._crit_edge51, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit - %.us-phi54 = phi i1 [ false, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit ], [ %.053, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split ], [ %82, %._crit_edge51 ] - %84 = load ptr, ptr %7, align 8 - %85 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(400) %7) #20 - %.not4.i.i = icmp eq i64 %85, 0 + %.us-phi54 = phi i1 [ false, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit ], [ %.053, %_ZNK4llvm15SmallPtrSetImplIPNS_10BasicBlockEE5beginEv.exit.split ], [ %81, %._crit_edge51 ] + %83 = load ptr, ptr %7, align 8 + %84 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(400) %7) #20 + %.not4.i.i = icmp eq i64 %84, 0 br i1 %.not4.i.i, label %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i, label %.lr.ph.i.preheader.i .lr.ph.i.preheader.i: ; preds = %.split.us - %86 = getelementptr inbounds %"class.llvm::WeakVH", ptr %84, i64 %85 + %85 = getelementptr inbounds %"class.llvm::WeakVH", ptr %83, i64 %84 br label %.lr.ph.i.i25 .lr.ph.i.i25: ; preds = %_ZN4llvm6WeakVHD2Ev.exit.i.i, %.lr.ph.i.preheader.i - %.05.i.i = phi ptr [ %87, %_ZN4llvm6WeakVHD2Ev.exit.i.i ], [ %86, %.lr.ph.i.preheader.i ] - %87 = getelementptr inbounds i8, ptr %.05.i.i, i64 -24 - %88 = getelementptr inbounds i8, ptr %.05.i.i, i64 -8 - %89 = load ptr, ptr %88, align 8 - %magicptr.i.i.i.i = ptrtoint ptr %89 to i64 - switch i64 %magicptr.i.i.i.i, label %90 [ + %.05.i.i = phi ptr [ %86, %_ZN4llvm6WeakVHD2Ev.exit.i.i ], [ %85, %.lr.ph.i.preheader.i ] + %86 = getelementptr inbounds i8, ptr %.05.i.i, i64 -24 + %87 = getelementptr inbounds i8, ptr %.05.i.i, i64 -8 + %88 = load ptr, ptr %87, align 8 + %magicptr.i.i.i.i = ptrtoint ptr %88 to i64 + switch i64 %magicptr.i.i.i.i, label %89 [ i64 0, label %_ZN4llvm6WeakVHD2Ev.exit.i.i i64 -4096, label %_ZN4llvm6WeakVHD2Ev.exit.i.i i64 -8192, label %_ZN4llvm6WeakVHD2Ev.exit.i.i ] -90: ; preds = %.lr.ph.i.i25 - call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #20 +89: ; preds = %.lr.ph.i.i25 + call void @_ZN4llvm15ValueHandleBase17RemoveFromUseListEv(ptr noundef nonnull align 8 dereferenceable(24) %86) #20 br label %_ZN4llvm6WeakVHD2Ev.exit.i.i -_ZN4llvm6WeakVHD2Ev.exit.i.i: ; preds = %90, %.lr.ph.i.i25, %.lr.ph.i.i25, %.lr.ph.i.i25 - %.not.i.i26 = icmp eq ptr %84, %87 +_ZN4llvm6WeakVHD2Ev.exit.i.i: ; preds = %89, %.lr.ph.i.i25, %.lr.ph.i.i25, %.lr.ph.i.i25 + %.not.i.i26 = icmp eq ptr %83, %86 br i1 %.not.i.i26, label %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i, label %.lr.ph.i.i25, !llvm.loop !65 _ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i: ; preds = %_ZN4llvm6WeakVHD2Ev.exit.i.i, %.split.us - %91 = load ptr, ptr %7, align 8 - %92 = icmp eq ptr %91, %50 - br i1 %92, label %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit, label %93 + %90 = load ptr, ptr %7, align 8 + %91 = icmp eq ptr %90, %50 + br i1 %91, label %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit, label %92 -93: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i - call void @free(ptr noundef %91) #20 +92: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i + call void @free(ptr noundef %90) #20 br label %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit -_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i, %93 - %94 = load ptr, ptr %10, align 8 - %95 = load ptr, ptr %6, align 8 - %96 = icmp eq ptr %94, %95 - br i1 %96, label %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit, label %97 +_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit: ; preds = %_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE13destroy_rangeEPS1_S3_.exit.i, %92 + %93 = load ptr, ptr %10, align 8 + %94 = load ptr, ptr %6, align 8 + %95 = icmp eq ptr %93, %94 + br i1 %95, label %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit, label %96 -97: ; preds = %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit - call void @free(ptr noundef %94) #20 +96: ; preds = %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit + call void @free(ptr noundef %93) #20 br label %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit -_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit, %97 - %98 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(528) %5) #20 - %99 = load ptr, ptr %5, align 8 - %100 = icmp eq ptr %99, %8 - br i1 %100, label %_ZN4llvm11SmallVectorISt4pairIPKNS_10BasicBlockES4_ELj32EED2Ev.exit, label %101 +_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit: ; preds = %_ZN4llvm11SmallVectorINS_6WeakVHELj16EED2Ev.exit, %96 + %97 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(528) %5) #20 + %98 = load ptr, ptr %5, align 8 + %99 = icmp eq ptr %98, %8 + br i1 %99, label %_ZN4llvm11SmallVectorISt4pairIPKNS_10BasicBlockES4_ELj32EED2Ev.exit, label %100 -101: ; preds = %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit - call void @free(ptr noundef %99) #20 +100: ; preds = %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit + call void @free(ptr noundef %98) #20 br label %_ZN4llvm11SmallVectorISt4pairIPKNS_10BasicBlockES4_ELj32EED2Ev.exit -_ZN4llvm11SmallVectorISt4pairIPKNS_10BasicBlockES4_ELj32EED2Ev.exit: ; preds = %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit, %101 +_ZN4llvm11SmallVectorISt4pairIPKNS_10BasicBlockES4_ELj32EED2Ev.exit: ; preds = %_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EED2Ev.exit, %100 ret i1 %.us-phi54 } diff --git a/bench/lvgl/optimized/lv_indev_scroll.ll b/bench/lvgl/optimized/lv_indev_scroll.ll index ad5beab6a9f..b975120ba03 100644 --- a/bench/lvgl/optimized/lv_indev_scroll.ll +++ b/bench/lvgl/optimized/lv_indev_scroll.ll @@ -507,7 +507,7 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add %69 = call i32 @lv_obj_get_scroll_dir(ptr noundef nonnull %.0136246) #5 %70 = and i32 %69, 1 %71 = icmp ne i32 %70, 0 - %72 = trunc i8 %..0139 to i1 + %72 = trunc nuw i8 %..0139 to i1 %73 = and i32 %69, 2 %74 = icmp eq i32 %73, 0 %.0154 = select i1 %74, i8 0, i8 %..0139 @@ -603,11 +603,11 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add .thread283: ; preds = %98, %107 %108 = phi i1 [ %.2131, %107 ], [ true, %98 ] %109 = phi i1 [ %.2134, %107 ], [ true, %98 ] - %110 = trunc i8 %.0160 to i1 + %110 = trunc nuw i8 %.0160 to i1 %111 = load i32, ptr %19, align 4 %.not175 = icmp sge i32 %111, %6 %or.cond185.not = select i1 %110, i1 %.not175, i1 false - %112 = trunc i8 %.0158 to i1 + %112 = trunc nuw i8 %.0158 to i1 %.not176 = icmp sle i32 %111, %20 %or.cond212.not = select i1 %112, i1 %.not176, i1 false %or.cond257 = select i1 %or.cond185.not, i1 true, i1 %or.cond212.not @@ -628,7 +628,7 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add %117 = select i1 %71, i1 %72, i1 false %.not177 = icmp sge i32 %.pre270, %6 %or.cond187.not = select i1 %117, i1 %.not177, i1 false - %118 = trunc i8 %.0154 to i1 + %118 = trunc nuw i8 %.0154 to i1 %.not178 = icmp sle i32 %.pre270, %20 %or.cond214.not = select i1 %118, i1 %.not178, i1 false %or.cond258 = select i1 %or.cond187.not, i1 true, i1 %or.cond214.not @@ -640,7 +640,7 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add br i1 %or.cond190.not, label %129, label %120 120: ; preds = %116 - %121 = trunc i8 %.0154 to i1 + %121 = trunc nuw i8 %.0154 to i1 %122 = select i1 %.2143, i1 %121, i1 false %.not180 = icmp sle i32 %.pre270, %20 %or.cond216.not = select i1 %122, i1 %.not180, i1 false @@ -649,7 +649,7 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add .thread297: ; preds = %113, %120 %.4128293303 = phi i16 [ %spec.select261, %120 ], [ %.3127, %113 ] %.4295302 = phi ptr [ %spec.select262, %120 ], [ %.3, %113 ] - %123 = trunc i8 %.0160 to i1 + %123 = trunc nuw i8 %.0160 to i1 %124 = select i1 %115, i1 %123, i1 false %125 = load i32, ptr %19, align 4 %.not181 = icmp sge i32 %125, %6 @@ -657,7 +657,7 @@ define ptr @lv_indev_find_scroll_obj(ptr nocapture noundef %0) local_unnamed_add br i1 %or.cond192.not, label %129, label %126 126: ; preds = %.thread297 - %127 = trunc i8 %.0158 to i1 + %127 = trunc nuw i8 %.0158 to i1 %128 = select i1 %114, i1 %127, i1 false %.not182 = icmp sle i32 %125, %20 %or.cond218.not = select i1 %128, i1 %.not182, i1 false diff --git a/bench/lz4/optimized/lz4hc.c.ll b/bench/lz4/optimized/lz4hc.c.ll index 2ef6a6054d6..495270db0bd 100644 --- a/bench/lz4/optimized/lz4hc.c.ll +++ b/bench/lz4/optimized/lz4hc.c.ll @@ -11493,7 +11493,7 @@ for.body.i.i2386: ; preds = %if.then137.i.i2373, %conv146.i.i2391 = zext i16 %31 to i32 %inc.i.i2392 = add nsw i32 %accel.i.i1864.02684, 1 %shr.i.i2393 = ashr i32 %accel.i.i1864.02684, 4 - %cmp147.i.i2394 = icmp ult i32 %distanceToNextMatch.i.i1861.02685, %conv146.i.i2391 + %cmp147.i.i2394 = icmp samesign ult i32 %distanceToNextMatch.i.i1861.02685, %conv146.i.i2391 %accel.i.i1864.1 = select i1 %cmp147.i.i2394, i32 16, i32 %inc.i.i2392 %distanceToNextMatch.i.i1861.1 = tail call i32 @llvm.umax.i32(i32 %distanceToNextMatch.i.i1861.02685, i32 %conv146.i.i2391) %matchChainPos.i.i1848.3 = select i1 %cmp147.i.i2394, i32 %pos.i.i1865.02683, i32 %matchChainPos.i.i1848.22686 @@ -11502,7 +11502,7 @@ for.body.i.i2386: ; preds = %if.then137.i.i2373, br i1 %cmp140.i.i2377, label %for.body.i.i2386, label %for.end.i.i2378, !llvm.loop !17 for.end.i.i2378: ; preds = %for.body.i.i2386 - %cmp152.i.i2379 = icmp ugt i32 %distanceToNextMatch.i.i1861.1, 1 + %cmp152.i.i2379 = icmp samesign ugt i32 %distanceToNextMatch.i.i1861.1, 1 br i1 %cmp152.i.i2379, label %if.then154.i.i2381, label %if.end162.i.i2195 if.then154.i.i2381: ; preds = %for.end.i.i2378 @@ -12963,7 +12963,7 @@ for.body.i.i1295: ; preds = %if.then137.i.i1282, %conv146.i.i1300 = zext i16 %125 to i32 %inc.i.i1301 = add nsw i32 %accel.i.i773.02769, 1 %shr.i.i1302 = ashr i32 %accel.i.i773.02769, 4 - %cmp147.i.i1303 = icmp ult i32 %distanceToNextMatch.i.i770.02770, %conv146.i.i1300 + %cmp147.i.i1303 = icmp samesign ult i32 %distanceToNextMatch.i.i770.02770, %conv146.i.i1300 %accel.i.i773.1 = select i1 %cmp147.i.i1303, i32 16, i32 %inc.i.i1301 %distanceToNextMatch.i.i770.1 = tail call i32 @llvm.umax.i32(i32 %distanceToNextMatch.i.i770.02770, i32 %conv146.i.i1300) %matchChainPos.i.i757.3 = select i1 %cmp147.i.i1303, i32 %pos.i.i774.02768, i32 %matchChainPos.i.i757.22771 @@ -12972,7 +12972,7 @@ for.body.i.i1295: ; preds = %if.then137.i.i1282, br i1 %cmp140.i.i1286, label %for.body.i.i1295, label %for.end.i.i1287, !llvm.loop !17 for.end.i.i1287: ; preds = %for.body.i.i1295 - %cmp152.i.i1288 = icmp ugt i32 %distanceToNextMatch.i.i770.1, 1 + %cmp152.i.i1288 = icmp samesign ugt i32 %distanceToNextMatch.i.i770.1, 1 br i1 %cmp152.i.i1288, label %if.then154.i.i1290, label %if.end162.i.i1104 if.then154.i.i1290: ; preds = %for.end.i.i1287 @@ -14159,7 +14159,7 @@ for.body.i.i: ; preds = %if.then137.i.i, %fo %conv146.i.i = zext i16 %191 to i32 %inc.i.i = add nsw i32 %accel.i.i.02844, 1 %shr.i.i = ashr i32 %accel.i.i.02844, 4 - %cmp147.i.i = icmp ult i32 %distanceToNextMatch.i.i.02843, %conv146.i.i + %cmp147.i.i = icmp samesign ult i32 %distanceToNextMatch.i.i.02843, %conv146.i.i %matchChainPos.i.i.3 = select i1 %cmp147.i.i, i32 %pos.i.i.02845, i32 %matchChainPos.i.i.22842 %distanceToNextMatch.i.i.1 = tail call i32 @llvm.umax.i32(i32 %distanceToNextMatch.i.i.02843, i32 %conv146.i.i) %accel.i.i.1 = select i1 %cmp147.i.i, i32 16, i32 %inc.i.i @@ -14168,7 +14168,7 @@ for.body.i.i: ; preds = %if.then137.i.i, %fo br i1 %cmp140.i.i, label %for.body.i.i, label %for.end.i.i, !llvm.loop !17 for.end.i.i: ; preds = %for.body.i.i - %cmp152.i.i = icmp ugt i32 %distanceToNextMatch.i.i.1, 1 + %cmp152.i.i = icmp samesign ugt i32 %distanceToNextMatch.i.i.1, 1 br i1 %cmp152.i.i, label %if.then154.i.i, label %if.end162.i.i if.then154.i.i: ; preds = %for.end.i.i diff --git a/bench/meshlab/optimized/cleanfilter.cpp.ll b/bench/meshlab/optimized/cleanfilter.cpp.ll index ca0019234ef..caa929d00e3 100644 --- a/bench/meshlab/optimized/cleanfilter.cpp.ll +++ b/bench/meshlab/optimized/cleanfilter.cpp.ll @@ -12476,9 +12476,9 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa br label %125 125: ; preds = %.lr.ph96, %.loopexit - %126 = phi ptr [ %120, %.lr.ph96 ], [ %203, %.loopexit ] + %126 = phi ptr [ %120, %.lr.ph96 ], [ %202, %.loopexit ] %.094 = phi i32 [ 0, %.lr.ph96 ], [ %.3, %.loopexit ] - %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %204, %.loopexit ] + %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %203, %.loopexit ] %127 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 32 %128 = load i32, ptr %127, align 8 %129 = and i32 %128, 1 @@ -12489,16 +12489,16 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa %130 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 8 br label %131 -131: ; preds = %.preheader, %202 - %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %202 ] - %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %202 ] +131: ; preds = %.preheader, %201 + %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %201 ] + %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %201 ] %132 = getelementptr inbounds [3 x ptr], ptr %130, i64 0, i64 %indvars.iv103 %133 = load ptr, ptr %132, align 8 %134 = getelementptr inbounds i8, ptr %133, i64 20 %135 = load i32, ptr %134, align 4 %136 = and i32 %135, 16 %.not74 = icmp eq i32 %136, 0 - br i1 %.not74, label %137, label %202 + br i1 %.not74, label %137, label %201 137: ; preds = %131 %138 = or disjoint i32 %135, 16 @@ -12575,74 +12575,73 @@ _ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i: ; preds = %170, %_ZN3vcg4face3 br i1 %or.cond.not11.i.i, label %_ZNK3vcg4face3PosI6CFaceOEneERKS3_.exit.i.i, label %184, !llvm.loop !82 184: ; preds = %_ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i - %185 = and i8 %spec.select.i, 1 - %186 = zext nneg i8 %185 to i32 - %.0.i40 = lshr i32 %141, %186 - %187 = load ptr, ptr %124, align 8 - %188 = ptrtoint ptr %139 to i64 - %189 = ptrtoint ptr %187 to i64 - %190 = sub i64 %188, %189 - %191 = load ptr, ptr %122, align 8 - %192 = sdiv exact i64 %190, 12 - %193 = getelementptr inbounds i8, ptr %191, i64 %192 - %194 = load i32, ptr %193, align 4 - %.not = icmp eq i32 %.0.i40, %194 - br i1 %.not, label %202, label %195 - -195: ; preds = %184 - br i1 %1, label %196, label %200 - -196: ; preds = %195 - %197 = getelementptr inbounds i8, ptr %139, i64 20 - %198 = load i32, ptr %197, align 4 - %199 = or i32 %198, 32 - store i32 %199, ptr %197, align 4 - br label %200 - -200: ; preds = %196, %195 - %201 = add nsw i32 %.191, 1 - br label %202 + %185 = zext nneg i8 %spec.select.i to i32 + %.0.i40 = lshr i32 %141, %185 + %186 = load ptr, ptr %124, align 8 + %187 = ptrtoint ptr %139 to i64 + %188 = ptrtoint ptr %186 to i64 + %189 = sub i64 %187, %188 + %190 = load ptr, ptr %122, align 8 + %191 = sdiv exact i64 %189, 12 + %192 = getelementptr inbounds i8, ptr %190, i64 %191 + %193 = load i32, ptr %192, align 4 + %.not = icmp eq i32 %.0.i40, %193 + br i1 %.not, label %201, label %194 + +194: ; preds = %184 + br i1 %1, label %195, label %199 + +195: ; preds = %194 + %196 = getelementptr inbounds i8, ptr %139, i64 20 + %197 = load i32, ptr %196, align 4 + %198 = or i32 %197, 32 + store i32 %198, ptr %196, align 4 + br label %199 + +199: ; preds = %195, %194 + %200 = add nsw i32 %.191, 1 + br label %201 -202: ; preds = %131, %200, %184 - %.2 = phi i32 [ %.191, %131 ], [ %201, %200 ], [ %.191, %184 ] +201: ; preds = %131, %199, %184 + %.2 = phi i32 [ %.191, %131 ], [ %200, %199 ], [ %.191, %184 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next104, 3 br i1 %exitcond106.not, label %.loopexit.loopexit, label %131, !llvm.loop !83 -.loopexit.loopexit: ; preds = %202 +.loopexit.loopexit: ; preds = %201 %.pre110 = load ptr, ptr %23, align 8 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %125 - %203 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] + %202 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] %.3 = phi i32 [ %.094, %125 ], [ %.2, %.loopexit.loopexit ] - %204 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 - %.not72 = icmp eq ptr %204, %203 + %203 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 + %.not72 = icmp eq ptr %203, %202 br i1 %.not72, label %._crit_edge97, label %125, !llvm.loop !84 ._crit_edge97: ; preds = %.loopexit, %._crit_edge89 %.0.lcssa = phi i32 [ 0, %._crit_edge89 ], [ %.3, %.loopexit ] store ptr getelementptr inbounds (i8, ptr @_ZTVN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiEE, i64 16), ptr %4, align 8 - %205 = getelementptr inbounds i8, ptr %4, i64 16 - %206 = load ptr, ptr %205, align 8 - %207 = getelementptr inbounds i8, ptr %4, i64 24 - %208 = load ptr, ptr %207, align 8 - %.not.i.i.i41 = icmp eq ptr %208, %206 - br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %209 + %204 = getelementptr inbounds i8, ptr %4, i64 16 + %205 = load ptr, ptr %204, align 8 + %206 = getelementptr inbounds i8, ptr %4, i64 24 + %207 = load ptr, ptr %206, align 8 + %.not.i.i.i41 = icmp eq ptr %207, %205 + br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %208 -209: ; preds = %._crit_edge97 - store ptr %206, ptr %207, align 8 +208: ; preds = %._crit_edge97 + store ptr %205, ptr %206, align 8 br label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 -_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %209, %._crit_edge97 - %.not.i.i.i.i.i43 = icmp eq ptr %206, null - br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %210 +_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %208, %._crit_edge97 + %.not.i.i.i.i.i43 = icmp eq ptr %205, null + br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %209 -210: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 - call void @_ZdlPv(ptr noundef nonnull %206) #27 +209: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 + call void @_ZdlPv(ptr noundef nonnull %205) #27 br label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44 -_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %210 +_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %209 ret i32 %.0.lcssa } diff --git a/bench/meshlab/optimized/edit_paint.cpp.ll b/bench/meshlab/optimized/edit_paint.cpp.ll index db611021211..446af10e19a 100644 --- a/bench/meshlab/optimized/edit_paint.cpp.ll +++ b/bench/meshlab/optimized/edit_paint.cpp.ll @@ -15801,7 +15801,7 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg19IntersectionLineBoxIfEEbRKNS_4B .preheader69: ; preds = %43, %.preheader69 %indvars.iv82 = phi i64 [ %indvars.iv.next83, %.preheader69 ], [ 1, %43 ] %.075 = phi i32 [ %.1, %.preheader69 ], [ 0, %43 ] - %45 = sext i32 %.075 to i64 + %45 = zext nneg i32 %.075 to i64 %46 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %45 %47 = load float, ptr %46, align 4 %48 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %indvars.iv82 @@ -15814,54 +15814,53 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg19IntersectionLineBoxIfEEbRKNS_4B br i1 %exitcond85.not, label %52, label %.preheader69, !llvm.loop !187 52: ; preds = %.preheader69 - %53 = sext i32 %.1 to i64 + %53 = zext i32 %.1 to i64 %54 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %53 %55 = load float, ptr %54, align 4 %56 = fcmp olt float %55, 0.000000e+00 br i1 %56, label %.loopexit, label %.preheader .preheader: ; preds = %52 - %57 = zext i32 %.1 to i64 - %58 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %57 - %59 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %57 - br label %60 + %57 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %53 + %58 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %53 + br label %59 -60: ; preds = %.preheader, %77 - %indvars.iv86 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next87, %77 ] - %.not67 = icmp eq i64 %indvars.iv86, %57 - br i1 %.not67, label %75, label %61 +59: ; preds = %.preheader, %76 + %indvars.iv86 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next87, %76 ] + %.not67 = icmp eq i64 %indvars.iv86, %53 + br i1 %.not67, label %74, label %60 -61: ; preds = %60 - %62 = getelementptr inbounds [3 x float], ptr %1, i64 0, i64 %indvars.iv86 - %63 = load float, ptr %62, align 4 - %64 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 %indvars.iv86 - %65 = load float, ptr %64, align 4 - %66 = tail call float @llvm.fmuladd.f32(float %55, float %65, float %63) - %67 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %indvars.iv86 - store float %66, ptr %67, align 4 - %68 = getelementptr inbounds [3 x float], ptr %0, i64 0, i64 %indvars.iv86 - %69 = load float, ptr %68, align 4 - %70 = fcmp olt float %66, %69 - br i1 %70, label %.loopexit, label %71 - -71: ; preds = %61 - %72 = getelementptr inbounds [3 x float], ptr %7, i64 0, i64 %indvars.iv86 - %73 = load float, ptr %72, align 4 - %74 = fcmp ogt float %66, %73 - br i1 %74, label %.loopexit, label %77 - -75: ; preds = %60 - %76 = load float, ptr %58, align 4 - store float %76, ptr %59, align 4 - br label %77 +60: ; preds = %59 + %61 = getelementptr inbounds [3 x float], ptr %1, i64 0, i64 %indvars.iv86 + %62 = load float, ptr %61, align 4 + %63 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 %indvars.iv86 + %64 = load float, ptr %63, align 4 + %65 = tail call float @llvm.fmuladd.f32(float %55, float %64, float %62) + %66 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %indvars.iv86 + store float %65, ptr %66, align 4 + %67 = getelementptr inbounds [3 x float], ptr %0, i64 0, i64 %indvars.iv86 + %68 = load float, ptr %67, align 4 + %69 = fcmp olt float %65, %68 + br i1 %69, label %.loopexit, label %70 + +70: ; preds = %60 + %71 = getelementptr inbounds [3 x float], ptr %7, i64 0, i64 %indvars.iv86 + %72 = load float, ptr %71, align 4 + %73 = fcmp ogt float %65, %72 + br i1 %73, label %.loopexit, label %76 + +74: ; preds = %59 + %75 = load float, ptr %57, align 4 + store float %75, ptr %58, align 4 + br label %76 -77: ; preds = %75, %71 +76: ; preds = %74, %70 %indvars.iv.next87 = add nuw nsw i64 %indvars.iv86, 1 %exitcond89.not = icmp eq i64 %indvars.iv.next87, 3 - br i1 %exitcond89.not, label %.loopexit, label %60, !llvm.loop !188 + br i1 %exitcond89.not, label %.loopexit, label %59, !llvm.loop !188 -.loopexit: ; preds = %77, %61, %71, %52, %28 - %.066 = phi i1 [ true, %28 ], [ false, %52 ], [ true, %77 ], [ false, %61 ], [ false, %71 ] +.loopexit: ; preds = %76, %60, %70, %52, %28 + %.066 = phi i1 [ true, %28 ], [ false, %52 ], [ true, %76 ], [ false, %60 ], [ false, %70 ] ret i1 %.066 } diff --git a/bench/meshlab/optimized/edit_sample.cpp.ll b/bench/meshlab/optimized/edit_sample.cpp.ll index f4d04a5cb6f..45ff7a24b6f 100644 --- a/bench/meshlab/optimized/edit_sample.cpp.ll +++ b/bench/meshlab/optimized/edit_sample.cpp.ll @@ -8034,7 +8034,7 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg19IntersectionLineBoxIfEEbRKNS_4B .preheader69: ; preds = %43, %.preheader69 %indvars.iv82 = phi i64 [ %indvars.iv.next83, %.preheader69 ], [ 1, %43 ] %.075 = phi i32 [ %.1, %.preheader69 ], [ 0, %43 ] - %45 = sext i32 %.075 to i64 + %45 = zext nneg i32 %.075 to i64 %46 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %45 %47 = load float, ptr %46, align 4 %48 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %indvars.iv82 @@ -8047,54 +8047,53 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg19IntersectionLineBoxIfEEbRKNS_4B br i1 %exitcond85.not, label %52, label %.preheader69, !llvm.loop !55 52: ; preds = %.preheader69 - %53 = sext i32 %.1 to i64 + %53 = zext i32 %.1 to i64 %54 = getelementptr inbounds [3 x float], ptr %5, i64 0, i64 %53 %55 = load float, ptr %54, align 4 %56 = fcmp olt float %55, 0.000000e+00 br i1 %56, label %.loopexit, label %.preheader .preheader: ; preds = %52 - %57 = zext i32 %.1 to i64 - %58 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %57 - %59 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %57 - br label %60 + %57 = getelementptr inbounds [3 x float], ptr %6, i64 0, i64 %53 + %58 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %53 + br label %59 -60: ; preds = %.preheader, %77 - %indvars.iv86 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next87, %77 ] - %.not67 = icmp eq i64 %indvars.iv86, %57 - br i1 %.not67, label %75, label %61 - -61: ; preds = %60 - %62 = getelementptr inbounds [3 x float], ptr %1, i64 0, i64 %indvars.iv86 - %63 = load float, ptr %62, align 4 - %64 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 %indvars.iv86 - %65 = load float, ptr %64, align 4 - %66 = tail call float @llvm.fmuladd.f32(float %55, float %65, float %63) - %67 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %indvars.iv86 - store float %66, ptr %67, align 4 - %68 = getelementptr inbounds [3 x float], ptr %0, i64 0, i64 %indvars.iv86 - %69 = load float, ptr %68, align 4 - %70 = fcmp olt float %66, %69 - br i1 %70, label %.loopexit, label %71 - -71: ; preds = %61 - %72 = getelementptr inbounds [3 x float], ptr %7, i64 0, i64 %indvars.iv86 - %73 = load float, ptr %72, align 4 - %74 = fcmp ogt float %66, %73 - br i1 %74, label %.loopexit, label %77 - -75: ; preds = %60 - %76 = load float, ptr %58, align 4 - store float %76, ptr %59, align 4 - br label %77 +59: ; preds = %.preheader, %76 + %indvars.iv86 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next87, %76 ] + %.not67 = icmp eq i64 %indvars.iv86, %53 + br i1 %.not67, label %74, label %60 + +60: ; preds = %59 + %61 = getelementptr inbounds [3 x float], ptr %1, i64 0, i64 %indvars.iv86 + %62 = load float, ptr %61, align 4 + %63 = getelementptr inbounds [3 x float], ptr %27, i64 0, i64 %indvars.iv86 + %64 = load float, ptr %63, align 4 + %65 = tail call float @llvm.fmuladd.f32(float %55, float %64, float %62) + %66 = getelementptr inbounds [3 x float], ptr %2, i64 0, i64 %indvars.iv86 + store float %65, ptr %66, align 4 + %67 = getelementptr inbounds [3 x float], ptr %0, i64 0, i64 %indvars.iv86 + %68 = load float, ptr %67, align 4 + %69 = fcmp olt float %65, %68 + br i1 %69, label %.loopexit, label %70 + +70: ; preds = %60 + %71 = getelementptr inbounds [3 x float], ptr %7, i64 0, i64 %indvars.iv86 + %72 = load float, ptr %71, align 4 + %73 = fcmp ogt float %65, %72 + br i1 %73, label %.loopexit, label %76 + +74: ; preds = %59 + %75 = load float, ptr %57, align 4 + store float %75, ptr %58, align 4 + br label %76 -77: ; preds = %75, %71 +76: ; preds = %74, %70 %indvars.iv.next87 = add nuw nsw i64 %indvars.iv86, 1 %exitcond89.not = icmp eq i64 %indvars.iv.next87, 3 - br i1 %exitcond89.not, label %.loopexit, label %60, !llvm.loop !56 + br i1 %exitcond89.not, label %.loopexit, label %59, !llvm.loop !56 -.loopexit: ; preds = %77, %61, %71, %52, %28 - %.066 = phi i1 [ true, %28 ], [ false, %52 ], [ true, %77 ], [ false, %61 ], [ false, %71 ] +.loopexit: ; preds = %76, %60, %70, %52, %28 + %.066 = phi i1 [ true, %28 ], [ false, %52 ], [ true, %76 ], [ false, %60 ], [ false, %70 ] ret i1 %.066 } diff --git a/bench/meshlab/optimized/filter_developability.cpp.ll b/bench/meshlab/optimized/filter_developability.cpp.ll index 02a7e24d43d..691d556b214 100644 --- a/bench/meshlab/optimized/filter_developability.cpp.ll +++ b/bench/meshlab/optimized/filter_developability.cpp.ll @@ -6312,9 +6312,9 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa br label %125 125: ; preds = %.lr.ph96, %.loopexit - %126 = phi ptr [ %120, %.lr.ph96 ], [ %203, %.loopexit ] + %126 = phi ptr [ %120, %.lr.ph96 ], [ %202, %.loopexit ] %.094 = phi i32 [ 0, %.lr.ph96 ], [ %.3, %.loopexit ] - %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %204, %.loopexit ] + %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %203, %.loopexit ] %127 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 32 %128 = load i32, ptr %127, align 8 %129 = and i32 %128, 1 @@ -6325,16 +6325,16 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa %130 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 8 br label %131 -131: ; preds = %.preheader, %202 - %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %202 ] - %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %202 ] +131: ; preds = %.preheader, %201 + %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %201 ] + %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %201 ] %132 = getelementptr inbounds [3 x ptr], ptr %130, i64 0, i64 %indvars.iv103 %133 = load ptr, ptr %132, align 8 %134 = getelementptr inbounds i8, ptr %133, i64 20 %135 = load i32, ptr %134, align 4 %136 = and i32 %135, 16 %.not74 = icmp eq i32 %136, 0 - br i1 %.not74, label %137, label %202 + br i1 %.not74, label %137, label %201 137: ; preds = %131 %138 = or disjoint i32 %135, 16 @@ -6411,74 +6411,73 @@ _ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i: ; preds = %170, %_ZN3vcg4face3 br i1 %or.cond.not11.i.i, label %_ZNK3vcg4face3PosI6CFaceOEneERKS3_.exit.i.i, label %184, !llvm.loop !47 184: ; preds = %_ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i - %185 = and i8 %spec.select.i, 1 - %186 = zext nneg i8 %185 to i32 - %.0.i40 = lshr i32 %141, %186 - %187 = load ptr, ptr %124, align 8 - %188 = ptrtoint ptr %139 to i64 - %189 = ptrtoint ptr %187 to i64 - %190 = sub i64 %188, %189 - %191 = load ptr, ptr %122, align 8 - %192 = sdiv exact i64 %190, 12 - %193 = getelementptr inbounds i8, ptr %191, i64 %192 - %194 = load i32, ptr %193, align 4 - %.not = icmp eq i32 %.0.i40, %194 - br i1 %.not, label %202, label %195 - -195: ; preds = %184 - br i1 %1, label %196, label %200 - -196: ; preds = %195 - %197 = getelementptr inbounds i8, ptr %139, i64 20 - %198 = load i32, ptr %197, align 4 - %199 = or i32 %198, 32 - store i32 %199, ptr %197, align 4 - br label %200 - -200: ; preds = %196, %195 - %201 = add nsw i32 %.191, 1 - br label %202 - -202: ; preds = %131, %200, %184 - %.2 = phi i32 [ %.191, %131 ], [ %201, %200 ], [ %.191, %184 ] + %185 = zext nneg i8 %spec.select.i to i32 + %.0.i40 = lshr i32 %141, %185 + %186 = load ptr, ptr %124, align 8 + %187 = ptrtoint ptr %139 to i64 + %188 = ptrtoint ptr %186 to i64 + %189 = sub i64 %187, %188 + %190 = load ptr, ptr %122, align 8 + %191 = sdiv exact i64 %189, 12 + %192 = getelementptr inbounds i8, ptr %190, i64 %191 + %193 = load i32, ptr %192, align 4 + %.not = icmp eq i32 %.0.i40, %193 + br i1 %.not, label %201, label %194 + +194: ; preds = %184 + br i1 %1, label %195, label %199 + +195: ; preds = %194 + %196 = getelementptr inbounds i8, ptr %139, i64 20 + %197 = load i32, ptr %196, align 4 + %198 = or i32 %197, 32 + store i32 %198, ptr %196, align 4 + br label %199 + +199: ; preds = %195, %194 + %200 = add nsw i32 %.191, 1 + br label %201 + +201: ; preds = %131, %199, %184 + %.2 = phi i32 [ %.191, %131 ], [ %200, %199 ], [ %.191, %184 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next104, 3 br i1 %exitcond106.not, label %.loopexit.loopexit, label %131, !llvm.loop !48 -.loopexit.loopexit: ; preds = %202 +.loopexit.loopexit: ; preds = %201 %.pre110 = load ptr, ptr %23, align 8 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %125 - %203 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] + %202 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] %.3 = phi i32 [ %.094, %125 ], [ %.2, %.loopexit.loopexit ] - %204 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 - %.not72 = icmp eq ptr %204, %203 + %203 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 + %.not72 = icmp eq ptr %203, %202 br i1 %.not72, label %._crit_edge97, label %125, !llvm.loop !49 ._crit_edge97: ; preds = %.loopexit, %._crit_edge89 %.0.lcssa = phi i32 [ 0, %._crit_edge89 ], [ %.3, %.loopexit ] store ptr getelementptr inbounds (i8, ptr @_ZTVN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiEE, i64 16), ptr %4, align 8 - %205 = getelementptr inbounds i8, ptr %4, i64 16 - %206 = load ptr, ptr %205, align 8 - %207 = getelementptr inbounds i8, ptr %4, i64 24 - %208 = load ptr, ptr %207, align 8 - %.not.i.i.i41 = icmp eq ptr %208, %206 - br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %209 - -209: ; preds = %._crit_edge97 - store ptr %206, ptr %207, align 8 + %204 = getelementptr inbounds i8, ptr %4, i64 16 + %205 = load ptr, ptr %204, align 8 + %206 = getelementptr inbounds i8, ptr %4, i64 24 + %207 = load ptr, ptr %206, align 8 + %.not.i.i.i41 = icmp eq ptr %207, %205 + br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %208 + +208: ; preds = %._crit_edge97 + store ptr %205, ptr %206, align 8 br label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 -_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %209, %._crit_edge97 - %.not.i.i.i.i.i43 = icmp eq ptr %206, null - br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %210 +_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %208, %._crit_edge97 + %.not.i.i.i.i.i43 = icmp eq ptr %205, null + br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %209 -210: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 - call void @_ZdlPv(ptr noundef nonnull %206) #26 +209: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 + call void @_ZdlPv(ptr noundef nonnull %205) #26 br label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44 -_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %210 +_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %209 ret i32 %.0.lcssa } diff --git a/bench/meshlab/optimized/filter_texture_defragmentation.cpp.ll b/bench/meshlab/optimized/filter_texture_defragmentation.cpp.ll index a58d8173bec..46f628172be 100644 --- a/bench/meshlab/optimized/filter_texture_defragmentation.cpp.ll +++ b/bench/meshlab/optimized/filter_texture_defragmentation.cpp.ll @@ -23261,9 +23261,9 @@ _ZN3vcg4face10IsManifoldI8MeshFaceEEbRKT_i.exit.thread: ; preds = %70, %_ZN3vcg4 br label %103 103: ; preds = %.lr.ph96, %.loopexit - %104 = phi ptr [ %98, %.lr.ph96 ], [ %161, %.loopexit ] + %104 = phi ptr [ %98, %.lr.ph96 ], [ %160, %.loopexit ] %.094 = phi i32 [ 0, %.lr.ph96 ], [ %.3, %.loopexit ] - %.sroa.048.293 = phi ptr [ %99, %.lr.ph96 ], [ %162, %.loopexit ] + %.sroa.048.293 = phi ptr [ %99, %.lr.ph96 ], [ %161, %.loopexit ] %105 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 200 %106 = load i32, ptr %105, align 8 %107 = and i32 %106, 1 @@ -23274,16 +23274,16 @@ _ZN3vcg4face10IsManifoldI8MeshFaceEEbRKT_i.exit.thread: ; preds = %70, %_ZN3vcg4 %108 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 8 br label %109 -109: ; preds = %.preheader, %160 - %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %160 ] - %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %160 ] +109: ; preds = %.preheader, %159 + %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %159 ] + %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %159 ] %110 = getelementptr inbounds [3 x ptr], ptr %108, i64 0, i64 %indvars.iv103 %111 = load ptr, ptr %110, align 8 %112 = getelementptr inbounds i8, ptr %111, i64 116 %113 = load i32, ptr %112, align 4 %114 = and i32 %113, 16 %.not74 = icmp eq i32 %114, 0 - br i1 %.not74, label %115, label %160 + br i1 %.not74, label %115, label %159 115: ; preds = %109 %116 = or disjoint i32 %113, 16 @@ -23335,72 +23335,71 @@ _ZN3vcg4face3PosI8MeshFaceE5NextEEv.exit.i.i: ; preds = %127, %_ZNK3vcg4face br i1 %or.cond.not11.i.i, label %_ZNK3vcg4face3PosI8MeshFaceEneERKS3_.exit.i.i, label %143, !llvm.loop !391 143: ; preds = %_ZN3vcg4face3PosI8MeshFaceE5NextEEv.exit.i.i - %144 = and i8 %spec.select.i, 1 - %145 = zext nneg i8 %144 to i32 - %.0.i40 = lshr i32 %119, %145 - %146 = load ptr, ptr %101, align 8 - %147 = ptrtoint ptr %117 to i64 - %148 = ptrtoint ptr %146 to i64 - %149 = sub i64 %147, %148 - %150 = sdiv exact i64 %149, 30 - %151 = getelementptr inbounds i8, ptr %102, i64 %150 - %152 = load i32, ptr %151, align 4 - %.not = icmp eq i32 %.0.i40, %152 - br i1 %.not, label %160, label %153 - -153: ; preds = %143 - br i1 %1, label %154, label %158 - -154: ; preds = %153 - %155 = getelementptr inbounds i8, ptr %117, i64 116 - %156 = load i32, ptr %155, align 4 - %157 = or i32 %156, 32 - store i32 %157, ptr %155, align 4 - br label %158 + %144 = zext nneg i8 %spec.select.i to i32 + %.0.i40 = lshr i32 %119, %144 + %145 = load ptr, ptr %101, align 8 + %146 = ptrtoint ptr %117 to i64 + %147 = ptrtoint ptr %145 to i64 + %148 = sub i64 %146, %147 + %149 = sdiv exact i64 %148, 30 + %150 = getelementptr inbounds i8, ptr %102, i64 %149 + %151 = load i32, ptr %150, align 4 + %.not = icmp eq i32 %.0.i40, %151 + br i1 %.not, label %159, label %152 + +152: ; preds = %143 + br i1 %1, label %153, label %157 + +153: ; preds = %152 + %154 = getelementptr inbounds i8, ptr %117, i64 116 + %155 = load i32, ptr %154, align 4 + %156 = or i32 %155, 32 + store i32 %156, ptr %154, align 4 + br label %157 -158: ; preds = %154, %153 - %159 = add nsw i32 %.191, 1 - br label %160 +157: ; preds = %153, %152 + %158 = add nsw i32 %.191, 1 + br label %159 -160: ; preds = %109, %158, %143 - %.2 = phi i32 [ %.191, %109 ], [ %159, %158 ], [ %.191, %143 ] +159: ; preds = %109, %157, %143 + %.2 = phi i32 [ %.191, %109 ], [ %158, %157 ], [ %.191, %143 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next104, 3 br i1 %exitcond106.not, label %.loopexit.loopexit, label %109, !llvm.loop !392 -.loopexit.loopexit: ; preds = %160 +.loopexit.loopexit: ; preds = %159 %.pre110 = load ptr, ptr %23, align 8 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %103 - %161 = phi ptr [ %104, %103 ], [ %.pre110, %.loopexit.loopexit ] + %160 = phi ptr [ %104, %103 ], [ %.pre110, %.loopexit.loopexit ] %.3 = phi i32 [ %.094, %103 ], [ %.2, %.loopexit.loopexit ] - %162 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 216 - %.not72 = icmp eq ptr %162, %161 + %161 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 216 + %.not72 = icmp eq ptr %161, %160 br i1 %.not72, label %._crit_edge97, label %103, !llvm.loop !393 ._crit_edge97: ; preds = %.loopexit, %._crit_edge89.._crit_edge97_crit_edge - %163 = phi ptr [ %.pre111, %._crit_edge89.._crit_edge97_crit_edge ], [ %102, %.loopexit ] + %162 = phi ptr [ %.pre111, %._crit_edge89.._crit_edge97_crit_edge ], [ %102, %.loopexit ] %.0.lcssa = phi i32 [ 0, %._crit_edge89.._crit_edge97_crit_edge ], [ %.3, %.loopexit ] store ptr getelementptr inbounds (i8, ptr @_ZTVN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiEE, i64 16), ptr %4, align 8 - %164 = getelementptr inbounds i8, ptr %4, i64 24 - %165 = load ptr, ptr %164, align 8 - %.not.i.i.i41 = icmp eq ptr %165, %163 - br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %166 + %163 = getelementptr inbounds i8, ptr %4, i64 24 + %164 = load ptr, ptr %163, align 8 + %.not.i.i.i41 = icmp eq ptr %164, %162 + br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %165 -166: ; preds = %._crit_edge97 - store ptr %163, ptr %164, align 8 +165: ; preds = %._crit_edge97 + store ptr %162, ptr %163, align 8 br label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 -_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %166, %._crit_edge97 - %.not.i.i.i.i.i43 = icmp eq ptr %163, null - br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiED2Ev.exit44, label %167 +_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %165, %._crit_edge97 + %.not.i.i.i.i.i43 = icmp eq ptr %162, null + br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiED2Ev.exit44, label %166 -167: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 - call void @_ZdlPv(ptr noundef nonnull %163) #23 +166: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 + call void @_ZdlPv(ptr noundef nonnull %162) #23 br label %_ZN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiED2Ev.exit44 -_ZN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %167 +_ZN3vcg14SimpleTempDataISt6vectorI10MeshVertexSaIS2_EEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %166 ret i32 %.0.lcssa } diff --git a/bench/meshlab/optimized/filter_unsharp.cpp.ll b/bench/meshlab/optimized/filter_unsharp.cpp.ll index ae885ab49fd..72c7ca9ebd0 100644 --- a/bench/meshlab/optimized/filter_unsharp.cpp.ll +++ b/bench/meshlab/optimized/filter_unsharp.cpp.ll @@ -15362,9 +15362,9 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa br label %125 125: ; preds = %.lr.ph96, %.loopexit - %126 = phi ptr [ %120, %.lr.ph96 ], [ %203, %.loopexit ] + %126 = phi ptr [ %120, %.lr.ph96 ], [ %202, %.loopexit ] %.094 = phi i32 [ 0, %.lr.ph96 ], [ %.3, %.loopexit ] - %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %204, %.loopexit ] + %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %203, %.loopexit ] %127 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 32 %128 = load i32, ptr %127, align 8 %129 = and i32 %128, 1 @@ -15375,16 +15375,16 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa %130 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 8 br label %131 -131: ; preds = %.preheader, %202 - %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %202 ] - %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %202 ] +131: ; preds = %.preheader, %201 + %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %201 ] + %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %201 ] %132 = getelementptr inbounds [3 x ptr], ptr %130, i64 0, i64 %indvars.iv103 %133 = load ptr, ptr %132, align 8 %134 = getelementptr inbounds i8, ptr %133, i64 20 %135 = load i32, ptr %134, align 4 %136 = and i32 %135, 16 %.not74 = icmp eq i32 %136, 0 - br i1 %.not74, label %137, label %202 + br i1 %.not74, label %137, label %201 137: ; preds = %131 %138 = or disjoint i32 %135, 16 @@ -15461,74 +15461,73 @@ _ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i: ; preds = %170, %_ZN3vcg4face3 br i1 %or.cond.not11.i.i, label %_ZNK3vcg4face3PosI6CFaceOEneERKS3_.exit.i.i, label %184, !llvm.loop !69 184: ; preds = %_ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i - %185 = and i8 %spec.select.i, 1 - %186 = zext nneg i8 %185 to i32 - %.0.i40 = lshr i32 %141, %186 - %187 = load ptr, ptr %124, align 8 - %188 = ptrtoint ptr %139 to i64 - %189 = ptrtoint ptr %187 to i64 - %190 = sub i64 %188, %189 - %191 = load ptr, ptr %122, align 8 - %192 = sdiv exact i64 %190, 12 - %193 = getelementptr inbounds i8, ptr %191, i64 %192 - %194 = load i32, ptr %193, align 4 - %.not = icmp eq i32 %.0.i40, %194 - br i1 %.not, label %202, label %195 - -195: ; preds = %184 - br i1 %1, label %196, label %200 - -196: ; preds = %195 - %197 = getelementptr inbounds i8, ptr %139, i64 20 - %198 = load i32, ptr %197, align 4 - %199 = or i32 %198, 32 - store i32 %199, ptr %197, align 4 - br label %200 + %185 = zext nneg i8 %spec.select.i to i32 + %.0.i40 = lshr i32 %141, %185 + %186 = load ptr, ptr %124, align 8 + %187 = ptrtoint ptr %139 to i64 + %188 = ptrtoint ptr %186 to i64 + %189 = sub i64 %187, %188 + %190 = load ptr, ptr %122, align 8 + %191 = sdiv exact i64 %189, 12 + %192 = getelementptr inbounds i8, ptr %190, i64 %191 + %193 = load i32, ptr %192, align 4 + %.not = icmp eq i32 %.0.i40, %193 + br i1 %.not, label %201, label %194 + +194: ; preds = %184 + br i1 %1, label %195, label %199 + +195: ; preds = %194 + %196 = getelementptr inbounds i8, ptr %139, i64 20 + %197 = load i32, ptr %196, align 4 + %198 = or i32 %197, 32 + store i32 %198, ptr %196, align 4 + br label %199 -200: ; preds = %196, %195 - %201 = add nsw i32 %.191, 1 - br label %202 +199: ; preds = %195, %194 + %200 = add nsw i32 %.191, 1 + br label %201 -202: ; preds = %131, %200, %184 - %.2 = phi i32 [ %.191, %131 ], [ %201, %200 ], [ %.191, %184 ] +201: ; preds = %131, %199, %184 + %.2 = phi i32 [ %.191, %131 ], [ %200, %199 ], [ %.191, %184 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next104, 3 br i1 %exitcond106.not, label %.loopexit.loopexit, label %131, !llvm.loop !70 -.loopexit.loopexit: ; preds = %202 +.loopexit.loopexit: ; preds = %201 %.pre110 = load ptr, ptr %23, align 8 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %125 - %203 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] + %202 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] %.3 = phi i32 [ %.094, %125 ], [ %.2, %.loopexit.loopexit ] - %204 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 - %.not72 = icmp eq ptr %204, %203 + %203 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 + %.not72 = icmp eq ptr %203, %202 br i1 %.not72, label %._crit_edge97, label %125, !llvm.loop !71 ._crit_edge97: ; preds = %.loopexit, %._crit_edge89 %.0.lcssa = phi i32 [ 0, %._crit_edge89 ], [ %.3, %.loopexit ] store ptr getelementptr inbounds (i8, ptr @_ZTVN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiEE, i64 16), ptr %4, align 8 - %205 = getelementptr inbounds i8, ptr %4, i64 16 - %206 = load ptr, ptr %205, align 8 - %207 = getelementptr inbounds i8, ptr %4, i64 24 - %208 = load ptr, ptr %207, align 8 - %.not.i.i.i41 = icmp eq ptr %208, %206 - br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %209 + %204 = getelementptr inbounds i8, ptr %4, i64 16 + %205 = load ptr, ptr %204, align 8 + %206 = getelementptr inbounds i8, ptr %4, i64 24 + %207 = load ptr, ptr %206, align 8 + %.not.i.i.i41 = icmp eq ptr %207, %205 + br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %208 -209: ; preds = %._crit_edge97 - store ptr %206, ptr %207, align 8 +208: ; preds = %._crit_edge97 + store ptr %205, ptr %206, align 8 br label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 -_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %209, %._crit_edge97 - %.not.i.i.i.i.i43 = icmp eq ptr %206, null - br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %210 +_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %208, %._crit_edge97 + %.not.i.i.i.i.i43 = icmp eq ptr %205, null + br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %209 -210: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 - call void @_ZdlPv(ptr noundef nonnull %206) #31 +209: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 + call void @_ZdlPv(ptr noundef nonnull %205) #31 br label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44 -_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %210 +_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %209 ret i32 %.0.lcssa } diff --git a/bench/meshlab/optimized/ml_default_decorators.cpp.ll b/bench/meshlab/optimized/ml_default_decorators.cpp.ll index 4214ca71382..c8103355216 100644 --- a/bench/meshlab/optimized/ml_default_decorators.cpp.ll +++ b/bench/meshlab/optimized/ml_default_decorators.cpp.ll @@ -12958,9 +12958,9 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa br label %125 125: ; preds = %.lr.ph96, %.loopexit - %126 = phi ptr [ %120, %.lr.ph96 ], [ %203, %.loopexit ] + %126 = phi ptr [ %120, %.lr.ph96 ], [ %202, %.loopexit ] %.094 = phi i32 [ 0, %.lr.ph96 ], [ %.3, %.loopexit ] - %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %204, %.loopexit ] + %.sroa.048.293 = phi ptr [ %121, %.lr.ph96 ], [ %203, %.loopexit ] %127 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 32 %128 = load i32, ptr %127, align 8 %129 = and i32 %128, 1 @@ -12971,16 +12971,16 @@ _ZN3vcg4face10IsManifoldI6CFaceOEEbRKT_i.exit.thread: ; preds = %69, %_ZN3vcg4fa %130 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 8 br label %131 -131: ; preds = %.preheader, %202 - %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %202 ] - %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %202 ] +131: ; preds = %.preheader, %201 + %indvars.iv103 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next104, %201 ] + %.191 = phi i32 [ %.094, %.preheader ], [ %.2, %201 ] %132 = getelementptr inbounds [3 x ptr], ptr %130, i64 0, i64 %indvars.iv103 %133 = load ptr, ptr %132, align 8 %134 = getelementptr inbounds i8, ptr %133, i64 20 %135 = load i32, ptr %134, align 4 %136 = and i32 %135, 16 %.not74 = icmp eq i32 %136, 0 - br i1 %.not74, label %137, label %202 + br i1 %.not74, label %137, label %201 137: ; preds = %131 %138 = or disjoint i32 %135, 16 @@ -13057,74 +13057,73 @@ _ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i: ; preds = %170, %_ZN3vcg4face3 br i1 %or.cond.not11.i.i, label %_ZNK3vcg4face3PosI6CFaceOEneERKS3_.exit.i.i, label %184, !llvm.loop !224 184: ; preds = %_ZNK3vcg4face3PosI6CFaceOE8IsBorderEv.exit.i.i - %185 = and i8 %spec.select.i, 1 - %186 = zext nneg i8 %185 to i32 - %.0.i40 = lshr i32 %141, %186 - %187 = load ptr, ptr %124, align 8 - %188 = ptrtoint ptr %139 to i64 - %189 = ptrtoint ptr %187 to i64 - %190 = sub i64 %188, %189 - %191 = load ptr, ptr %122, align 8 - %192 = sdiv exact i64 %190, 12 - %193 = getelementptr inbounds i8, ptr %191, i64 %192 - %194 = load i32, ptr %193, align 4 - %.not = icmp eq i32 %.0.i40, %194 - br i1 %.not, label %202, label %195 - -195: ; preds = %184 - br i1 %1, label %196, label %200 - -196: ; preds = %195 - %197 = getelementptr inbounds i8, ptr %139, i64 20 - %198 = load i32, ptr %197, align 4 - %199 = or i32 %198, 32 - store i32 %199, ptr %197, align 4 - br label %200 - -200: ; preds = %196, %195 - %201 = add nsw i32 %.191, 1 - br label %202 + %185 = zext nneg i8 %spec.select.i to i32 + %.0.i40 = lshr i32 %141, %185 + %186 = load ptr, ptr %124, align 8 + %187 = ptrtoint ptr %139 to i64 + %188 = ptrtoint ptr %186 to i64 + %189 = sub i64 %187, %188 + %190 = load ptr, ptr %122, align 8 + %191 = sdiv exact i64 %189, 12 + %192 = getelementptr inbounds i8, ptr %190, i64 %191 + %193 = load i32, ptr %192, align 4 + %.not = icmp eq i32 %.0.i40, %193 + br i1 %.not, label %201, label %194 + +194: ; preds = %184 + br i1 %1, label %195, label %199 + +195: ; preds = %194 + %196 = getelementptr inbounds i8, ptr %139, i64 20 + %197 = load i32, ptr %196, align 4 + %198 = or i32 %197, 32 + store i32 %198, ptr %196, align 4 + br label %199 + +199: ; preds = %195, %194 + %200 = add nsw i32 %.191, 1 + br label %201 -202: ; preds = %131, %200, %184 - %.2 = phi i32 [ %.191, %131 ], [ %201, %200 ], [ %.191, %184 ] +201: ; preds = %131, %199, %184 + %.2 = phi i32 [ %.191, %131 ], [ %200, %199 ], [ %.191, %184 ] %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next104, 3 br i1 %exitcond106.not, label %.loopexit.loopexit, label %131, !llvm.loop !225 -.loopexit.loopexit: ; preds = %202 +.loopexit.loopexit: ; preds = %201 %.pre110 = load ptr, ptr %23, align 8 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %125 - %203 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] + %202 = phi ptr [ %126, %125 ], [ %.pre110, %.loopexit.loopexit ] %.3 = phi i32 [ %.094, %125 ], [ %.2, %.loopexit.loopexit ] - %204 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 - %.not72 = icmp eq ptr %204, %203 + %203 = getelementptr inbounds i8, ptr %.sroa.048.293, i64 48 + %.not72 = icmp eq ptr %203, %202 br i1 %.not72, label %._crit_edge97, label %125, !llvm.loop !226 ._crit_edge97: ; preds = %.loopexit, %._crit_edge89 %.0.lcssa = phi i32 [ 0, %._crit_edge89 ], [ %.3, %.loopexit ] store ptr getelementptr inbounds (i8, ptr @_ZTVN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiEE, i64 16), ptr %4, align 8 - %205 = getelementptr inbounds i8, ptr %4, i64 16 - %206 = load ptr, ptr %205, align 8 - %207 = getelementptr inbounds i8, ptr %4, i64 24 - %208 = load ptr, ptr %207, align 8 - %.not.i.i.i41 = icmp eq ptr %208, %206 - br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %209 - -209: ; preds = %._crit_edge97 - store ptr %206, ptr %207, align 8 + %204 = getelementptr inbounds i8, ptr %4, i64 16 + %205 = load ptr, ptr %204, align 8 + %206 = getelementptr inbounds i8, ptr %4, i64 24 + %207 = load ptr, ptr %206, align 8 + %.not.i.i.i41 = icmp eq ptr %207, %205 + br i1 %.not.i.i.i41, label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, label %208 + +208: ; preds = %._crit_edge97 + store ptr %205, ptr %206, align 8 br label %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 -_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %209, %._crit_edge97 - %.not.i.i.i.i.i43 = icmp eq ptr %206, null - br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %210 +_ZNSt6vectorIiSaIiEE5clearEv.exit.i42: ; preds = %208, %._crit_edge97 + %.not.i.i.i.i.i43 = icmp eq ptr %205, null + br i1 %.not.i.i.i.i.i43, label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44, label %209 -210: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 - call void @_ZdlPv(ptr noundef nonnull %206) #24 +209: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42 + call void @_ZdlPv(ptr noundef nonnull %205) #24 br label %_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44 -_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %210 +_ZN3vcg14SimpleTempDataINS_6vertex10vector_ocfI8CVertexOEEiED2Ev.exit44: ; preds = %_ZNSt6vectorIiSaIiEE5clearEv.exit.i42, %209 ret i32 %.0.lcssa } diff --git a/bench/meshlab/optimized/quadric_simp.cpp.ll b/bench/meshlab/optimized/quadric_simp.cpp.ll index 2d1b5dc908a..eb1b12f8948 100644 --- a/bench/meshlab/optimized/quadric_simp.cpp.ll +++ b/bench/meshlab/optimized/quadric_simp.cpp.ll @@ -16988,7 +16988,7 @@ _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0E br i1 %.not67, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit124, label %495 495: ; preds = %494 - %496 = add nsw i64 %.sroa.0.1.i.i, %.060233 + %496 = add nuw nsw i64 %.sroa.0.1.i.i, %.060233 %497 = getelementptr inbounds double, ptr %482, i64 %.060233 %498 = getelementptr inbounds double, ptr %482, i64 %496 %499 = load double, ptr %497, align 8 @@ -45872,7 +45872,7 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg8Quadric5IdE7Gauss55EPdPA6_d(ptr .loopexit107: ; preds = %._crit_edge121.us %indvars.iv.next135 = add nuw nsw i64 %indvars.iv134, 1 %exitcond155.not = icmp eq i64 %indvars.iv.next153, 4 - br i1 %exitcond155.not, label %41, label %.lr.ph.preheader, !llvm.loop !982 + br i1 %exitcond155.not, label %39, label %.lr.ph.preheader, !llvm.loop !982 .lr.ph.preheader: ; preds = %.loopexit107, %10 %indvars.iv152 = phi i64 [ 0, %10 ], [ %indvars.iv.next153, %.loopexit107 ] @@ -45908,95 +45908,91 @@ define linkonce_odr noundef zeroext i1 @_ZN3vcg8Quadric5IdE7Gauss55EPdPA6_d(ptr %.not105 = icmp eq i64 %indvars.iv152, %23 br i1 %.not105, label %.lr.ph120.us.preheader, label %.preheader108 -.preheader108: ; preds = %22 - %24 = sext i32 %.197 to i64 - br label %25 - -25: ; preds = %.preheader108, %25 - %indvars.iv140 = phi i64 [ 0, %.preheader108 ], [ %indvars.iv.next141, %25 ] - %26 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv152, i64 %indvars.iv140 +.preheader108: ; preds = %22, %.preheader108 + %indvars.iv140 = phi i64 [ %indvars.iv.next141, %.preheader108 ], [ 0, %22 ] + %24 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv152, i64 %indvars.iv140 + %25 = load double, ptr %24, align 8 + %26 = getelementptr inbounds [6 x double], ptr %1, i64 %23, i64 %indvars.iv140 %27 = load double, ptr %26, align 8 - %28 = getelementptr inbounds [6 x double], ptr %1, i64 %24, i64 %indvars.iv140 - %29 = load double, ptr %28, align 8 - store double %29, ptr %26, align 8 - store double %27, ptr %28, align 8 + store double %27, ptr %24, align 8 + store double %25, ptr %26, align 8 %indvars.iv.next141 = add nuw nsw i64 %indvars.iv140, 1 %exitcond143.not = icmp eq i64 %indvars.iv.next141, 6 - br i1 %exitcond143.not, label %.lr.ph120.us.preheader, label %25, !llvm.loop !984 + br i1 %exitcond143.not, label %.lr.ph120.us.preheader, label %.preheader108, !llvm.loop !984 -.lr.ph120.us.preheader: ; preds = %25, %22 +.lr.ph120.us.preheader: ; preds = %.preheader108, %22 br label %.lr.ph120.us .lr.ph120.us: ; preds = %.lr.ph120.us.preheader, %._crit_edge121.us %indvars.iv148 = phi i64 [ %indvars.iv.next149, %._crit_edge121.us ], [ %indvars.iv134, %.lr.ph120.us.preheader ] - %30 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv148, i64 %indvars.iv152 - %31 = load double, ptr %30, align 8 - %32 = load double, ptr %12, align 8 - %33 = fdiv double %31, %32 - br label %34 + %28 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv148, i64 %indvars.iv152 + %29 = load double, ptr %28, align 8 + %30 = load double, ptr %12, align 8 + %31 = fdiv double %29, %30 + br label %32 -34: ; preds = %.lr.ph120.us, %34 - %indvars.iv144 = phi i64 [ %indvars.iv134, %.lr.ph120.us ], [ %indvars.iv.next145, %34 ] - %35 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv152, i64 %indvars.iv144 +32: ; preds = %.lr.ph120.us, %32 + %indvars.iv144 = phi i64 [ %indvars.iv134, %.lr.ph120.us ], [ %indvars.iv.next145, %32 ] + %33 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv152, i64 %indvars.iv144 + %34 = load double, ptr %33, align 8 + %35 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv148, i64 %indvars.iv144 %36 = load double, ptr %35, align 8 - %37 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv148, i64 %indvars.iv144 - %38 = load double, ptr %37, align 8 - %39 = fneg double %36 - %40 = tail call double @llvm.fmuladd.f64(double %39, double %33, double %38) - store double %40, ptr %37, align 8 + %37 = fneg double %34 + %38 = tail call double @llvm.fmuladd.f64(double %37, double %31, double %36) + store double %38, ptr %35, align 8 %indvars.iv.next145 = add nuw nsw i64 %indvars.iv144, 1 %exitcond147.not = icmp eq i64 %indvars.iv.next145, 6 - br i1 %exitcond147.not, label %._crit_edge121.us, label %34, !llvm.loop !985 + br i1 %exitcond147.not, label %._crit_edge121.us, label %32, !llvm.loop !985 -._crit_edge121.us: ; preds = %34 - store double 0.000000e+00, ptr %30, align 8 +._crit_edge121.us: ; preds = %32 + store double 0.000000e+00, ptr %28, align 8 %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next149, 5 br i1 %exitcond151.not, label %.loopexit107, label %.lr.ph120.us, !llvm.loop !986 -41: ; preds = %.loopexit107 - %42 = getelementptr inbounds i8, ptr %1, i64 224 - %43 = load double, ptr %42, align 8 - %44 = tail call noundef double @llvm.fabs.f64(double %43) - %45 = fcmp olt double %44, %11 - br i1 %45, label %.loopexit, label %.preheader +39: ; preds = %.loopexit107 + %40 = getelementptr inbounds i8, ptr %1, i64 224 + %41 = load double, ptr %40, align 8 + %42 = tail call noundef double @llvm.fabs.f64(double %41) + %43 = fcmp olt double %42, %11 + br i1 %43, label %.loopexit, label %.preheader -.preheader: ; preds = %41, %._crit_edge129 - %indvars.iv156 = phi i64 [ %indvars.iv.next157, %._crit_edge129 ], [ 4, %41 ] - %46 = icmp samesign ult i64 %indvars.iv156, 4 - br i1 %46, label %.lr.ph128, label %._crit_edge129 +.preheader: ; preds = %39, %._crit_edge129 + %indvars.iv156 = phi i64 [ %indvars.iv.next157, %._crit_edge129 ], [ 4, %39 ] + %44 = icmp samesign ult i64 %indvars.iv156, 4 + br i1 %44, label %.lr.ph128, label %._crit_edge129 .lr.ph128: ; preds = %.preheader, %.lr.ph128 %indvars.iv158 = phi i64 [ %indvars.iv.next159, %.lr.ph128 ], [ %indvars.iv156, %.preheader ] - %.0127 = phi double [ %51, %.lr.ph128 ], [ 0.000000e+00, %.preheader ] + %.0127 = phi double [ %49, %.lr.ph128 ], [ 0.000000e+00, %.preheader ] %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 1 - %47 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 %indvars.iv.next159 + %45 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 %indvars.iv.next159 + %46 = load double, ptr %45, align 8 + %47 = getelementptr inbounds double, ptr %0, i64 %indvars.iv.next159 %48 = load double, ptr %47, align 8 - %49 = getelementptr inbounds double, ptr %0, i64 %indvars.iv.next159 - %50 = load double, ptr %49, align 8 - %51 = tail call double @llvm.fmuladd.f64(double %48, double %50, double %.0127) + %49 = tail call double @llvm.fmuladd.f64(double %46, double %48, double %.0127) %exitcond161.not = icmp eq i64 %indvars.iv.next159, 4 br i1 %exitcond161.not, label %._crit_edge129, label %.lr.ph128, !llvm.loop !987 ._crit_edge129: ; preds = %.lr.ph128, %.preheader - %.0.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %51, %.lr.ph128 ] - %52 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 5 - %53 = load double, ptr %52, align 8 - %54 = fsub double %53, %.0.lcssa - %55 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 %indvars.iv156 - %56 = load double, ptr %55, align 8 - %57 = fdiv double %54, %56 - %58 = getelementptr inbounds double, ptr %0, i64 %indvars.iv156 - store double %57, ptr %58, align 8 - %59 = tail call double @llvm.fabs.f64(double %57) - %narrow.i = fcmp one double %59, 0x7FF0000000000000 + %.0.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %49, %.lr.ph128 ] + %50 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 5 + %51 = load double, ptr %50, align 8 + %52 = fsub double %51, %.0.lcssa + %53 = getelementptr inbounds [6 x double], ptr %1, i64 %indvars.iv156, i64 %indvars.iv156 + %54 = load double, ptr %53, align 8 + %55 = fdiv double %52, %54 + %56 = getelementptr inbounds double, ptr %0, i64 %indvars.iv156 + store double %55, ptr %56, align 8 + %57 = tail call double @llvm.fabs.f64(double %55) + %narrow.i = fcmp one double %57, 0x7FF0000000000000 %indvars.iv.next157 = add nsw i64 %indvars.iv156, -1 %.not = icmp ne i64 %indvars.iv156, 0 %or.cond.not = and i1 %.not, %narrow.i br i1 %or.cond.not, label %.preheader, label %.loopexit, !llvm.loop !988 -.loopexit: ; preds = %._crit_edge, %._crit_edge129, %41 - %.090 = phi i1 [ false, %41 ], [ %narrow.i, %._crit_edge129 ], [ false, %._crit_edge ] +.loopexit: ; preds = %._crit_edge, %._crit_edge129, %39 + %.090 = phi i1 [ false, %39 ], [ %narrow.i, %._crit_edge129 ], [ false, %._crit_edge ] ret i1 %.090 } diff --git a/bench/minetest/optimized/COBJMeshFileLoader.cpp.ll b/bench/minetest/optimized/COBJMeshFileLoader.cpp.ll index 4e4402e03cc..d81f533f858 100644 --- a/bench/minetest/optimized/COBJMeshFileLoader.cpp.ll +++ b/bench/minetest/optimized/COBJMeshFileLoader.cpp.ll @@ -5856,7 +5856,7 @@ if.then15: ; preds = %lor.lhs.false, %lor br i1 %or.cond29.i.i, label %while.body.i.i, label %if.else13.i.thread while.body.i.i: ; preds = %if.then15, %while.body.i.i - %8 = phi i8 [ %10, %while.body.i.i ], [ %6, %if.then15 ] + %8 = phi i8 [ %9, %while.body.i.i ], [ %6, %if.then15 ] %unsignedValue.032.i.i = phi i32 [ %unsignedValue.2.i.i, %while.body.i.i ], [ 0, %if.then15 ] %overflow.031.i.i = phi i8 [ %spec.select.i.i, %while.body.i.i ], [ 0, %if.then15 ] %in.addr.030.i.i = phi ptr [ %incdec.ptr.i.i, %while.body.i.i ], [ %in.addr.0.i, %if.then15 ] @@ -5867,13 +5867,12 @@ while.body.i.i: ; preds = %if.then15, %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 - %9 = and i8 %spec.select.i.i, 1 - %tobool10.not.i.i = icmp eq i8 %9, 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 - %10 = load i8, ptr %incdec.ptr.i.i, align 1, !tbaa !28 - %11 = add i8 %10, -48 - %or.cond.i.i = icmp ult i8 %11, 10 + %9 = load i8, ptr %incdec.ptr.i.i, align 1, !tbaa !28 + %10 = add i8 %9, -48 + %or.cond.i.i = icmp ult i8 %10, 10 br i1 %or.cond.i.i, label %while.body.i.i, label %while.end.i.i, !llvm.loop !231 while.end.i.i: ; preds = %while.body.i.i @@ -5906,7 +5905,7 @@ _ZN3irr4core8strtol10EPKcPS2_.exit.thread: ; preds = %if.else13.i.thread, %idxprom1995 = zext i32 %idxType.0111 to i64 %arrayidx2096 = getelementptr inbounds i32, ptr %idx, i64 %idxprom1995 store i32 %retval.1.i.ph, ptr %arrayidx2096, align 4, !tbaa !90 - %12 = add nsw i32 %retval.1.i.ph, -1 + %11 = add nsw i32 %retval.1.i.ph, -1 br label %if.else35 _ZN3irr4core8strtol10EPKcPS2_.exit: ; preds = %if.else13.i @@ -5943,14 +5942,14 @@ sw.bb31: ; preds = %if.then24 if.else35: ; preds = %_ZN3irr4core8strtol10EPKcPS2_.exit, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread122 %arrayidx2099 = phi ptr [ %arrayidx2096, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread ], [ %arrayidx20, %_ZN3irr4core8strtol10EPKcPS2_.exit ], [ %arrayidx20126, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread122 ] - %retval.1.i98 = phi i32 [ %12, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread ], [ -1, %_ZN3irr4core8strtol10EPKcPS2_.exit ], [ -1, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread122 ] + %retval.1.i98 = phi i32 [ %11, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread ], [ -1, %_ZN3irr4core8strtol10EPKcPS2_.exit ], [ -1, %_ZN3irr4core8strtol10EPKcPS2_.exit.thread122 ] store i32 %retval.1.i98, ptr %arrayidx2099, align 4, !tbaa !90 br label %if.end38 if.end38: ; preds = %if.else35, %sw.bb31, %sw.bb27, %sw.bb, %if.then24 store i8 0, ptr %word, align 16, !tbaa !28 - %13 = load i8, ptr %p.0110, align 1, !tbaa !28 - %cmp41 = icmp eq i8 %13, 47 + %12 = load i8, ptr %p.0110, align 1, !tbaa !28 + %cmp41 = icmp eq i8 %12, 47 %inc43 = add i32 %idxType.0111, 1 br i1 %cmp41, label %if.then42, label %while.cond48.preheader @@ -5959,14 +5958,14 @@ while.cond48.preheader: ; preds = %if.end38 br i1 %cmp50115, label %while.body51.preheader, label %cleanup while.body51.preheader: ; preds = %while.cond48.preheader - %14 = shl nuw nsw i32 %inc43, 2 - %15 = zext nneg i32 %14 to i64 - %scevgep = getelementptr i8, ptr %idx, i64 %15 - %16 = sub nsw i32 1, %idxType.0111 - %17 = zext nneg i32 %16 to i64 - %18 = shl nuw nsw i64 %17, 2 - %19 = add nuw nsw i64 %18, 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 -1, i64 %19, i1 false), !tbaa !90 + %13 = shl nuw nsw i32 %inc43, 2 + %14 = zext nneg i32 %13 to i64 + %scevgep = getelementptr i8, ptr %idx, i64 %14 + %15 = sub nsw i32 1, %idxType.0111 + %16 = zext nneg i32 %15 to i64 + %17 = shl nuw nsw i64 %16, 2 + %18 = add nuw nsw i64 %17, 4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 -1, i64 %18, i1 false), !tbaa !90 br label %cleanup if.then42: ; preds = %if.end38 @@ -11146,7 +11145,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 ] @@ -11157,13 +11156,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 !28 - %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 !28 + %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 !231 while.end.i.i: ; preds = %while.body.i.i 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/clientmap.cpp.ll b/bench/minetest/optimized/clientmap.cpp.ll index 329588d771e..d81df5a28c5 100644 --- a/bench/minetest/optimized/clientmap.cpp.ll +++ b/bench/minetest/optimized/clientmap.cpp.ll @@ -11326,8 +11326,7 @@ call46.i.noexc: ; preds = %for.body.i lor.lhs.false.i: ; preds = %call46.i.noexc %99 = and i8 %retval.sroa.0.0.copyload.i.i249.i, 64 %bf.cast59.not.i = icmp eq i8 %99, 0 - %100 = and i8 %allow_non_sunlight_propagates.1.i, 1 - %tobool71.not.i = icmp eq i8 %100, 0 + %tobool71.not.i = icmp eq i8 %allow_non_sunlight_propagates.1.i, 0 %or.cond139.i = select i1 %bf.cast59.not.i, i1 %tobool71.not.i, i1 false br i1 %or.cond139.i, label %if.then72.i, label %if.end76.i @@ -11342,26 +11341,26 @@ if.end76.i: ; preds = %lor.lhs.false.i land.lhs.true78.i: ; preds = %if.end76.i %tobool79.not.i = icmp eq i8 %sunlight_seen_now.0, 0 - %101 = and i8 %nonlight_seen.0301.i, 1 - %tobool81.not.i = icmp eq i8 %101, 0 + %100 = and i8 %nonlight_seen.0301.i, 1 + %tobool81.not.i = icmp eq i8 %100, 0 %or.cond140.i = select i1 %tobool79.not.i, i1 %tobool81.not.i, i1 false br i1 %or.cond140.i, label %_ZNK7MapNode8getLightE9LightBank20ContentLightingFlags.exit.i, label %_ZNK7MapNode13getLightBlendEj20ContentLightingFlags.exit.i _ZNK7MapNode8getLightE9LightBank20ContentLightingFlags.exit.i: ; preds = %land.lhs.true78.i - %102 = and i8 %n44.sroa.4.0.extract.trunc.i, 15 + %101 = and i8 %n44.sroa.4.0.extract.trunc.i, 15 %bf.clear.i.i = and i8 %retval.sroa.0.0.copyload.i.i249.i, 15 - %cond.i250.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i, i8 %102) + %cond.i250.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i, i8 %101) %cmp87.i = icmp eq i8 %cond.i250.i, 15 %spec.select = zext i1 %cmp87.i to i8 br label %_ZNK7MapNode13getLightBlendEj20ContentLightingFlags.exit.i _ZNK7MapNode13getLightBlendEj20ContentLightingFlags.exit.i: ; preds = %_ZNK7MapNode8getLightE9LightBank20ContentLightingFlags.exit.i, %land.lhs.true78.i, %if.end76.i %sunlight_seen_now.1 = phi i8 [ %sunlight_seen_now.0, %if.end76.i ], [ %sunlight_seen_now.0, %land.lhs.true78.i ], [ %spec.select, %_ZNK7MapNode8getLightE9LightBank20ContentLightingFlags.exit.i ] - %103 = and i8 %n44.sroa.4.0.extract.trunc.i, 15 + %102 = and i8 %n44.sroa.4.0.extract.trunc.i, 15 %bf.clear.i.i.i = and i8 %retval.sroa.0.0.copyload.i.i249.i, 15 - %cond.i.i.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i.i, i8 %103) - %104 = lshr i8 %n44.sroa.4.0.extract.trunc.i, 4 - %cond.i13.i.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i.i, i8 %104) + %cond.i.i.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i.i, i8 %102) + %103 = lshr i8 %n44.sroa.4.0.extract.trunc.i, 4 + %cond.i13.i.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i.i, i8 %103) %conv.i.i.i = zext nneg i8 %cond.i.i.i to i32 %mul.i.i.i = mul i32 %daylight_factor, %conv.i.i.i %conv1.i.i.i = zext nneg i8 %cond.i13.i.i to i32 @@ -11370,10 +11369,10 @@ _ZNK7MapNode13getLightBlendEj20ContentLightingFlags.exit.i: ; preds = %_ZNK7MapN %div.i.i251.i = udiv i32 %add.i.i.i, 1000 %spec.store.select.i.i.i = call i32 @llvm.umin.i32(i32 %div.i.i251.i, i32 15) %conv3.i.i.i = zext nneg i32 %spec.store.select.i.i.i to i64 - %105 = load ptr, ptr @light_decode_table, align 8, !tbaa !84 - %arrayidx.i.i261 = getelementptr inbounds i8, ptr %105, i64 %conv3.i.i.i - %106 = load i8, ptr %arrayidx.i.i261, align 1, !tbaa !98 - %conv95.i = zext i8 %106 to i32 + %104 = load ptr, ptr @light_decode_table, align 8, !tbaa !84 + %arrayidx.i.i261 = getelementptr inbounds i8, ptr %104, i64 %conv3.i.i.i + %105 = load i8, ptr %arrayidx.i.i261, align 1, !tbaa !98 + %conv95.i = zext i8 %105 to i32 %add96.i = add nsw i32 %brightness_sum.0305.i, %conv95.i %inc97.i = add nsw i32 %brightness_count.0304.i, 1 br label %for.inc.i @@ -11448,8 +11447,8 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %if.else.i %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i, i64 1) %add.i.i.i267 = add nsw i64 %.sroa.speculated.i.i.i, %sub.ptr.div.i.i.i.i %cmp7.i.i.i = icmp ult i64 %add.i.i.i267, %sub.ptr.div.i.i.i.i - %107 = call i64 @llvm.umin.i64(i64 %add.i.i.i267, i64 2305843009213693951) - %cond.i.i.i268 = select i1 %cmp7.i.i.i, i64 2305843009213693951, i64 %107 + %106 = call i64 @llvm.umin.i64(i64 %add.i.i.i267, i64 2305843009213693951) + %cond.i.i.i268 = select i1 %cmp7.i.i.i, i64 2305843009213693951, i64 %106 %cmp.not.i.i.i = icmp eq i64 %cond.i.i.i268, 0 br i1 %cmp.not.i.i.i, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i, label %cond.true.i.i.i @@ -11500,14 +11499,14 @@ for.inc98: ; preds = %invoke.cont79, %inv br i1 %exitcond404.not, label %cleanup100.loopexit, label %_ZN3irr4core8vector3dIfE9normalizeEv.exit.i8, !llvm.loop !510 cleanup100.loopexit: ; preds = %for.inc98 - %108 = icmp sgt i32 %.ph, 0 - %109 = zext i1 %108 to i8 + %107 = icmp sgt i32 %.ph, 0 + %108 = zext i1 %107 to i8 br label %cleanup100 cleanup100: ; preds = %invoke.cont79, %cleanup100.loopexit %values.sroa.0.4 = phi ptr [ %values.sroa.0.3.ph, %cleanup100.loopexit ], [ %values.sroa.0.2, %invoke.cont79 ] %values.sroa.14.4 = phi ptr [ %values.sroa.14.3.ph, %cleanup100.loopexit ], [ %values.sroa.14.2, %invoke.cont79 ] - %sunlight_seen_count.2 = phi i8 [ %109, %cleanup100.loopexit ], [ 1, %invoke.cont79 ] + %sunlight_seen_count.2 = phi i8 [ %108, %cleanup100.loopexit ], [ 1, %invoke.cont79 ] %cmp.i.not.i.i = icmp eq ptr %values.sroa.0.4, %values.sroa.14.4 %.pre = ptrtoint ptr %values.sroa.14.4 to i64 %.pre409 = ptrtoint ptr %values.sroa.0.4 to i64 @@ -11516,8 +11515,8 @@ cleanup100: ; preds = %invoke.cont79, %cle br i1 %cmp.i.not.i.i, label %if.end122, label %if.then.i.i271 if.then.i.i271: ; preds = %cleanup100 - %110 = call i64 @llvm.ctlz.i64(i64 %.pre411, i1 true), !range !511 - %sub.i.i.i272 = shl nuw nsw i64 %110, 1 + %109 = call i64 @llvm.ctlz.i64(i64 %.pre411, i1 true), !range !511 + %sub.i.i.i272 = shl nuw nsw i64 %109, 1 %mul.i.i273 = xor i64 %sub.i.i.i272, 126 invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEElNS0_5__ops15_Iter_less_iterEEvT_S9_T0_T1_(ptr %values.sroa.0.4, ptr %values.sroa.14.4, i64 noundef %mul.i.i273) to label %.noexc274 unwind label %lpad110 @@ -11537,7 +11536,7 @@ if.then115: ; preds = %invoke.cont111 br label %if.end122 lpad110: ; preds = %.noexc274, %if.then.i.i271 - %111 = landingpad { ptr, i32 } + %110 = landingpad { ptr, i32 } cleanup br label %ehcleanup184 @@ -11563,45 +11562,45 @@ if.end122: ; preds = %cleanup100, %if.the br i1 %cmp130388, label %for.body132.preheader, label %invoke.cont147 for.body132.preheader: ; preds = %if.end122 - %112 = and i64 %div126230, 4294967295 + %111 = and i64 %div126230, 4294967295 %wide.trip.count = zext i32 %add to i64 - %113 = sub nsw i64 %wide.trip.count, %112 - %min.iters.check = icmp ult i64 %113, 8 + %112 = sub nsw i64 %wide.trip.count, %111 + %min.iters.check = icmp ult i64 %112, 8 br i1 %min.iters.check, label %for.body132.preheader59, label %vector.ph for.body132.preheader59: ; preds = %middle.block, %for.body132.preheader - %indvars.iv405.ph = phi i64 [ %ind.end, %middle.block ], [ %112, %for.body132.preheader ] - %brightness_sum.0391.ph = phi i32 [ %119, %middle.block ], [ 0, %for.body132.preheader ] + %indvars.iv405.ph = phi i64 [ %ind.end, %middle.block ], [ %111, %for.body132.preheader ] + %brightness_sum.0391.ph = phi i32 [ %118, %middle.block ], [ 0, %for.body132.preheader ] br label %for.body132 vector.ph: ; preds = %for.body132.preheader - %n.vec = and i64 %113, -8 + %n.vec = and i64 %112, -8 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] - %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %116, %vector.body ] - %vec.phi431 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %117, %vector.body ] - %offset.idx = add i64 %index, %112 - %114 = getelementptr inbounds i32, ptr %values.sroa.0.4, i64 %offset.idx - %115 = getelementptr inbounds i8, ptr %114, i64 16 - %wide.load = load <4 x i32>, ptr %114, align 4, !tbaa !128 - %wide.load432 = load <4 x i32>, ptr %115, align 4, !tbaa !128 - %116 = add <4 x i32> %wide.load, %vec.phi - %117 = add <4 x i32> %wide.load432, %vec.phi431 + %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %115, %vector.body ] + %vec.phi431 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %116, %vector.body ] + %offset.idx = add i64 %index, %111 + %113 = getelementptr inbounds i32, ptr %values.sroa.0.4, i64 %offset.idx + %114 = getelementptr inbounds i8, ptr %113, i64 16 + %wide.load = load <4 x i32>, ptr %113, align 4, !tbaa !128 + %wide.load432 = load <4 x i32>, ptr %114, align 4, !tbaa !128 + %115 = add <4 x i32> %wide.load, %vec.phi + %116 = add <4 x i32> %wide.load432, %vec.phi431 %index.next = add nuw i64 %index, 8 - %118 = icmp eq i64 %index.next, %n.vec - br i1 %118, label %middle.block, label %vector.body, !llvm.loop !512 + %117 = icmp eq i64 %index.next, %n.vec + br i1 %117, label %middle.block, label %vector.body, !llvm.loop !512 middle.block: ; preds = %vector.body - %ind.end = add nsw i64 %n.vec, %112 - %bin.rdx = add <4 x i32> %117, %116 - %119 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx) - %cmp.n = icmp eq i64 %113, %n.vec + %ind.end = add nsw i64 %n.vec, %111 + %bin.rdx = add <4 x i32> %116, %115 + %118 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx) + %cmp.n = icmp eq i64 %112, %n.vec br i1 %cmp.n, label %for.cond.cleanup131, label %for.body132.preheader59 for.cond.cleanup131: ; preds = %for.body132, %middle.block - %add135.lcssa = phi i32 [ %119, %middle.block ], [ %add135, %for.body132 ] + %add135.lcssa = phi i32 [ %118, %middle.block ], [ %add135, %for.body132 ] %cmp141 = icmp eq i32 %num_values_to_use.0, 0 br i1 %cmp141, label %invoke.cont147, label %if.end170.thread @@ -11609,8 +11608,8 @@ for.body132: ; preds = %for.body132.prehead %indvars.iv405 = phi i64 [ %indvars.iv.next406, %for.body132 ], [ %indvars.iv405.ph, %for.body132.preheader59 ] %brightness_sum.0391 = phi i32 [ %add135, %for.body132 ], [ %brightness_sum.0391.ph, %for.body132.preheader59 ] %add.ptr.i282 = getelementptr inbounds i32, ptr %values.sroa.0.4, i64 %indvars.iv405 - %120 = load i32, ptr %add.ptr.i282, align 4, !tbaa !128 - %add135 = add nsw i32 %120, %brightness_sum.0391 + %119 = load i32, ptr %add.ptr.i282, align 4, !tbaa !128 + %add135 = add nsw i32 %119, %brightness_sum.0391 %indvars.iv.next406 = add nuw nsw i64 %indvars.iv405, 1 %exitcond408.not = icmp eq i64 %indvars.iv.next406, %wide.trip.count br i1 %exitcond408.not, label %for.cond.cleanup131, label %for.body132, !llvm.loop !515 @@ -11646,24 +11645,24 @@ invoke.cont147: ; preds = %for.cond.cleanup131 to label %invoke.cont153 unwind label %lpad146 invoke.cont153: ; preds = %invoke.cont147 - %121 = load ptr, ptr %m_nodedef, align 8, !tbaa !178 - %m_content_lighting_flag_cache.i.i = getelementptr inbounds i8, ptr %121, i64 312 - %122 = and i32 %call150, 65535 - %idxprom.i.i = zext nneg i32 %122 to i64 + %120 = load ptr, ptr %m_nodedef, align 8, !tbaa !178 + %m_content_lighting_flag_cache.i.i = getelementptr inbounds i8, ptr %120, i64 312 + %121 = and i32 %call150, 65535 + %idxprom.i.i = zext nneg i32 %121 to i64 %arrayidx.i.i286 = getelementptr inbounds [65536 x %struct.ContentLightingFlags], ptr %m_content_lighting_flag_cache.i.i, i64 0, i64 %idxprom.i.i %retval.sroa.0.0.copyload.i.i = load i8, ptr %arrayidx.i.i286, align 1, !tbaa !98 - %123 = and i8 %retval.sroa.0.0.copyload.i.i, 16 - %bf.cast.not = icmp eq i8 %123, 0 + %122 = and i8 %retval.sroa.0.0.copyload.i.i, 16 + %bf.cast.not = icmp eq i8 %122, 0 br i1 %bf.cast.not, label %if.end170, label %invoke.cont159 invoke.cont159: ; preds = %invoke.cont153 %n.sroa.5.0.extract.shift = lshr i32 %call150, 16 %n.sroa.5.0.extract.trunc = trunc i32 %n.sroa.5.0.extract.shift to i8 - %124 = and i8 %n.sroa.5.0.extract.trunc, 15 + %123 = and i8 %n.sroa.5.0.extract.trunc, 15 %bf.clear.i.i287 = and i8 %retval.sroa.0.0.copyload.i.i, 15 - %cond.i.i288 = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i287, i8 %124) - %125 = lshr i8 %n.sroa.5.0.extract.trunc, 4 - %cond.i13.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i287, i8 %125) + %cond.i.i288 = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i287, i8 %123) + %124 = lshr i8 %n.sroa.5.0.extract.trunc, 4 + %cond.i13.i = call noundef i8 @llvm.umax.i8(i8 %bf.clear.i.i287, i8 %124) %conv.i.i289 = zext nneg i8 %cond.i.i288 to i32 %mul.i.i290 = mul i32 %daylight_factor, %conv.i.i289 %conv1.i.i = zext nneg i8 %cond.i13.i to i32 @@ -11672,14 +11671,14 @@ invoke.cont159: ; preds = %invoke.cont153 %div.i.i293 = udiv i32 %add.i.i292, 1000 %spec.store.select.i.i = call i32 @llvm.umin.i32(i32 %div.i.i293, i32 15) %conv3.i.i = zext nneg i32 %spec.store.select.i.i to i64 - %126 = load ptr, ptr @light_decode_table, align 8, !tbaa !84 - %arrayidx.i = getelementptr inbounds i8, ptr %126, i64 %conv3.i.i - %127 = load i8, ptr %arrayidx.i, align 1, !tbaa !98 - %conv163 = zext i8 %127 to i32 + %125 = load ptr, ptr @light_decode_table, align 8, !tbaa !84 + %arrayidx.i = getelementptr inbounds i8, ptr %125, i64 %conv3.i.i + %126 = load i8, ptr %arrayidx.i, align 1, !tbaa !98 + %conv163 = zext i8 %126 to i32 br label %if.end170 lpad146: ; preds = %invoke.cont147 - %128 = landingpad { ptr, i32 } + %127 = landingpad { ptr, i32 } cleanup br label %ehcleanup184 @@ -11707,7 +11706,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %if.then.i.i.i295, % ehcleanup184: ; preds = %lpad70.loopexit, %lpad70.loopexit.split-lp.loopexit, %lpad70.loopexit.split-lp.loopexit.split-lp, %lpad146, %lpad110 %values.sroa.0.5 = phi ptr [ %values.sroa.0.4, %lpad110 ], [ %values.sroa.0.4, %lpad146 ], [ %values.sroa.0.1382, %lpad70.loopexit.split-lp.loopexit.split-lp ], [ %values.sroa.0.1382, %lpad70.loopexit.split-lp.loopexit ], [ %values.sroa.0.1382, %lpad70.loopexit ] - %.pn231.pn.pn = phi { ptr, i32 } [ %111, %lpad110 ], [ %128, %lpad146 ], [ %lpad.loopexit.split-lp359, %lpad70.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit358, %lpad70.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %lpad70.loopexit ] + %.pn231.pn.pn = phi { ptr, i32 } [ %110, %lpad110 ], [ %127, %lpad146 ], [ %lpad.loopexit.split-lp359, %lpad70.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit358, %lpad70.loopexit.split-lp.loopexit ], [ %lpad.loopexit, %lpad70.loopexit ] %tobool.not.i.i.i296 = icmp eq ptr %values.sroa.0.5, null br i1 %tobool.not.i.i.i296, label %ehcleanup192, label %if.then.i.i.i297 diff --git a/bench/minetest/optimized/test_servermodmanager.cpp.ll b/bench/minetest/optimized/test_servermodmanager.cpp.ll index e502e915286..a7831e0cc7d 100644 --- a/bench/minetest/optimized/test_servermodmanager.cpp.ll +++ b/bench/minetest/optimized/test_servermodmanager.cpp.ll @@ -3333,8 +3333,7 @@ ehcleanup29: ; preds = %ehcleanup28, %lpad5 br label %ehcleanup195 for.cond.cleanup: ; preds = %if.end91 - %9 = and i8 %spec.select, 1 - %tobool100.not = icmp eq i8 %9, 0 + %tobool100.not = icmp eq i8 %spec.select, 0 br i1 %tobool100.not, label %if.then108, label %if.end143 for.body: ; preds = %invoke.cont, %if.end91 @@ -3344,8 +3343,8 @@ for.body: ; preds = %invoke.cont, %if.en %call.i = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %__begin1.sroa.0.0342, ptr noundef nonnull @.str.37) #26 %call.i242 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %__begin1.sroa.0.0342, ptr noundef nonnull @.str.38) #26 %_M_string_length.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.0342, i64 72 - %10 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !13 - %cmp.i244 = icmp eq i64 %10, 0 + %9 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !13 + %cmp.i244 = icmp eq i64 %9, 0 br i1 %cmp.i244, label %if.then56, label %if.end91 if.then56: ; preds = %for.body @@ -3395,52 +3394,52 @@ invoke.cont82: ; preds = %invoke.cont80 to label %unreachable unwind label %lpad81 lpad58: ; preds = %if.then56 - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %ehcleanup90 lpad60: ; preds = %invoke.cont72, %invoke.cont70, %invoke.cont68, %invoke.cont65, %invoke.cont63, %invoke.cont61, %invoke.cont59 - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } cleanup br label %ehcleanup89 ehcleanup85.thread: ; preds = %invoke.cont75 - %13 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup br label %cleanup.action87 lpad81: ; preds = %invoke.cont82, %invoke.cont80 %cleanup.isactive83.0 = phi i1 [ false, %invoke.cont82 ], [ true, %invoke.cont80 ] - %14 = landingpad { ptr, i32 } + %13 = landingpad { ptr, i32 } cleanup - %15 = load ptr, ptr %agg.tmp78, align 8, !tbaa !7 - %16 = getelementptr inbounds i8, ptr %agg.tmp78, i64 16 - %cmp.i.i.i266 = icmp eq ptr %15, %16 + %14 = load ptr, ptr %agg.tmp78, align 8, !tbaa !7 + %15 = getelementptr inbounds i8, ptr %agg.tmp78, i64 16 + %cmp.i.i.i266 = icmp eq ptr %14, %15 br i1 %cmp.i.i.i266, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268, label %ehcleanup85 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268: ; preds = %lpad81 %_M_string_length.i.i.i269 = getelementptr inbounds i8, ptr %agg.tmp78, i64 8 - %17 = load i64, ptr %_M_string_length.i.i.i269, align 8, !tbaa !13 - %cmp3.i.i.i270 = icmp ult i64 %17, 16 + %16 = load i64, ptr %_M_string_length.i.i.i269, align 8, !tbaa !13 + %cmp3.i.i.i270 = icmp ult i64 %16, 16 call void @llvm.assume(i1 %cmp3.i.i.i270) br i1 %cleanup.isactive83.0, label %cleanup.action87, label %ehcleanup89 ehcleanup85: ; preds = %lpad81 - call void @_ZdlPv(ptr noundef %15) #25 + call void @_ZdlPv(ptr noundef %14) #25 br i1 %cleanup.isactive83.0, label %cleanup.action87, label %ehcleanup89 cleanup.action87: ; preds = %ehcleanup85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268, %ehcleanup85.thread - %.pn222333 = phi { ptr, i32 } [ %13, %ehcleanup85.thread ], [ %14, %ehcleanup85 ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268 ] + %.pn222333 = phi { ptr, i32 } [ %12, %ehcleanup85.thread ], [ %13, %ehcleanup85 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268 ] call void @__cxa_free_exception(ptr %exception77) #26 br label %ehcleanup89 ehcleanup89: ; preds = %cleanup.action87, %ehcleanup85, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268, %lpad60 - %.pn222.pn = phi { ptr, i32 } [ %.pn222333, %cleanup.action87 ], [ %14, %ehcleanup85 ], [ %12, %lpad60 ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268 ] + %.pn222.pn = phi { ptr, i32 } [ %.pn222333, %cleanup.action87 ], [ %13, %ehcleanup85 ], [ %11, %lpad60 ], [ %13, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i268 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %message57) #26 br label %ehcleanup90 ehcleanup90: ; preds = %ehcleanup89, %lpad58 - %.pn222.pn.pn = phi { ptr, i32 } [ %.pn222.pn, %ehcleanup89 ], [ %11, %lpad58 ] + %.pn222.pn.pn = phi { ptr, i32 } [ %.pn222.pn, %ehcleanup89 ], [ %10, %lpad58 ] call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %message57) #26 br label %ehcleanup195 @@ -3500,58 +3499,57 @@ invoke.cont134: ; preds = %invoke.cont132 to label %unreachable unwind label %lpad133 lpad110: ; preds = %if.then108 - %18 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup br label %ehcleanup142 lpad112: ; preds = %invoke.cont124, %invoke.cont122, %invoke.cont120, %invoke.cont117, %invoke.cont115, %invoke.cont113, %invoke.cont111 - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup br label %ehcleanup141 ehcleanup137.thread: ; preds = %invoke.cont127 - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup br label %cleanup.action139 lpad133: ; preds = %invoke.cont134, %invoke.cont132 %cleanup.isactive135.0 = phi i1 [ false, %invoke.cont134 ], [ true, %invoke.cont132 ] - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } cleanup - %22 = load ptr, ptr %agg.tmp130, align 8, !tbaa !7 - %23 = getelementptr inbounds i8, ptr %agg.tmp130, i64 16 - %cmp.i.i.i293 = icmp eq ptr %22, %23 + %21 = load ptr, ptr %agg.tmp130, align 8, !tbaa !7 + %22 = getelementptr inbounds i8, ptr %agg.tmp130, i64 16 + %cmp.i.i.i293 = icmp eq ptr %21, %22 br i1 %cmp.i.i.i293, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295, label %ehcleanup137 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295: ; preds = %lpad133 %_M_string_length.i.i.i296 = getelementptr inbounds i8, ptr %agg.tmp130, i64 8 - %24 = load i64, ptr %_M_string_length.i.i.i296, align 8, !tbaa !13 - %cmp3.i.i.i297 = icmp ult i64 %24, 16 + %23 = load i64, ptr %_M_string_length.i.i.i296, align 8, !tbaa !13 + %cmp3.i.i.i297 = icmp ult i64 %23, 16 call void @llvm.assume(i1 %cmp3.i.i.i297) br i1 %cleanup.isactive135.0, label %cleanup.action139, label %ehcleanup141 ehcleanup137: ; preds = %lpad133 - call void @_ZdlPv(ptr noundef %22) #25 + call void @_ZdlPv(ptr noundef %21) #25 br i1 %cleanup.isactive135.0, label %cleanup.action139, label %ehcleanup141 cleanup.action139: ; preds = %ehcleanup137, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295, %ehcleanup137.thread - %.pn214336 = phi { ptr, i32 } [ %20, %ehcleanup137.thread ], [ %21, %ehcleanup137 ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295 ] + %.pn214336 = phi { ptr, i32 } [ %19, %ehcleanup137.thread ], [ %20, %ehcleanup137 ], [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295 ] call void @__cxa_free_exception(ptr %exception129) #26 br label %ehcleanup141 ehcleanup141: ; preds = %cleanup.action139, %ehcleanup137, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295, %lpad112 - %.pn214.pn = phi { ptr, i32 } [ %.pn214336, %cleanup.action139 ], [ %21, %ehcleanup137 ], [ %19, %lpad112 ], [ %21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295 ] + %.pn214.pn = phi { ptr, i32 } [ %.pn214336, %cleanup.action139 ], [ %20, %ehcleanup137 ], [ %18, %lpad112 ], [ %20, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i295 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %message109) #26 br label %ehcleanup142 ehcleanup142: ; preds = %ehcleanup141, %lpad110 - %.pn214.pn.pn = phi { ptr, i32 } [ %.pn214.pn, %ehcleanup141 ], [ %18, %lpad110 ] + %.pn214.pn.pn = phi { ptr, i32 } [ %.pn214.pn, %ehcleanup141 ], [ %17, %lpad110 ] call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %message109) #26 br label %ehcleanup195 if.end143: ; preds = %for.cond.cleanup - %25 = and i8 %test_mod_found.1, 1 - %tobool147.not = icmp eq i8 %25, 0 + %tobool147.not = icmp eq i8 %test_mod_found.1, 0 br i1 %tobool147.not, label %if.then155, label %if.end190 if.then155: ; preds = %if.end143 @@ -3601,52 +3599,52 @@ invoke.cont181: ; preds = %invoke.cont179 to label %unreachable unwind label %lpad180 lpad157: ; preds = %if.then155 - %26 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup br label %ehcleanup189 lpad159: ; preds = %invoke.cont171, %invoke.cont169, %invoke.cont167, %invoke.cont164, %invoke.cont162, %invoke.cont160, %invoke.cont158 - %27 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } cleanup br label %ehcleanup188 ehcleanup184.thread: ; preds = %invoke.cont174 - %28 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup br label %cleanup.action186 lpad180: ; preds = %invoke.cont181, %invoke.cont179 %cleanup.isactive182.0 = phi i1 [ false, %invoke.cont181 ], [ true, %invoke.cont179 ] - %29 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } cleanup - %30 = load ptr, ptr %agg.tmp177, align 8, !tbaa !7 - %31 = getelementptr inbounds i8, ptr %agg.tmp177, i64 16 - %cmp.i.i.i320 = icmp eq ptr %30, %31 + %28 = load ptr, ptr %agg.tmp177, align 8, !tbaa !7 + %29 = getelementptr inbounds i8, ptr %agg.tmp177, i64 16 + %cmp.i.i.i320 = icmp eq ptr %28, %29 br i1 %cmp.i.i.i320, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322, label %ehcleanup184 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322: ; preds = %lpad180 %_M_string_length.i.i.i323 = getelementptr inbounds i8, ptr %agg.tmp177, i64 8 - %32 = load i64, ptr %_M_string_length.i.i.i323, align 8, !tbaa !13 - %cmp3.i.i.i324 = icmp ult i64 %32, 16 + %30 = load i64, ptr %_M_string_length.i.i.i323, align 8, !tbaa !13 + %cmp3.i.i.i324 = icmp ult i64 %30, 16 call void @llvm.assume(i1 %cmp3.i.i.i324) br i1 %cleanup.isactive182.0, label %cleanup.action186, label %ehcleanup188 ehcleanup184: ; preds = %lpad180 - call void @_ZdlPv(ptr noundef %30) #25 + call void @_ZdlPv(ptr noundef %28) #25 br i1 %cleanup.isactive182.0, label %cleanup.action186, label %ehcleanup188 cleanup.action186: ; preds = %ehcleanup184, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322, %ehcleanup184.thread - %.pn218339 = phi { ptr, i32 } [ %28, %ehcleanup184.thread ], [ %29, %ehcleanup184 ], [ %29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322 ] + %.pn218339 = phi { ptr, i32 } [ %26, %ehcleanup184.thread ], [ %27, %ehcleanup184 ], [ %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322 ] call void @__cxa_free_exception(ptr %exception176) #26 br label %ehcleanup188 ehcleanup188: ; preds = %cleanup.action186, %ehcleanup184, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322, %lpad159 - %.pn218.pn = phi { ptr, i32 } [ %.pn218339, %cleanup.action186 ], [ %29, %ehcleanup184 ], [ %27, %lpad159 ], [ %29, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322 ] + %.pn218.pn = phi { ptr, i32 } [ %.pn218339, %cleanup.action186 ], [ %27, %ehcleanup184 ], [ %25, %lpad159 ], [ %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i322 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %message156) #26 br label %ehcleanup189 ehcleanup189: ; preds = %ehcleanup188, %lpad157 - %.pn218.pn.pn = phi { ptr, i32 } [ %.pn218.pn, %ehcleanup188 ], [ %26, %lpad157 ] + %.pn218.pn.pn = phi { ptr, i32 } [ %.pn218.pn, %ehcleanup188 ], [ %24, %lpad157 ] call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %message156) #26 br label %ehcleanup195 diff --git a/bench/minetest/optimized/treegen.cpp.ll b/bench/minetest/optimized/treegen.cpp.ll index a963a7347c0..1b3454590fa 100644 --- a/bench/minetest/optimized/treegen.cpp.ll +++ b/bench/minetest/optimized/treegen.cpp.ll @@ -6790,10 +6790,8 @@ if.end154.6: ; preds = %if.then149.6, %if.e br i1 %exitcond1438, label %invoke.cont122.1, label %invoke.cont122, !llvm.loop !165 for.body283.preheader: ; preds = %for.cond.cleanup218.loopexit - %conv274 = sext i16 %spec.select to i32 - %add280 = add nuw nsw i32 %conv274, 2 - %yy273.01323 = add nuw nsw i16 %spec.select, 1 - br label %for.body283 + %87 = add nuw nsw i16 %spec.select, 1 + br label %invoke.cont301.preheader invoke.cont204: ; preds = %for.cond.cleanup218.loopexit, %for.cond.cleanup113.2 %my.01309 = phi i16 [ -6, %for.cond.cleanup113.2 ], [ %spec.select, %for.cond.cleanup218.loopexit ] @@ -6809,17 +6807,17 @@ invoke.cont204: ; preds = %for.cond.cleanup218 %mul.i.i897 = mul i32 %add.i.i891, 1103515245 %add.i.i898 = add i32 %mul.i.i897, 12345 %div.i.i899 = sdiv i32 %add.i.i898, 65536 - %87 = trunc nsw i32 %div.i.i899 to i16 - %rem.lhs.trunc.i900 = and i16 %87, 32767 + %88 = trunc nsw i32 %div.i.i899 to i16 + %rem.lhs.trunc.i900 = and i16 %88, 32767 %rem49.i901 = urem i16 %rem.lhs.trunc.i900, 6 %rem.zext.i902 = zext nneg i16 %rem49.i901 to i32 %add28.i903 = add nsw i16 %rem49.i901, -3 %conv208 = sext i16 %my.01309 to i32 - %cmp209 = icmp sgt i32 %add28.i896, %conv208 + %cmp209 = icmp samesign ugt i32 %add28.i896, %conv208 %add216 = add nsw i32 %rem.zext.i902, -2 %div.i.i885 = sdiv i32 %add.i.i884, 65536 - %88 = trunc nsw i32 %div.i.i885 to i16 - %rem.lhs.trunc.i886 = and i16 %88, 32767 + %89 = trunc nsw i32 %div.i.i885 to i16 + %rem.lhs.trunc.i886 = and i16 %89, 32767 %rem49.i887 = urem i16 %rem.lhs.trunc.i886, 6 %conv7.i.i918 = or disjoint i32 %rem49.i894, 24 %narrow = add nuw nsw i16 %rem49.i887, 42 @@ -6841,20 +6839,20 @@ for.cond.cleanup218.loopexit: ; preds = %if.end253.1 invoke.cont233: ; preds = %if.end253.1, %invoke.cont204 %zz212.01306 = phi i16 [ %add28.i903, %invoke.cont204 ], [ %inc263, %if.end253.1 ] %conv.i.i909 = sext i16 %zz212.01306 to i32 - %89 = mul nsw i32 %conv.i.i909, 10 - %sub11.i.i921 = add nsw i32 %conv7.i.i918, %89 - %90 = mul nsw i32 %sub11.i.i921, 7 - %add21.i.i928 = add nsw i32 %90, %add.i.i923 - %sub11.i.i946 = add nsw i32 %mul.i.i941, %89 - %91 = mul nsw i32 %sub11.i.i946, 7 - %add21.i.i953 = add nsw i32 %91, %add.i.i923 + %90 = mul nsw i32 %conv.i.i909, 10 + %sub11.i.i921 = add nsw i32 %conv7.i.i918, %90 + %91 = mul nsw i32 %sub11.i.i921, 7 + %add21.i.i928 = add nsw i32 %91, %add.i.i923 + %sub11.i.i946 = add nsw i32 %mul.i.i941, %90 + %92 = mul nsw i32 %sub11.i.i946, 7 + %add21.i.i953 = add nsw i32 %92, %add.i.i923 %idxprom.i954 = zext i32 %add21.i.i928 to i64 %arrayidx.i955 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i954 store i8 1, ptr %arrayidx.i955, align 1, !tbaa !12 %idxprom.i956 = zext i32 %add21.i.i953 to i64 %arrayidx.i957 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i956 - %92 = load i8, ptr %arrayidx.i957, align 1, !tbaa !12 - %cmp249 = icmp eq i8 %92, 0 + %93 = load i8, ptr %arrayidx.i957, align 1, !tbaa !12 + %cmp249 = icmp eq i8 %93, 0 br i1 %cmp249, label %if.then250, label %if.end253 if.then250: ; preds = %invoke.cont233 @@ -6862,15 +6860,15 @@ if.then250: ; preds = %invoke.cont233 br label %if.end253 if.end253: ; preds = %if.then250, %invoke.cont233 - %inc254.reass = add nsw i32 %90, %invariant.op - %inc255.reass = add nsw i32 %91, %invariant.op + %inc254.reass = add nsw i32 %91, %invariant.op + %inc255.reass = add nsw i32 %92, %invariant.op %idxprom.i954.1 = zext i32 %inc254.reass to i64 %arrayidx.i955.1 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i954.1 store i8 1, ptr %arrayidx.i955.1, align 1, !tbaa !12 %idxprom.i956.1 = zext i32 %inc255.reass to i64 %arrayidx.i957.1 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i956.1 - %93 = load i8, ptr %arrayidx.i957.1, align 1, !tbaa !12 - %cmp249.1 = icmp eq i8 %93, 0 + %94 = load i8, ptr %arrayidx.i957.1, align 1, !tbaa !12 + %cmp249.1 = icmp eq i8 %94, 0 br i1 %cmp249.1, label %if.then250.1, label %if.end253.1 if.then250.1: ; preds = %if.end253 @@ -6889,21 +6887,16 @@ for.cond354.preheader: ; preds = %for.cond.cleanup292 %retval.sroa.0.0.insert.ext.i = zext i16 %add.i to i48 br label %for.cond363.preheader -for.body283: ; preds = %for.cond.cleanup292, %for.body283.preheader - %yy273.01329 = phi i16 [ %yy273.0, %for.cond.cleanup292 ], [ %yy273.01323, %for.body283.preheader ] - %dev.11328 = phi i16 [ %dec349, %for.cond.cleanup292 ], [ 2, %for.body283.preheader ] +invoke.cont301.preheader: ; preds = %for.body283.preheader, %for.cond.cleanup292 + %indvars.iv17 = phi i32 [ %indvars.iv.next18, %for.cond.cleanup292 ], [ 2, %for.body283.preheader ] %yy273.0.in1327 = phi i16 [ %yy273.01329, %for.cond.cleanup292 ], [ %spec.select, %for.body283.preheader ] - %pr.sroa.0.41326 = phi i32 [ %pr.sroa.0.5.lcssa, %for.cond.cleanup292 ], [ %add.i.i898, %for.body283.preheader ] - %conv285 = zext i16 %dev.11328 to i32 - %sub286 = sub i16 0, %dev.11328 - %conv2891317 = sext i16 %sub286 to i32 - %cmp291.not1318 = icmp sgt i32 %conv2891317, %conv285 - br i1 %cmp291.not1318, label %for.cond.cleanup292, label %invoke.cont301.preheader - -invoke.cont301.preheader: ; preds = %for.body283 + %pr.sroa.0.41326 = phi i32 [ %add.i.i1011, %for.cond.cleanup292 ], [ %add.i.i898, %for.body283.preheader ] + %yy273.01329 = add nuw nsw i16 %yy273.0.in1327, 1 %agg.tmp295.sroa.2.0.insert.ext = zext i16 %yy273.01329 to i48 %agg.tmp295.sroa.2.0.insert.shift = shl nuw nsw i48 %agg.tmp295.sroa.2.0.insert.ext, 16 - %agg.tmp295.sroa.0.0.insert.ext = zext i16 %sub286 to i48 + %95 = trunc i32 %indvars.iv17 to i16 + %96 = sub i16 0, %95 + %agg.tmp295.sroa.0.0.insert.ext = zext i16 %96 to i48 %agg.tmp295.sroa.0.0.insert.insert = or disjoint i48 %agg.tmp295.sroa.2.0.insert.shift, %agg.tmp295.sroa.0.0.insert.ext %p.sroa.0.0.extract.trunc.i962 = trunc nuw i48 %agg.tmp295.sroa.0.0.insert.insert to i32 %conv7.i.i974 = ashr i32 %p.sroa.0.0.extract.trunc.i962, 16 @@ -6911,7 +6904,7 @@ invoke.cont301.preheader: ; preds = %for.body283 %sext.i980 = shl i32 %p.sroa.0.0.extract.trunc.i962, 16 %conv16.i.i981 = ashr exact i32 %sext.i980, 16 %add.i.i979 = add nsw i32 %conv16.i.i981, 45 - %add309 = add i16 %yy273.0.in1327, 2 + %add309 = add nuw nsw i16 %yy273.0.in1327, 2 %agg.tmp304.sroa.2.0.insert.ext = zext i16 %add309 to i48 %agg.tmp304.sroa.2.0.insert.shift = shl nuw nsw i48 %agg.tmp304.sroa.2.0.insert.ext, 16 %agg.tmp304.sroa.0.0.insert.insert = or disjoint i48 %agg.tmp304.sroa.2.0.insert.shift, %agg.tmp295.sroa.0.0.insert.ext @@ -6921,49 +6914,46 @@ invoke.cont301.preheader: ; preds = %for.body283 %sext.i1005 = shl i32 %p.sroa.0.0.extract.trunc.i987, 16 %conv16.i.i1006 = ashr exact i32 %sext.i1005, 16 %add.i.i1004 = add nsw i32 %conv16.i.i1006, 45 - %sub329 = sub nsw i32 19, %conv285 + %sub329 = sub nuw nsw i32 19, %indvars.iv17 br label %invoke.cont301 -for.cond.cleanup292: ; preds = %for.cond319.for.cond.cleanup323_crit_edge, %for.body283 - %pr.sroa.0.5.lcssa = phi i32 [ %pr.sroa.0.41326, %for.body283 ], [ %add.i.i1011, %for.cond319.for.cond.cleanup323_crit_edge ] - %dec349 = add i16 %dev.11328, -1 - %yy273.0 = add i16 %yy273.01329, 1 - %conv278 = sext i16 %yy273.0 to i32 - %cmp281.not = icmp slt i32 %add280, %conv278 - br i1 %cmp281.not, label %for.cond354.preheader, label %for.body283, !llvm.loop !168 +for.cond.cleanup292: ; preds = %for.cond319.for.cond.cleanup323_crit_edge + %indvars.iv.next18 = add nsw i32 %indvars.iv17, -1 + %exitcond = icmp eq i16 %yy273.0.in1327, %87 + br i1 %exitcond, label %for.cond354.preheader, label %invoke.cont301.preheader, !llvm.loop !168 invoke.cont301: ; preds = %for.cond319.for.cond.cleanup323_crit_edge, %invoke.cont301.preheader - %zz284.01320 = phi i16 [ %inc346, %for.cond319.for.cond.cleanup323_crit_edge ], [ %sub286, %invoke.cont301.preheader ] + %zz284.01320 = phi i16 [ %inc346, %for.cond319.for.cond.cleanup323_crit_edge ], [ %96, %invoke.cont301.preheader ] %pr.sroa.0.51319 = phi i32 [ %add.i.i1011, %for.cond319.for.cond.cleanup323_crit_edge ], [ %pr.sroa.0.41326, %invoke.cont301.preheader ] %conv.i.i965 = sext i16 %zz284.01320 to i32 - %94 = mul nsw i32 %conv.i.i965, 10 - %sub11.i.i977 = add nsw i32 %mul.i.i972, %94 - %95 = mul nsw i32 %sub11.i.i977, 7 - %add21.i.i984 = add nsw i32 %add.i.i979, %95 - %sub11.i.i1002 = add nsw i32 %mul.i.i997, %94 - %96 = mul nsw i32 %sub11.i.i1002, 7 - %add21.i.i1009 = add nsw i32 %add.i.i1004, %96 + %97 = mul nsw i32 %conv.i.i965, 10 + %sub11.i.i977 = add nsw i32 %mul.i.i972, %97 + %98 = mul nsw i32 %sub11.i.i977, 7 + %add21.i.i984 = add nsw i32 %add.i.i979, %98 + %sub11.i.i1002 = add nsw i32 %mul.i.i997, %97 + %99 = mul nsw i32 %sub11.i.i1002, 7 + %add21.i.i1009 = add nsw i32 %add.i.i1004, %99 br label %invoke.cont326 for.cond319.for.cond.cleanup323_crit_edge: ; preds = %if.end336 %inc346 = add i16 %zz284.01320, 1 %conv289 = sext i16 %inc346 to i32 - %cmp291.not = icmp sgt i32 %conv289, %conv285 + %cmp291.not = icmp slt i32 %indvars.iv17, %conv289 br i1 %cmp291.not, label %for.cond.cleanup292, label %invoke.cont301, !llvm.loop !169 invoke.cont326: ; preds = %if.end336, %invoke.cont301 - %xx315.01315 = phi i16 [ %sub286, %invoke.cont301 ], [ %inc340, %if.end336 ] + %xx315.01315 = phi i16 [ %96, %invoke.cont301 ], [ %inc340, %if.end336 ] %ia303.01314 = phi i32 [ %add21.i.i1009, %invoke.cont301 ], [ %inc338, %if.end336 ] %i294.01313 = phi i32 [ %add21.i.i984, %invoke.cont301 ], [ %inc337, %if.end336 ] %pr.sroa.0.61312 = phi i32 [ %pr.sroa.0.51319, %invoke.cont301 ], [ %add.i.i1011, %if.end336 ] %mul.i.i1010 = mul i32 %pr.sroa.0.61312, 1103515245 %add.i.i1011 = add i32 %mul.i.i1010, 12345 %div.i.i1012 = sdiv i32 %add.i.i1011, 65536 - %97 = trunc nsw i32 %div.i.i1012 to i16 - %rem.lhs.trunc.i1013 = and i16 %97, 32767 + %100 = trunc nsw i32 %div.i.i1012 to i16 + %rem.lhs.trunc.i1013 = and i16 %100, 32767 %rem49.i1014 = urem i16 %rem.lhs.trunc.i1013, 21 %rem.zext.i1015 = zext nneg i16 %rem49.i1014 to i32 - %cmp330.not = icmp slt i32 %sub329, %rem.zext.i1015 + %cmp330.not = icmp samesign ult i32 %sub329, %rem.zext.i1015 br i1 %cmp330.not, label %if.end336, label %if.then331 if.then331: ; preds = %invoke.cont326 @@ -6980,15 +6970,15 @@ if.end336: ; preds = %if.then331, %invoke %inc338 = add i32 %ia303.01314, 1 %inc340 = add i16 %xx315.01315, 1 %conv320 = sext i16 %inc340 to i32 - %cmp322.not = icmp sgt i32 %conv320, %conv285 + %cmp322.not = icmp slt i32 %indvars.iv17, %conv320 br i1 %cmp322.not, label %for.cond319.for.cond.cleanup323_crit_edge, label %invoke.cont326, !llvm.loop !170 for.cond363.preheader: ; preds = %for.cond.cleanup369, %for.cond354.preheader %indvars.iv1458 = phi i32 [ -3, %for.cond354.preheader ], [ %indvars.iv.next1459, %for.cond.cleanup369 ] %indvars.iv1452 = phi i64 [ 7, %for.cond354.preheader ], [ %indvars.iv.next1453, %for.cond.cleanup369 ] %indvars.iv1441 = phi i64 [ 0, %for.cond354.preheader ], [ %indvars.iv.next1442, %for.cond.cleanup369 ] - %98 = trunc i32 %indvars.iv1458 to i16 - %add13.i = add i16 %98, %p1.sroa.14.0.extract.trunc + %101 = trunc i32 %indvars.iv1458 to i16 + %add13.i = add i16 %101, %p1.sroa.14.0.extract.trunc %conv.i.i1050 = sext i16 %add13.i to i32 br label %invoke.cont386 @@ -7012,24 +7002,24 @@ invoke.cont386: ; preds = %for.cond.cleanup396 %retval.sroa.2.0.insert.shift.i = shl nuw nsw i48 %retval.sroa.2.0.insert.ext.i, 16 %retval.sroa.0.0.insert.insert.i = or disjoint i48 %retval.sroa.2.0.insert.shift.i, %retval.sroa.0.0.insert.ext.i %p.sroa.0.0.extract.trunc.i1047 = trunc nuw i48 %retval.sroa.0.0.insert.insert.i to i32 - %99 = load i16, ptr %Z25.i, align 4, !tbaa !57 - %conv2.i.i1052 = sext i16 %99 to i32 + %102 = load i16, ptr %Z25.i, align 4, !tbaa !57 + %conv2.i.i1052 = sext i16 %102 to i32 %sub.i.i1053 = sub nsw i32 %conv.i.i1050, %conv2.i.i1052 - %100 = load i16, ptr %Y.i.i, align 2, !tbaa !58 - %conv3.i.i1056 = sext i16 %100 to i32 + %103 = load i16, ptr %Y.i.i, align 2, !tbaa !58 + %conv3.i.i1056 = sext i16 %103 to i32 %mul.i.i1057 = mul nsw i32 %sub.i.i1053, %conv3.i.i1056 - %101 = load i16, ptr %m_cache_extent.i.i, align 4, !tbaa !59 - %conv5.i.i1058 = sext i16 %101 to i32 + %104 = load i16, ptr %m_cache_extent.i.i, align 4, !tbaa !59 + %conv5.i.i1058 = sext i16 %104 to i32 %conv7.i.i1059 = ashr i32 %p.sroa.0.0.extract.trunc.i1047, 16 - %102 = load i16, ptr %Y12.i, align 2, !tbaa !56 - %conv10.i.i1061 = sext i16 %102 to i32 + %105 = load i16, ptr %Y12.i, align 2, !tbaa !56 + %conv10.i.i1061 = sext i16 %105 to i32 %sub11.i.i1062 = sub i32 %mul.i.i1057, %conv10.i.i1061 %mul622.i.i1063 = add i32 %sub11.i.i1062, %conv7.i.i1059 %add.i.i1064 = mul i32 %mul622.i.i1063, %conv5.i.i1058 %sext.i1065 = shl i32 %p.sroa.0.0.extract.trunc.i1047, 16 %conv16.i.i1066 = ashr exact i32 %sext.i1065, 16 - %103 = load i16, ptr %m_area, align 8, !tbaa !53 - %conv19.i.i1067 = sext i16 %103 to i32 + %106 = load i16, ptr %m_area, align 8, !tbaa !53 + %conv19.i.i1067 = sext i16 %106 to i32 %sub20.i.i1068 = sub nsw i32 %conv16.i.i1066, %conv19.i.i1067 %add21.i.i1069 = add nsw i32 %sub20.i.i1068, %add.i.i1064 br label %invoke.cont402 @@ -7051,63 +7041,63 @@ invoke.cont402: ; preds = %if.end443, %invoke. %p.sroa.0.0.extract.trunc.i1086 = trunc nuw i48 %retval.sroa.0.0.insert.insert.i1085 to i32 %sext.i1087 = shl i32 %p.sroa.0.0.extract.trunc.i1086, 16 %conv.i1088 = ashr exact i32 %sext.i1087, 16 - %104 = load i16, ptr %m_area, align 8, !tbaa !53 - %conv3.i1089 = sext i16 %104 to i32 + %107 = load i16, ptr %m_area, align 8, !tbaa !53 + %conv3.i1089 = sext i16 %107 to i32 %cmp.not.i1090 = icmp slt i32 %conv.i1088, %conv3.i1089 - %105 = load i16, ptr %MaxEdge.i727, align 2 - %conv7.i1092 = sext i16 %105 to i32 + %108 = load i16, ptr %MaxEdge.i727, align 2 + %conv7.i1092 = sext i16 %108 to i32 %cmp8.not.i1093 = icmp sgt i32 %conv.i1088, %conv7.i1092 %or.cond.i1094 = select i1 %cmp.not.i1090, i1 true, i1 %cmp8.not.i1093 br i1 %or.cond.i1094, label %if.end443, label %land.lhs.true9.i1095 land.lhs.true9.i1095: ; preds = %invoke.cont402 %conv10.i1096 = ashr i32 %p.sroa.0.0.extract.trunc.i1086, 16 - %106 = load i16, ptr %Y12.i, align 2, !tbaa !56 - %conv13.i1098 = sext i16 %106 to i32 + %109 = load i16, ptr %Y12.i, align 2, !tbaa !56 + %conv13.i1098 = sext i16 %109 to i32 %cmp14.not.i1099 = icmp slt i32 %conv10.i1096, %conv13.i1098 - %107 = load i16, ptr %Y19.i, align 8 - %conv20.i1101 = sext i16 %107 to i32 + %110 = load i16, ptr %Y19.i, align 8 + %conv20.i1101 = sext i16 %110 to i32 %cmp21.not.i1102 = icmp sgt i32 %conv10.i1096, %conv20.i1101 %or.cond39.i1103 = select i1 %cmp14.not.i1099, i1 true, i1 %cmp21.not.i1102 br i1 %or.cond39.i1103, label %if.end443, label %land.lhs.true22.i1104 land.lhs.true22.i1104: ; preds = %land.lhs.true9.i1095 - %108 = load i16, ptr %Z25.i, align 4, !tbaa !57 - %cmp27.not.i1110 = icmp sge i16 %add13.i, %108 - %109 = load i16, ptr %Z31.i, align 2 - %cmp33.i1114 = icmp sle i16 %add13.i, %109 + %111 = load i16, ptr %Z25.i, align 4, !tbaa !57 + %cmp27.not.i1110 = icmp sge i16 %add13.i, %111 + %112 = load i16, ptr %Z31.i, align 2 + %cmp33.i1114 = icmp sle i16 %add13.i, %112 %or.cond1283 = select i1 %cmp27.not.i1110, i1 %cmp33.i1114, i1 false br i1 %or.cond1283, label %land.lhs.true, label %if.end443 land.lhs.true: ; preds = %land.lhs.true22.i1104 - %110 = load ptr, ptr %m_data, align 8, !tbaa !60 + %113 = load ptr, ptr %m_data, align 8, !tbaa !60 %idxprom408 = zext i32 %vi379.01331 to i64 - %arrayidx409 = getelementptr inbounds %struct.MapNode, ptr %110, i64 %idxprom408 - %111 = load i16, ptr %arrayidx409, align 4, !tbaa !68 - %112 = and i16 %111, -2 - %switch = icmp eq i16 %112, 126 + %arrayidx409 = getelementptr inbounds %struct.MapNode, ptr %113, i64 %idxprom408 + %114 = load i16, ptr %arrayidx409, align 4, !tbaa !68 + %115 = and i16 %114, -2 + %switch = icmp eq i16 %115, 126 br i1 %switch, label %if.then424, label %lor.lhs.false419 lor.lhs.false419: ; preds = %land.lhs.true - %cmp.i = icmp eq i16 %111, %spec.store.select + %cmp.i = icmp eq i16 %114, %spec.store.select br i1 %cmp.i, label %land.lhs.true.i, label %if.end443 land.lhs.true.i: ; preds = %lor.lhs.false419 %param1.i1116 = getelementptr inbounds i8, ptr %arrayidx409, i64 2 - %113 = load i8, ptr %param1.i1116, align 2, !tbaa !173 - %cmp7.i = icmp eq i8 %113, 0 + %116 = load i8, ptr %param1.i1116, align 2, !tbaa !173 + %cmp7.i = icmp eq i8 %116, 0 br i1 %cmp7.i, label %_ZNK7MapNodeeqERKS_.exit, label %if.end443 _ZNK7MapNodeeqERKS_.exit: ; preds = %land.lhs.true.i %param2.i1118 = getelementptr inbounds i8, ptr %arrayidx409, i64 3 - %114 = load i8, ptr %param2.i1118, align 1, !tbaa !174 - %cmp11.i = icmp eq i8 %114, 0 + %117 = load i8, ptr %param2.i1118, align 1, !tbaa !174 + %cmp11.i = icmp eq i8 %117, 0 br i1 %cmp11.i, label %if.then424, label %if.end443 if.then424: ; preds = %_ZNK7MapNodeeqERKS_.exit, %land.lhs.true %arrayidx.i1120 = getelementptr inbounds i8, ptr %call.i723, i64 %indvars.iv1445 - %115 = load i8, ptr %arrayidx.i1120, align 1, !tbaa !12 - switch i8 %115, label %if.end443 [ + %118 = load i8, ptr %arrayidx.i1120, align 1, !tbaa !12 + switch i8 %118, label %if.end443 [ i8 1, label %if.end443.sink.split i8 2, label %if.then437 ] 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/mitsuba3/optimized/rgb2spec.c.ll b/bench/mitsuba3/optimized/rgb2spec.c.ll index 93509e5ee46..957e0aef032 100644 --- a/bench/mitsuba3/optimized/rgb2spec.c.ll +++ b/bench/mitsuba3/optimized/rgb2spec.c.ll @@ -177,7 +177,7 @@ define void @rgb2spec_fetch(ptr nocapture noundef readonly %0, ptr nocapture nou %.0114128 = phi i32 [ %.1, %.preheader ], [ 0, %15 ] %36 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %indvars.iv134 %37 = load float, ptr %36, align 4 - %38 = sext i32 %.0114128 to i64 + %38 = zext nneg i32 %.0114128 to i64 %39 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %38 %40 = load float, ptr %39, align 4 %41 = fcmp contract ult float %37, %40 @@ -188,21 +188,21 @@ define void @rgb2spec_fetch(ptr nocapture noundef readonly %0, ptr nocapture nou br i1 %exitcond137.not, label %43, label %.preheader, !llvm.loop !6 43: ; preds = %.preheader - %44 = sext i32 %.1 to i64 + %44 = zext nneg i32 %.1 to i64 %45 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %44 %46 = load float, ptr %45, align 4 %47 = add nsw i32 %5, -1 %48 = sitofp i32 %47 to float %49 = fdiv contract float %48, %46 - %50 = add nsw i32 %.1, 1 - %51 = srem i32 %50, 3 - %52 = sext i32 %51 to i64 + %50 = add nuw nsw i32 %.1, 1 + %51 = urem i32 %50, 3 + %52 = zext nneg i32 %51 to i64 %53 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %52 %54 = load float, ptr %53, align 4 %55 = fmul contract float %54, %49 - %56 = add nsw i32 %.1, 2 - %57 = srem i32 %56, 3 - %58 = sext i32 %57 to i64 + %56 = add nuw nsw i32 %.1, 2 + %57 = urem i32 %56, 3 + %58 = zext nneg i32 %57 to i64 %59 = getelementptr inbounds [3 x float], ptr %4, i64 0, i64 %58 %60 = load float, ptr %59, align 4 %61 = fmul contract float %49, %60 diff --git a/bench/ms-gsl/optimized/span_tests.cpp.ll b/bench/ms-gsl/optimized/span_tests.cpp.ll index 23d8b65d9bf..7a85608f1cf 100644 --- a/bench/ms-gsl/optimized/span_tests.cpp.ll +++ b/bench/ms-gsl/optimized/span_tests.cpp.ll @@ -37553,32 +37553,32 @@ lpad: ; preds = %_ZNSt6vectorINSt7__ for.end: ; preds = %for.inc, %_ZSt6fill_nIPbmbET_S1_T0_RKT1_.exit %23 = load i8, ptr %_M_has_sol, align 4 - %24 = select i1 %cmp, i8 %23, i8 0 - %__ret.2 = or i8 %__ret.0, %24 - %25 = load ptr, ptr %_M_current, align 8 - %26 = load ptr, ptr %_M_end, align 8 - %cmp.i12 = icmp eq ptr %25, %26 - %27 = load ptr, ptr %end_.i, align 8 - %28 = load ptr, ptr %end_3.i, align 8 - %cmp4.i = icmp eq ptr %27, %28 - %29 = select i1 %cmp.i12, i1 %cmp4.i, i1 false - br i1 %29, label %_ZNK3gsl7details13span_iteratorIcEeqIcTnNSt9enable_ifIXsr3std7is_sameINSt9remove_cvIT_E4typeEcEE5valueEiE4typeELi0EEEbRKNS1_IS6_EE.exit, label %cond.false.i + %or6 = select i1 %cmp, i8 %23, i8 0 + %__ret.2 = or i8 %or6, %__ret.0 + %24 = load ptr, ptr %_M_current, align 8 + %25 = load ptr, ptr %_M_end, align 8 + %cmp.i12 = icmp eq ptr %24, %25 + %26 = load ptr, ptr %end_.i, align 8 + %27 = load ptr, ptr %end_3.i, align 8 + %cmp4.i = icmp eq ptr %26, %27 + %28 = select i1 %cmp.i12, i1 %cmp4.i, i1 false + br i1 %28, label %_ZNK3gsl7details13span_iteratorIcEeqIcTnNSt9enable_ifIXsr3std7is_sameINSt9remove_cvIT_E4typeEcEE5valueEiE4typeELi0EEEbRKNS1_IS6_EE.exit, label %cond.false.i cond.false.i: ; preds = %for.end call void @_ZN3gsl7details9terminateEv() #31 unreachable _ZNK3gsl7details13span_iteratorIcEeqIcTnNSt9enable_ifIXsr3std7is_sameINSt9remove_cvIT_E4typeEcEE5valueEiE4typeELi0EEEbRKNS1_IS6_EE.exit: ; preds = %for.end - %30 = load ptr, ptr %current_.i, align 8 - %31 = load ptr, ptr %current_6.i, align 8 - %cmp7.i.not = icmp eq ptr %30, %31 + %29 = load ptr, ptr %current_.i, align 8 + %30 = load ptr, ptr %current_6.i, align 8 + %cmp7.i.not = icmp eq ptr %29, %30 br i1 %cmp7.i.not, label %cleanup, label %if.end24 if.end24: ; preds = %_ZNK3gsl7details13span_iteratorIcEeqIcTnNSt9enable_ifIXsr3std7is_sameINSt9remove_cvIT_E4typeEcEE5valueEiE4typeELi0EEEbRKNS1_IS6_EE.exit - %tobool.not.i = icmp ne ptr %25, null - %tobool2.not.i = icmp ne ptr %30, null + %tobool.not.i = icmp ne ptr %24, null + %tobool2.not.i = icmp ne ptr %29, null %or.cond.not2.i = and i1 %tobool.not.i, %tobool2.not.i - %tobool3.i = icmp ne ptr %27, null + %tobool3.i = icmp ne ptr %26, null %or.cond1.i = select i1 %or.cond.not2.i, i1 %tobool3.i, i1 false br i1 %or.cond1.i, label %cond.end.i, label %cond.false.i15 @@ -37587,7 +37587,7 @@ cond.false.i15: ; preds = %if.end24 unreachable cond.end.i: ; preds = %if.end24 - %cmp.i16 = icmp ult ptr %30, %27 + %cmp.i16 = icmp ult ptr %29, %26 br i1 %cmp.i16, label %_ZN3gsl7details13span_iteratorIcEppEv.exit, label %cond.false10.i cond.false10.i: ; preds = %cond.end.i @@ -37595,7 +37595,7 @@ cond.false10.i: ; preds = %cond.end.i unreachable _ZN3gsl7details13span_iteratorIcEppEv.exit: ; preds = %cond.end.i - %incdec.ptr.i17 = getelementptr inbounds i8, ptr %30, i64 1 + %incdec.ptr.i17 = getelementptr inbounds i8, ptr %29, i64 1 store ptr %incdec.ptr.i17, ptr %current_.i, align 8 br label %cleanup @@ -37605,12 +37605,12 @@ cleanup: ; preds = %_ZNK3gsl7details13s for.body.i.i.i.i: ; preds = %cleanup, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i ], [ %.pr.i, %cleanup ] %second.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %32 = load ptr, ptr %second.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %32, null + %31 = load ptr, ptr %second.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %31, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %32) #30 + call void @_ZdlPv(ptr noundef nonnull %31) #30 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i @@ -37639,12 +37639,12 @@ while.end: ; preds = %_ZNSt6vectorISt4pai for.body.i.i.i.i.i: ; preds = %while.end, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i.i %__first.addr.04.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i.i ], [ %.pre30, %while.end ] %second.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i, i64 8 - %33 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %33, null + %32 = load ptr, ptr %second.i.i.i.i.i.i.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %32, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i - call void @_ZdlPv(ptr noundef nonnull %33) #30 + call void @_ZdlPv(ptr noundef nonnull %32) #30 br label %_ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i.i _ZSt8_DestroyISt4pairIlSt6vectorINSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS8_EEEEvPT_.exit.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i @@ -37658,9 +37658,9 @@ invoke.cont.i.i: ; preds = %_ZSt8_DestroyISt4pa _ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN3gsl7details13span_iteratorIcEEEESaIS7_EEESaISA_EE5clearEv.exit: ; preds = %while.body, %while.end, %invoke.cont.i.i %__ret.134 = phi i8 [ %__ret.2, %while.end ], [ %__ret.2, %invoke.cont.i.i ], [ %__ret.0, %while.body ] - %34 = phi i8 [ %.pre29, %while.end ], [ %.pre29, %invoke.cont.i.i ], [ 0, %while.body ] + %33 = phi i8 [ %.pre29, %while.end ], [ %.pre29, %invoke.cont.i.i ], [ 0, %while.body ] %cmp27 = icmp eq i8 %__match_mode, 0 - %__ret.3 = select i1 %cmp27, i8 %34, i8 %__ret.134 + %__ret.3 = select i1 %cmp27, i8 %33, i8 %__ret.134 %tobool35 = trunc i8 %__ret.3 to i1 ret i1 %tobool35 } 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/calibinit.cpp.ll b/bench/opencv/optimized/calibinit.cpp.ll index 5960de5f46c..3d61a61d96d 100644 --- a/bench/opencv/optimized/calibinit.cpp.ll +++ b/bench/opencv/optimized/calibinit.cpp.ll @@ -31156,7 +31156,7 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit41: ; preds = %.lr.ph.i34, %.lr. %.09.lcssa.i40 = phi float [ 0.000000e+00, %.lr.ph ], [ %36, %.lr.ph.i34 ] %38 = getelementptr inbounds float, ptr %3, i64 %indvars.iv store float %.09.lcssa.i40, ptr %38, align 4 - %39 = sext i32 %.03244 to i64 + %39 = zext nneg i32 %.03244 to i64 %40 = getelementptr inbounds float, ptr %3, i64 %39 %41 = load float, ptr %40, align 4 %42 = fcmp olt float %.09.lcssa.i40, %41 @@ -37077,7 +37077,7 @@ _ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit.loopexit: ; preds = %.lr.ph.i .preheader: ; preds = %.preheader.lr.ph, %._crit_edge133 %indvars.iv176 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next177, %._crit_edge133 ] - %.1135 = phi double [ %.0.lcssa, %.preheader.lr.ph ], [ %.076.lcssa183, %._crit_edge133 ] + %.1135 = phi double [ %.0.lcssa, %.preheader.lr.ph ], [ %.076.lcssa185, %._crit_edge133 ] %59 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN2cv6theRNGEv() %60 = load i64, ptr %59, align 8 %61 = and i64 %60, 4294967295 @@ -37119,7 +37119,7 @@ _ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit.loopexit: ; preds = %.lr.ph.i br i1 %28, label %.lr.ph124, label %._crit_edge125.thread ._crit_edge125.thread: ; preds = %._crit_edge - %.phi.trans.insert = sext i32 %.074.lcssa to i64 + %.phi.trans.insert = zext i32 %.074.lcssa to i64 %.phi.trans.insert181 = getelementptr inbounds i32, ptr %2, i64 %.phi.trans.insert %.pre = load i32, ptr %.phi.trans.insert181, align 4 %77 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv176 @@ -37192,65 +37192,64 @@ _ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit95.loopexit: ; preds = %.lr.ph.i %.076.lcssa = phi double [ %91, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit95.us ], [ %108, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit95.loopexit ] %109 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv176 store i32 %82, ptr %109, align 4 - %110 = sext i32 %.074.lcssa to i64 - %111 = getelementptr inbounds i32, ptr %2, i64 %110 - %112 = load ptr, ptr %41, align 8 - %113 = load i64, ptr %42, align 8 - %114 = load i32, ptr %111, align 4 - %115 = sext i32 %114 to i64 - %116 = mul i64 %113, %115 - %117 = getelementptr inbounds float, ptr %112, i64 %116 - %118 = load i64, ptr %43, align 8 - %.not.i96 = icmp eq i64 %118, 0 + %110 = getelementptr inbounds i32, ptr %2, i64 %80 + %111 = load ptr, ptr %41, align 8 + %112 = load i64, ptr %42, align 8 + %113 = load i32, ptr %110, align 4 + %114 = sext i32 %113 to i64 + %115 = mul i64 %112, %114 + %116 = getelementptr inbounds float, ptr %111, i64 %115 + %117 = load i64, ptr %43, align 8 + %.not.i96 = icmp eq i64 %117, 0 br i1 %.not.i96, label %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us, label %.lr.ph.i97.preheader _ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us: ; preds = %._crit_edge125, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us %indvars.iv171 = phi i64 [ %indvars.iv.next172, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us ], [ 0, %._crit_edge125 ] - %119 = getelementptr inbounds float, ptr %11, i64 %indvars.iv171 - %120 = load float, ptr %119, align 4 - %121 = fcmp olt float %120, 0.000000e+00 - %.sroa.speculated.us = select i1 %121, float %120, float 0.000000e+00 - store float %.sroa.speculated.us, ptr %119, align 4 + %118 = getelementptr inbounds float, ptr %11, i64 %indvars.iv171 + %119 = load float, ptr %118, align 4 + %120 = fcmp olt float %119, 0.000000e+00 + %.sroa.speculated.us = select i1 %120, float %119, float 0.000000e+00 + store float %.sroa.speculated.us, ptr %118, align 4 %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 1 %exitcond175.not = icmp eq i64 %indvars.iv.next172, %7 br i1 %exitcond175.not, label %._crit_edge133, label %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us, !llvm.loop !418 .lr.ph.i97.preheader: ; preds = %._crit_edge125, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit %indvars.iv166 = phi i64 [ %indvars.iv.next167, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit ], [ 0, %._crit_edge125 ] - %122 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv166 - %123 = load i32, ptr %122, align 4 - %124 = sext i32 %123 to i64 - %125 = mul i64 %113, %124 - %126 = getelementptr inbounds float, ptr %112, i64 %125 + %121 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv166 + %122 = load i32, ptr %121, align 4 + %123 = sext i32 %122 to i64 + %124 = mul i64 %112, %123 + %125 = getelementptr inbounds float, ptr %111, i64 %124 br label %.lr.ph.i97 .lr.ph.i97: ; preds = %.lr.ph.i97.preheader, %.lr.ph.i97 - %.014.i98 = phi i64 [ %133, %.lr.ph.i97 ], [ 0, %.lr.ph.i97.preheader ] - %.0813.i99 = phi ptr [ %127, %.lr.ph.i97 ], [ %126, %.lr.ph.i97.preheader ] - %.0912.i100 = phi float [ %132, %.lr.ph.i97 ], [ 0.000000e+00, %.lr.ph.i97.preheader ] - %.01011.i101 = phi ptr [ %129, %.lr.ph.i97 ], [ %117, %.lr.ph.i97.preheader ] - %127 = getelementptr inbounds i8, ptr %.0813.i99, i64 4 - %128 = load float, ptr %.0813.i99, align 4 - %129 = getelementptr inbounds i8, ptr %.01011.i101, i64 4 - %130 = load float, ptr %.01011.i101, align 4 - %131 = fsub float %128, %130 - %132 = tail call float @llvm.fmuladd.f32(float %131, float %131, float %.0912.i100) - %133 = add nuw i64 %.014.i98, 1 - %exitcond.not.i102 = icmp eq i64 %133, %118 + %.014.i98 = phi i64 [ %132, %.lr.ph.i97 ], [ 0, %.lr.ph.i97.preheader ] + %.0813.i99 = phi ptr [ %126, %.lr.ph.i97 ], [ %125, %.lr.ph.i97.preheader ] + %.0912.i100 = phi float [ %131, %.lr.ph.i97 ], [ 0.000000e+00, %.lr.ph.i97.preheader ] + %.01011.i101 = phi ptr [ %128, %.lr.ph.i97 ], [ %116, %.lr.ph.i97.preheader ] + %126 = getelementptr inbounds i8, ptr %.0813.i99, i64 4 + %127 = load float, ptr %.0813.i99, align 4 + %128 = getelementptr inbounds i8, ptr %.01011.i101, i64 4 + %129 = load float, ptr %.01011.i101, align 4 + %130 = fsub float %127, %129 + %131 = tail call float @llvm.fmuladd.f32(float %130, float %130, float %.0912.i100) + %132 = add nuw i64 %.014.i98, 1 + %exitcond.not.i102 = icmp eq i64 %132, %117 br i1 %exitcond.not.i102, label %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit, label %.lr.ph.i97, !llvm.loop !260 _ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit: ; preds = %.lr.ph.i97 - %134 = getelementptr inbounds float, ptr %11, i64 %indvars.iv166 - %135 = load float, ptr %134, align 4 - %136 = fcmp olt float %135, %132 - %.sroa.speculated = select i1 %136, float %135, float %132 - store float %.sroa.speculated, ptr %134, align 4 + %133 = getelementptr inbounds float, ptr %11, i64 %indvars.iv166 + %134 = load float, ptr %133, align 4 + %135 = fcmp olt float %134, %131 + %.sroa.speculated = select i1 %135, float %134, float %131 + store float %.sroa.speculated, ptr %133, align 4 %indvars.iv.next167 = add nuw nsw i64 %indvars.iv166, 1 %exitcond170.not = icmp eq i64 %indvars.iv.next167, %7 br i1 %exitcond170.not, label %._crit_edge133, label %.lr.ph.i97.preheader, !llvm.loop !418 ._crit_edge133: ; preds = %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us, %._crit_edge125.thread - %.076.lcssa183 = phi double [ 0.000000e+00, %._crit_edge125.thread ], [ %.076.lcssa, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us ], [ %.076.lcssa, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit ] + %.076.lcssa185 = phi double [ 0.000000e+00, %._crit_edge125.thread ], [ %.076.lcssa, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.us ], [ %.076.lcssa, %_ZNK7cvflann9L2_SimpleIfEclIPfS3_EEfT_T0_mf.exit104.loopexit ] %indvars.iv.next177 = add nuw nsw i64 %indvars.iv176, 1 %exitcond180.not = icmp eq i64 %indvars.iv.next177, %wide.trip.count179 br i1 %exitcond180.not, label %._crit_edge136, label %.preheader, !llvm.loop !419 @@ -40035,7 +40034,7 @@ define linkonce_odr hidden void @_ZN7cvflann27HierarchicalClusteringIndexINS_9L2 br label %72 tailrecurse._crit_edge: ; preds = %tailrecurse, %9 - %.tr86.lcssa = phi ptr [ %1, %9 ], [ %140, %tailrecurse ] + %.tr86.lcssa = phi ptr [ %1, %9 ], [ %139, %tailrecurse ] %17 = load i32, ptr %4, align 4 %.not59 = icmp slt i32 %17, %5 %or.cond = select i1 %8, i1 true, i1 %.not59 @@ -40136,8 +40135,8 @@ _ZNK7cvflann9L2_SimpleIfEclIPfPKfEEfT_T0_mf.exit: ; preds = %.lr.ph.i, %46 br i1 %71, label %31, label %.loopexit, !llvm.loop !453 72: ; preds = %.lr.ph101, %tailrecurse - %73 = phi ptr [ %11, %.lr.ph101 ], [ %142, %tailrecurse ] - %74 = phi ptr [ %10, %.lr.ph101 ], [ %141, %tailrecurse ] + %73 = phi ptr [ %11, %.lr.ph101 ], [ %141, %tailrecurse ] + %74 = phi ptr [ %10, %.lr.ph101 ], [ %140, %tailrecurse ] %75 = load i32, ptr %13, align 4 %76 = sext i32 %75 to i64 %77 = icmp slt i32 %75, 0 @@ -40196,7 +40195,7 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us: ; preds = %_ZNK7cvflann9L %.05796.us = phi i32 [ 0, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us.preheader ], [ %.1.us, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us ] %98 = getelementptr inbounds float, ptr %80, i64 %indvars.iv111 store float 0.000000e+00, ptr %98, align 4 - %99 = sext i32 %.05796.us to i64 + %99 = zext nneg i32 %.05796.us to i64 %100 = getelementptr inbounds float, ptr %80, i64 %99 %101 = load float, ptr %100, align 4 %102 = fcmp ogt float %101, 0.000000e+00 @@ -40209,11 +40208,8 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us: ; preds = %_ZNK7cvflann9L .preheader: ; preds = %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit.thread, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit %.057.lcssa = phi i32 [ 0, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit ], [ 0, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit.thread ], [ %.1.us, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us ], [ %.1, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit ] %104 = icmp sgt i32 %75, 0 - br i1 %104, label %.lr.ph99.preheader, label %tailrecurse - -.lr.ph99.preheader: ; preds = %.preheader %105 = zext i32 %.057.lcssa to i64 - br label %.lr.ph99 + br i1 %104, label %.lr.ph99, label %tailrecurse .lr.ph.i73.preheader: ; preds = %.lr.ph.i73.preheader.preheader, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit %indvars.iv = phi i64 [ 1, %.lr.ph.i73.preheader.preheader ], [ %indvars.iv.next, %_ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit ] @@ -40244,7 +40240,7 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.us: ; preds = %_ZNK7cvflann9L _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit: ; preds = %.lr.ph.i73 %119 = getelementptr inbounds float, ptr %80, i64 %indvars.iv store float %117, ptr %119, align 4 - %120 = sext i32 %.05796 to i64 + %120 = zext nneg i32 %.05796 to i64 %121 = getelementptr inbounds float, ptr %80, i64 %120 %122 = load float, ptr %121, align 4 %123 = fcmp olt float %117, %122 @@ -40254,9 +40250,9 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit: ; preds = %.lr.ph.i %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.preheader, label %.lr.ph.i73.preheader, !llvm.loop !454 -.lr.ph99: ; preds = %.lr.ph99.preheader, %133 - %125 = phi i32 [ %75, %.lr.ph99.preheader ], [ %134, %133 ] - %indvars.iv116 = phi i64 [ 0, %.lr.ph99.preheader ], [ %indvars.iv.next117, %133 ] +.lr.ph99: ; preds = %.preheader, %133 + %125 = phi i32 [ %134, %133 ], [ %75, %.preheader ] + %indvars.iv116 = phi i64 [ %indvars.iv.next117, %133 ], [ 0, %.preheader ] %.not = icmp eq i64 %indvars.iv116, %105 br i1 %.not, label %133, label %126 @@ -40281,13 +40277,12 @@ _ZNK7cvflann9L2_SimpleIfEclIPKfPfEEfT_T0_mf.exit80.loopexit: ; preds = %.lr.ph.i tailrecurse: ; preds = %133, %.preheader tail call void @_ZdaPv(ptr noundef nonnull %80) #36 %137 = load ptr, ptr %74, align 8 - %138 = sext i32 %.057.lcssa to i64 - %139 = getelementptr inbounds ptr, ptr %137, i64 %138 - %140 = load ptr, ptr %139, align 8 - %141 = getelementptr inbounds i8, ptr %140, i64 8 - %142 = load ptr, ptr %141, align 8 - %143 = icmp eq ptr %142, null - br i1 %143, label %tailrecurse._crit_edge, label %72 + %138 = getelementptr inbounds ptr, ptr %137, i64 %105 + %139 = load ptr, ptr %138, align 8 + %140 = getelementptr inbounds i8, ptr %139, i64 8 + %141 = load ptr, ptr %140, align 8 + %142 = icmp eq ptr %141, null + br i1 %142, label %tailrecurse._crit_edge, label %72 .loopexit: ; preds = %68, %23, %18 ret void diff --git a/bench/opencv/optimized/flann_search_dataset.cpp.ll b/bench/opencv/optimized/flann_search_dataset.cpp.ll index ee37d8b36d7..a9658de537c 100644 --- a/bench/opencv/optimized/flann_search_dataset.cpp.ll +++ b/bench/opencv/optimized/flann_search_dataset.cpp.ll @@ -18349,7 +18349,7 @@ _ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit47: ; preds = %._crit_edge.i39, %5 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) %60 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv store i32 %.1.i46, ptr %60, align 4 - %61 = sext i32 %.03253 to i64 + %61 = zext nneg i32 %.03253 to i64 %62 = getelementptr inbounds i32, ptr %3, i64 %61 %63 = load i32, ptr %62, align 4 %64 = icmp slt i32 %.1.i46, %63 @@ -19274,7 +19274,7 @@ define linkonce_odr hidden void @_ZN7cvflann27HierarchicalClusteringIndexINS_7Ha br i1 %34, label %.lr.ph149, label %._crit_edge150.thread ._crit_edge150.thread: ; preds = %._crit_edge - %.phi.trans.insert = sext i32 %.074.lcssa to i64 + %.phi.trans.insert = zext i32 %.074.lcssa to i64 %.phi.trans.insert210 = getelementptr inbounds i32, ptr %2, i64 %.phi.trans.insert %.pre = load i32, ptr %.phi.trans.insert210, align 4 %122 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv205 @@ -19361,8 +19361,7 @@ _ZNK7cvflann7HammingIhEclIPhS3_EEiT_T0_mi.exit101: ; preds = %._crit_edge.i93, % ._crit_edge150: ; preds = %_ZNK7cvflann7HammingIhEclIPhS3_EEiT_T0_mi.exit101 %159 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv205 store i32 %127, ptr %159, align 4 - %.pre211 = sext i32 %.074.lcssa to i64 - %160 = getelementptr inbounds i32, ptr %2, i64 %.pre211 + %160 = getelementptr inbounds i32, ptr %2, i64 %125 %161 = load ptr, ptr %79, align 8 %162 = load i64, ptr %80, align 8 %163 = load i32, ptr %160, align 4 @@ -22364,7 +22363,7 @@ define linkonce_odr hidden void @_ZN7cvflann27HierarchicalClusteringIndexINS_7Ha br label %87 tailrecurse._crit_edge: ; preds = %tailrecurse, %9 - %.tr98.lcssa = phi ptr [ %1, %9 ], [ %163, %tailrecurse ] + %.tr98.lcssa = phi ptr [ %1, %9 ], [ %162, %tailrecurse ] %23 = load i32, ptr %4, align 4 %.not59 = icmp slt i32 %23, %5 %or.cond = select i1 %8, i1 true, i1 %.not59 @@ -22489,8 +22488,8 @@ _ZNK7cvflann7HammingIhEclIPhPKhEEiT_T0_mi.exit: ; preds = %._crit_edge.i, %69 br i1 %86, label %37, label %.loopexit, !llvm.loop !204 87: ; preds = %.lr.ph116, %tailrecurse - %88 = phi ptr [ %17, %.lr.ph116 ], [ %165, %tailrecurse ] - %89 = phi ptr [ %16, %.lr.ph116 ], [ %164, %tailrecurse ] + %88 = phi ptr [ %17, %.lr.ph116 ], [ %164, %tailrecurse ] + %89 = phi ptr [ %16, %.lr.ph116 ], [ %163, %tailrecurse ] %90 = load i32, ptr %19, align 4 %91 = sext i32 %90 to i64 %92 = icmp slt i32 %90, 0 @@ -22560,14 +22559,14 @@ _ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit: ; preds = %._crit_edge.i70, %1 %wide.trip.count = zext nneg i32 %90 to i64 br label %.lr.ph -.preheader: ; preds = %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit - %.057.lcssa = phi i32 [ 0, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit ], [ %spec.select, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92 ] - %121 = icmp sgt i32 %90, 0 - br i1 %121, label %.lr.ph114.preheader, label %tailrecurse +.preheader.loopexit: ; preds = %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92 + %121 = zext i32 %spec.select to i64 + br label %.preheader -.lr.ph114.preheader: ; preds = %.preheader - %122 = zext i32 %.057.lcssa to i64 - br label %.lr.ph114 +.preheader: ; preds = %.preheader.loopexit, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit + %.057.lcssa = phi i64 [ 0, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit ], [ %121, %.preheader.loopexit ] + %122 = icmp sgt i32 %90, 0 + br i1 %122, label %.lr.ph114, label %tailrecurse .lr.ph: ; preds = %.lr.ph.preheader, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92 %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %_ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92 ] @@ -22622,7 +22621,7 @@ _ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92: ; preds = %._crit_edge.i84, %1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) %142 = getelementptr inbounds i32, ptr %95, i64 %indvars.iv store i32 %.1.i91, ptr %142, align 4 - %143 = sext i32 %.057111 to i64 + %143 = zext nneg i32 %.057111 to i64 %144 = getelementptr inbounds i32, ptr %95, i64 %143 %145 = load i32, ptr %144, align 4 %146 = icmp slt i32 %.1.i91, %145 @@ -22630,12 +22629,12 @@ _ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92: ; preds = %._crit_edge.i84, %1 %spec.select = select i1 %146, i32 %147, i32 %.057111 %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 %.preheader, label %.lr.ph, !llvm.loop !205 + br i1 %exitcond.not, label %.preheader.loopexit, label %.lr.ph, !llvm.loop !205 -.lr.ph114: ; preds = %.lr.ph114.preheader, %156 - %148 = phi i32 [ %90, %.lr.ph114.preheader ], [ %157, %156 ] - %indvars.iv128 = phi i64 [ 0, %.lr.ph114.preheader ], [ %indvars.iv.next129, %156 ] - %.not = icmp eq i64 %indvars.iv128, %122 +.lr.ph114: ; preds = %.preheader, %156 + %148 = phi i32 [ %157, %156 ], [ %90, %.preheader ] + %indvars.iv128 = phi i64 [ %indvars.iv.next129, %156 ], [ 0, %.preheader ] + %.not = icmp eq i64 %indvars.iv128, %.057.lcssa br i1 %.not, label %156, label %149 149: ; preds = %.lr.ph114 @@ -22659,13 +22658,12 @@ _ZNK7cvflann7HammingIhEclIPKhPhEEiT_T0_mi.exit92: ; preds = %._crit_edge.i84, %1 tailrecurse: ; preds = %156, %.preheader tail call void @_ZdaPv(ptr noundef nonnull %95) #31 %160 = load ptr, ptr %89, align 8 - %161 = sext i32 %.057.lcssa to i64 - %162 = getelementptr inbounds ptr, ptr %160, i64 %161 - %163 = load ptr, ptr %162, align 8 - %164 = getelementptr inbounds i8, ptr %163, i64 8 - %165 = load ptr, ptr %164, align 8 - %166 = icmp eq ptr %165, null - br i1 %166, label %tailrecurse._crit_edge, label %87 + %161 = getelementptr inbounds ptr, ptr %160, i64 %.057.lcssa + %162 = load ptr, ptr %161, align 8 + %163 = getelementptr inbounds i8, ptr %162, i64 8 + %164 = load ptr, ptr %163, align 8 + %165 = icmp eq ptr %164, null + br i1 %165, label %tailrecurse._crit_edge, label %87 .loopexit: ; preds = %83, %29, %24 ret void diff --git a/bench/opencv/optimized/global_histogram_binarizer.cpp.ll b/bench/opencv/optimized/global_histogram_binarizer.cpp.ll index e3c1df26b51..2a58162acd4 100644 --- a/bench/opencv/optimized/global_histogram_binarizer.cpp.ll +++ b/bench/opencv/optimized/global_histogram_binarizer.cpp.ll @@ -1292,11 +1292,11 @@ define hidden noundef range(i32 -1, -7) i32 @_ZN5zxing24GlobalHistogramBinarizer br i1 %exitcond107.not, label %._crit_edge, label %.lr.ph93, !llvm.loop !12 ._crit_edge: ; preds = %.lr.ph93, %3 - %.058.lcssa114 = phi i32 [ 0, %3 ], [ %.1, %.lr.ph93 ] - %.064.lcssa113 = phi i32 [ 0, %3 ], [ %spec.select84, %.lr.ph93 ] + %.058.lcssa113 = phi i32 [ 0, %3 ], [ %.1, %.lr.ph93 ] + %.064.lcssa112 = phi i32 [ 0, %3 ], [ %spec.select84, %.lr.ph93 ] %.069.lcssa = phi i32 [ 0, %3 ], [ %spec.select78, %.lr.ph93 ] - %spec.select79 = tail call i32 @llvm.smax.i32(i32 %.064.lcssa113, i32 %.069.lcssa) - %spec.select80 = tail call i32 @llvm.smin.i32(i32 %.064.lcssa113, i32 %.069.lcssa) + %spec.select79 = tail call i32 @llvm.umax.i32(i32 %.064.lcssa112, i32 %.069.lcssa) + %spec.select80 = tail call i32 @llvm.umin.i32(i32 %.064.lcssa112, i32 %.069.lcssa) %29 = sub nsw i32 %spec.select79, %spec.select80 %30 = ashr i32 %15, 4 %.not = icmp sgt i32 %29, %30 @@ -1314,7 +1314,7 @@ define hidden noundef range(i32 -1, -7) i32 @_ZN5zxing24GlobalHistogramBinarizer store ptr getelementptr inbounds inrange(-16, 64) (i8, ptr @_ZTVN5zxing12ErrorHandlerE, i64 16), ptr %4, align 8 %35 = getelementptr inbounds i8, ptr %4, i64 16 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #13 - br label %63 + br label %64 36: ; preds = %31 %37 = landingpad { ptr, i32 } @@ -1334,39 +1334,41 @@ define hidden noundef range(i32 -1, -7) i32 @_ZN5zxing24GlobalHistogramBinarizer %43 = load ptr, ptr %42, align 8 %44 = getelementptr inbounds i8, ptr %43, i64 16 %45 = load ptr, ptr %44, align 8 - %46 = sext i32 %40 to i64 - %47 = sext i32 %spec.select80 to i64 - br label %48 - -48: ; preds = %.lr.ph99, %48 - %indvars.iv108 = phi i64 [ %46, %.lr.ph99 ], [ %indvars.iv.next109, %48 ] - %.06096 = phi i32 [ -1, %.lr.ph99 ], [ %spec.select82, %48 ] - %.06295 = phi i32 [ %40, %.lr.ph99 ], [ %spec.select81, %48 ] - %49 = trunc i64 %indvars.iv108 to i32 - %50 = sub i32 %49, %spec.select80 - %51 = mul nsw i32 %50, %50 - %52 = trunc i64 %indvars.iv108 to i32 - %53 = sub i32 %spec.select79, %52 - %54 = mul nsw i32 %51, %53 - %55 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv108 - %56 = load i32, ptr %55, align 4 - %57 = sub nsw i32 %.058.lcssa114, %56 - %58 = mul nsw i32 %54, %57 - %59 = icmp sgt i32 %58, %.06096 - %60 = trunc nsw i64 %indvars.iv108 to i32 - %spec.select81 = select i1 %59, i32 %60, i32 %.06295 - %spec.select82 = tail call i32 @llvm.smax.i32(i32 %58, i32 %.06096) + %46 = tail call i32 @llvm.umax.i32(i32 %.069.lcssa, i32 %.064.lcssa112) + %umax = zext i32 %46 to i64 + %47 = add nsw i64 %umax, -1 + %48 = sext i32 %spec.select80 to i64 + br label %49 + +49: ; preds = %.lr.ph99, %49 + %indvars.iv108 = phi i64 [ %47, %.lr.ph99 ], [ %indvars.iv.next109, %49 ] + %.06096 = phi i32 [ -1, %.lr.ph99 ], [ %spec.select82, %49 ] + %.06295 = phi i32 [ %40, %.lr.ph99 ], [ %spec.select81, %49 ] + %50 = trunc i64 %indvars.iv108 to i32 + %51 = sub i32 %50, %spec.select80 + %52 = mul nsw i32 %51, %51 + %53 = trunc i64 %indvars.iv108 to i32 + %54 = sub i32 %spec.select79, %53 + %55 = mul nsw i32 %52, %54 + %56 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv108 + %57 = load i32, ptr %56, align 4 + %58 = sub nsw i32 %.058.lcssa113, %57 + %59 = mul nsw i32 %55, %58 + %60 = icmp sgt i32 %59, %.06096 + %61 = trunc nuw nsw i64 %indvars.iv108 to i32 + %spec.select81 = select i1 %60, i32 %61, i32 %.06295 + %spec.select82 = tail call i32 @llvm.smax.i32(i32 %59, i32 %.06096) %indvars.iv.next109 = add nsw i64 %indvars.iv108, -1 - %61 = icmp sgt i64 %indvars.iv.next109, %47 - br i1 %61, label %48, label %._crit_edge100, !llvm.loop !13 + %62 = icmp sgt i64 %indvars.iv.next109, %48 + br i1 %62, label %49, label %._crit_edge100, !llvm.loop !13 -._crit_edge100: ; preds = %48, %39 - %.062.lcssa = phi i32 [ %40, %39 ], [ %spec.select81, %48 ] - %62 = shl i32 %.062.lcssa, 3 - br label %63 +._crit_edge100: ; preds = %49, %39 + %.062.lcssa = phi i32 [ %40, %39 ], [ %spec.select81, %49 ] + %63 = shl i32 %.062.lcssa, 3 + br label %64 -63: ; preds = %._crit_edge100, %34 - %.0 = phi i32 [ -1, %34 ], [ %62, %._crit_edge100 ] +64: ; preds = %._crit_edge100, %34 + %.0 = phi i32 [ -1, %34 ], [ %63, %._crit_edge100 ] ret i32 %.0 } @@ -2033,10 +2035,13 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #12 +declare i32 @llvm.umax.i32(i32, i32) #12 + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #12 +declare i32 @llvm.smax.i32(i32, i32) #12 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,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { nofree nounwind } 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/ImfChromaticities.cpp.ll b/bench/openexr/optimized/ImfChromaticities.cpp.ll index 6125add7eda..e7c3b9167df 100644 --- a/bench/openexr/optimized/ImfChromaticities.cpp.ll +++ b/bench/openexr/optimized/ImfChromaticities.cpp.ll @@ -759,23 +759,19 @@ if.then21: ; preds = %for.end if.end22: ; preds = %for.end %21 = zext i32 %pivot.1 to i64 %cmp23.not = icmp eq i64 %indvars.iv161, %21 - br i1 %cmp23.not, label %for.body76.preheader, label %for.cond25.preheader + br i1 %cmp23.not, label %for.body76.preheader, label %for.body27 -for.cond25.preheader: ; preds = %if.end22 - %idxprom35 = sext i32 %pivot.1 to i64 - br label %for.body27 - -for.body27: ; preds = %for.cond25.preheader, %for.body27 - %indvars.iv149 = phi i64 [ 0, %for.cond25.preheader ], [ %indvars.iv.next150, %for.body27 ] +for.body27: ; preds = %if.end22, %for.body27 + %indvars.iv149 = phi i64 [ %indvars.iv.next150, %for.body27 ], [ 0, %if.end22 ] %arrayidx33 = getelementptr inbounds [4 x [4 x float]], ptr %t, i64 0, i64 %indvars.iv161, i64 %indvars.iv149 %22 = load float, ptr %arrayidx33, align 4 - %arrayidx38 = getelementptr inbounds [4 x [4 x float]], ptr %t, i64 0, i64 %idxprom35, i64 %indvars.iv149 + %arrayidx38 = getelementptr inbounds [4 x [4 x float]], ptr %t, i64 0, i64 %21, i64 %indvars.iv149 %23 = load float, ptr %arrayidx38, align 4 store float %23, ptr %arrayidx33, align 4 store float %22, ptr %arrayidx38, align 4 %arrayidx53 = getelementptr inbounds [4 x [4 x float]], ptr %s, i64 0, i64 %indvars.iv161, i64 %indvars.iv149 %24 = load float, ptr %arrayidx53, align 4 - %arrayidx58 = getelementptr inbounds [4 x [4 x float]], ptr %s, i64 0, i64 %idxprom35, i64 %indvars.iv149 + %arrayidx58 = getelementptr inbounds [4 x [4 x float]], ptr %s, i64 0, i64 %21, i64 %indvars.iv149 %25 = load float, ptr %arrayidx58, align 4 store float %25, ptr %arrayidx53, align 4 store float %24, ptr %arrayidx58, align 4 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/attachListener.ll b/bench/openjdk/optimized/attachListener.ll index 7d9c2b60919..ed5ea5b2d31 100644 --- a/bench/openjdk/optimized/attachListener.ll +++ b/bench/openjdk/optimized/attachListener.ll @@ -667,49 +667,44 @@ define internal noundef i32 @_ZL11thread_dumpP15AttachOperationP12outputStream(p %10 = getelementptr inbounds i8, ptr %5, i64 %indvars.iv.next %11 = load i8, ptr %10, align 1 %.not15 = icmp eq i8 %11, 0 - br i1 %.not15, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !9 - -._crit_edge.loopexit: ; preds = %.lr.ph - %12 = and i8 %spec.select, 1 - %13 = and i8 %.2, 1 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %2 - %.113.lcssa = phi i8 [ 0, %2 ], [ %12, %._crit_edge.loopexit ] - %.1.lcssa = phi i8 [ 0, %2 ], [ %13, %._crit_edge.loopexit ] - %14 = getelementptr inbounds i8, ptr %3, i64 8 - store ptr null, ptr %14, align 8 + br i1 %.not15, label %._crit_edge, label %.lr.ph, !llvm.loop !9 + +._crit_edge: ; preds = %.lr.ph, %2 + %.113.lcssa = phi i8 [ 0, %2 ], [ %spec.select, %.lr.ph ] + %.1.lcssa = phi i8 [ 0, %2 ], [ %.2, %.lr.ph ] + %12 = getelementptr inbounds i8, ptr %3, i64 8 + store ptr null, ptr %12, align 8 store ptr getelementptr inbounds inrange(-16, 80) (i8, ptr @_ZTV15VM_PrintThreads, i64 16), ptr %3, align 8 - %15 = getelementptr inbounds i8, ptr %3, i64 16 - store ptr %1, ptr %15, align 8 - %16 = getelementptr inbounds i8, ptr %3, i64 24 - store i8 %.113.lcssa, ptr %16, align 8 - %17 = getelementptr inbounds i8, ptr %3, i64 25 - store i8 %.1.lcssa, ptr %17, align 1 - %18 = getelementptr inbounds i8, ptr %3, i64 26 - store i8 1, ptr %18, align 2 + %13 = getelementptr inbounds i8, ptr %3, i64 16 + store ptr %1, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %3, i64 24 + store i8 %.113.lcssa, ptr %14, align 8 + %15 = getelementptr inbounds i8, ptr %3, i64 25 + store i8 %.1.lcssa, ptr %15, align 1 + %16 = getelementptr inbounds i8, ptr %3, i64 26 + store i8 1, ptr %16, align 2 call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %3) #8 - %19 = getelementptr inbounds i8, ptr %4, i64 8 - store ptr null, ptr %19, align 8 + %17 = getelementptr inbounds i8, ptr %4, i64 8 + store ptr null, ptr %17, align 8 store ptr getelementptr inbounds inrange(-16, 80) (i8, ptr @_ZTV16VM_FindDeadlocks, i64 16), ptr %4, align 8 - %20 = getelementptr inbounds i8, ptr %4, i64 16 - store i8 1, ptr %20, align 8 - %21 = getelementptr inbounds i8, ptr %4, i64 24 + %18 = getelementptr inbounds i8, ptr %4, i64 16 + store i8 1, ptr %18, align 8 + %19 = getelementptr inbounds i8, ptr %4, i64 24 + store ptr null, ptr %19, align 8 + %20 = getelementptr inbounds i8, ptr %4, i64 32 + store ptr %1, ptr %20, align 8 + %21 = getelementptr inbounds i8, ptr %4, i64 40 + %22 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN6Thread12_thr_currentE) + %23 = load ptr, ptr %22, align 8 store ptr null, ptr %21, align 8 - %22 = getelementptr inbounds i8, ptr %4, i64 32 - store ptr %1, ptr %22, align 8 - %23 = getelementptr inbounds i8, ptr %4, i64 40 - %24 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN6Thread12_thr_currentE) - %25 = load ptr, ptr %24, align 8 - store ptr null, ptr %23, align 8 - %26 = getelementptr inbounds i8, ptr %4, i64 48 - store ptr %25, ptr %26, align 8 - %27 = getelementptr inbounds i8, ptr %4, i64 56 - store ptr null, ptr %27, align 8 - %28 = getelementptr inbounds i8, ptr %4, i64 64 - store i8 0, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %4, i64 65 - store i8 0, ptr %29, align 1 + %24 = getelementptr inbounds i8, ptr %4, i64 48 + store ptr %23, ptr %24, align 8 + %25 = getelementptr inbounds i8, ptr %4, i64 56 + store ptr null, ptr %25, align 8 + %26 = getelementptr inbounds i8, ptr %4, i64 64 + store i8 0, ptr %26, align 8 + %27 = getelementptr inbounds i8, ptr %4, i64 65 + store i8 0, ptr %27, align 1 call void @_ZN8VMThread7executeEP12VM_Operation(ptr noundef nonnull %4) #8 call void @_ZN16VM_FindDeadlocksD1Ev(ptr noundef nonnull align 8 dereferenceable(72) %4) #8 ret i32 0 diff --git a/bench/openmpi/optimized/opal_graph.ll b/bench/openmpi/optimized/opal_graph.ll index 64eb57a3352..0c355703272 100644 --- a/bench/openmpi/optimized/opal_graph.ll +++ b/bench/openmpi/optimized/opal_graph.ll @@ -569,40 +569,39 @@ define range(i32 -1, 1) i32 @opal_graph_add_edge(ptr nocapture noundef %0, ptr n br i1 %.not, label %._crit_edge, label %11, !llvm.loop !10 ._crit_edge: ; preds = %11 - %17 = and i8 %.1, 1 - %18 = icmp eq i8 %17, 0 - %19 = icmp eq ptr %spec.select, null - %or.cond = select i1 %19, i1 true, i1 %18 - br i1 %or.cond, label %._crit_edge.thread, label %20 - -20: ; preds = %._crit_edge - %21 = getelementptr inbounds i8, ptr %1, i64 64 - store ptr %spec.select, ptr %21, align 8 - %22 = getelementptr inbounds i8, ptr %spec.select, i64 48 - %23 = load ptr, ptr %22, align 8 - %24 = getelementptr inbounds i8, ptr %23, i64 16 - %25 = getelementptr inbounds i8, ptr %23, i64 40 - %26 = load volatile ptr, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %1, i64 24 - store volatile ptr %26, ptr %27, align 8 - %28 = load volatile ptr, ptr %25, align 8 - %29 = getelementptr inbounds i8, ptr %28, i64 16 - store volatile ptr %1, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %1, i64 16 - store volatile ptr %24, ptr %30, align 8 - store volatile ptr %1, ptr %25, align 8 - %31 = getelementptr inbounds i8, ptr %23, i64 56 - %32 = load volatile i64, ptr %31, align 8 - %33 = add i64 %32, 1 - store volatile i64 %33, ptr %31, align 8 - %34 = getelementptr inbounds i8, ptr %0, i64 24 - %35 = load i32, ptr %34, align 8 - %36 = add nsw i32 %35, 1 - store i32 %36, ptr %34, align 8 + %17 = icmp eq i8 %.1, 0 + %18 = icmp eq ptr %spec.select, null + %or.cond = select i1 %18, i1 true, i1 %17 + br i1 %or.cond, label %._crit_edge.thread, label %19 + +19: ; preds = %._crit_edge + %20 = getelementptr inbounds i8, ptr %1, i64 64 + store ptr %spec.select, ptr %20, align 8 + %21 = getelementptr inbounds i8, ptr %spec.select, i64 48 + %22 = load ptr, ptr %21, align 8 + %23 = getelementptr inbounds i8, ptr %22, i64 16 + %24 = getelementptr inbounds i8, ptr %22, i64 40 + %25 = load volatile ptr, ptr %24, align 8 + %26 = getelementptr inbounds i8, ptr %1, i64 24 + store volatile ptr %25, ptr %26, align 8 + %27 = load volatile ptr, ptr %24, align 8 + %28 = getelementptr inbounds i8, ptr %27, i64 16 + store volatile ptr %1, ptr %28, align 8 + %29 = getelementptr inbounds i8, ptr %1, i64 16 + store volatile ptr %23, ptr %29, align 8 + store volatile ptr %1, ptr %24, align 8 + %30 = getelementptr inbounds i8, ptr %22, i64 56 + %31 = load volatile i64, ptr %30, align 8 + %32 = add i64 %31, 1 + store volatile i64 %32, ptr %30, align 8 + %33 = getelementptr inbounds i8, ptr %0, i64 24 + %34 = load i32, ptr %33, align 8 + %35 = add nsw i32 %34, 1 + store i32 %35, ptr %33, align 8 br label %._crit_edge.thread -._crit_edge.thread: ; preds = %2, %._crit_edge, %20 - %.019 = phi i32 [ 0, %20 ], [ -1, %._crit_edge ], [ -1, %2 ] +._crit_edge.thread: ; preds = %2, %._crit_edge, %19 + %.019 = phi i32 [ 0, %19 ], [ -1, %._crit_edge ], [ -1, %2 ] ret i32 %.019 } @@ -1611,7 +1610,7 @@ opal_obj_new.exit60: ; preds = %.lr.ph.i.i57, %25, br i1 %.not5079, label %._crit_edge83, label %.lr.ph82 .lr.ph82: ; preds = %._crit_edge, %._crit_edge77 - %80 = phi ptr [ %144, %._crit_edge77 ], [ %77, %._crit_edge ] + %80 = phi ptr [ %143, %._crit_edge77 ], [ %77, %._crit_edge ] %.180 = phi ptr [ %.1, %._crit_edge77 ], [ %.178, %._crit_edge ] %81 = getelementptr inbounds i8, ptr %.180, i64 48 %82 = load ptr, ptr %81, align 8 @@ -1698,44 +1697,43 @@ opal_obj_new.exit67: ; preds = %.lr.ph.i.i64, %90, br i1 %.not.i68, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !10 ._crit_edge.i: ; preds = %.lr.ph.i - %121 = and i8 %.1.i, 1 - %122 = icmp eq i8 %121, 0 - %123 = icmp eq ptr %spec.select.i, null - %or.cond.i = select i1 %123, i1 true, i1 %122 - br i1 %or.cond.i, label %opal_graph_add_edge.exit, label %124 - -124: ; preds = %._crit_edge.i - %125 = getelementptr inbounds i8, ptr %86, i64 64 - store ptr %spec.select.i, ptr %125, align 8 - %126 = getelementptr inbounds i8, ptr %spec.select.i, i64 48 - %127 = load ptr, ptr %126, align 8 - %128 = getelementptr inbounds i8, ptr %127, i64 16 - %129 = getelementptr inbounds i8, ptr %127, i64 40 - %130 = load volatile ptr, ptr %129, align 8 - %131 = getelementptr inbounds i8, ptr %86, i64 24 - store volatile ptr %130, ptr %131, align 8 - %132 = load volatile ptr, ptr %129, align 8 - %133 = getelementptr inbounds i8, ptr %132, i64 16 - store volatile ptr %86, ptr %133, align 8 - %134 = getelementptr inbounds i8, ptr %86, i64 16 - store volatile ptr %128, ptr %134, align 8 - store volatile ptr %86, ptr %129, align 8 - %135 = getelementptr inbounds i8, ptr %127, i64 56 - %136 = load volatile i64, ptr %135, align 8 - %137 = add i64 %136, 1 - store volatile i64 %137, ptr %135, align 8 - %138 = getelementptr inbounds i8, ptr %111, i64 24 - %139 = load i32, ptr %138, align 8 - %140 = add nsw i32 %139, 1 - store i32 %140, ptr %138, align 8 + %121 = icmp eq i8 %.1.i, 0 + %122 = icmp eq ptr %spec.select.i, null + %or.cond.i = select i1 %122, i1 true, i1 %121 + br i1 %or.cond.i, label %opal_graph_add_edge.exit, label %123 + +123: ; preds = %._crit_edge.i + %124 = getelementptr inbounds i8, ptr %86, i64 64 + store ptr %spec.select.i, ptr %124, align 8 + %125 = getelementptr inbounds i8, ptr %spec.select.i, i64 48 + %126 = load ptr, ptr %125, align 8 + %127 = getelementptr inbounds i8, ptr %126, i64 16 + %128 = getelementptr inbounds i8, ptr %126, i64 40 + %129 = load volatile ptr, ptr %128, align 8 + %130 = getelementptr inbounds i8, ptr %86, i64 24 + store volatile ptr %129, ptr %130, align 8 + %131 = load volatile ptr, ptr %128, align 8 + %132 = getelementptr inbounds i8, ptr %131, i64 16 + store volatile ptr %86, ptr %132, align 8 + %133 = getelementptr inbounds i8, ptr %86, i64 16 + store volatile ptr %127, ptr %133, align 8 + store volatile ptr %86, ptr %128, align 8 + %134 = getelementptr inbounds i8, ptr %126, i64 56 + %135 = load volatile i64, ptr %134, align 8 + %136 = add i64 %135, 1 + store volatile i64 %136, ptr %134, align 8 + %137 = getelementptr inbounds i8, ptr %111, i64 24 + %138 = load i32, ptr %137, align 8 + %139 = add nsw i32 %138, 1 + store i32 %139, ptr %137, align 8 br label %opal_graph_add_edge.exit -opal_graph_add_edge.exit: ; preds = %opal_obj_new.exit67, %._crit_edge.i, %124 - %141 = getelementptr inbounds i8, ptr %.04674, i64 16 - %.046 = load volatile ptr, ptr %141, align 8 - %142 = load ptr, ptr %81, align 8 - %143 = getelementptr inbounds i8, ptr %142, i64 16 - %.not51 = icmp eq ptr %.046, %143 +opal_graph_add_edge.exit: ; preds = %opal_obj_new.exit67, %._crit_edge.i, %123 + %140 = getelementptr inbounds i8, ptr %.04674, i64 16 + %.046 = load volatile ptr, ptr %140, align 8 + %141 = load ptr, ptr %81, align 8 + %142 = getelementptr inbounds i8, ptr %141, i64 16 + %.not51 = icmp eq ptr %.046, %142 br i1 %.not51, label %._crit_edge77.loopexit, label %.lr.ph76, !llvm.loop !24 ._crit_edge77.loopexit: ; preds = %opal_graph_add_edge.exit @@ -1743,11 +1741,11 @@ opal_graph_add_edge.exit: ; preds = %opal_obj_new.exit67 br label %._crit_edge77 ._crit_edge77: ; preds = %._crit_edge77.loopexit, %.lr.ph82 - %144 = phi ptr [ %.pre86, %._crit_edge77.loopexit ], [ %80, %.lr.ph82 ] - %145 = getelementptr inbounds i8, ptr %.180, i64 16 - %.1 = load volatile ptr, ptr %145, align 8 - %146 = getelementptr inbounds i8, ptr %144, i64 16 - %.not50 = icmp eq ptr %.1, %146 + %143 = phi ptr [ %.pre86, %._crit_edge77.loopexit ], [ %80, %.lr.ph82 ] + %144 = getelementptr inbounds i8, ptr %.180, i64 16 + %.1 = load volatile ptr, ptr %144, align 8 + %145 = getelementptr inbounds i8, ptr %143, i64 16 + %.not50 = icmp eq ptr %.1, %145 br i1 %.not50, label %._crit_edge83, label %.lr.ph82, !llvm.loop !25 ._crit_edge83: ; preds = %._crit_edge77, %._crit_edge diff --git a/bench/openssl/optimized/libcrypto-lib-bn_exp.ll b/bench/openssl/optimized/libcrypto-lib-bn_exp.ll index bde000e4ab5..07973d895fb 100644 --- a/bench/openssl/optimized/libcrypto-lib-bn_exp.ll +++ b/bench/openssl/optimized/libcrypto-lib-bn_exp.ll @@ -650,16 +650,16 @@ for.body113.preheader: ; preds = %if.end104 br label %for.body113 for.body113: ; preds = %for.body113.preheader, %for.body113 - %indvars.iv149 = phi i64 [ 1, %for.body113.preheader ], [ %indvars.iv.next150, %for.body113 ] + %indvars.iv148 = phi i64 [ 1, %for.body113.preheader ], [ %indvars.iv.next149, %for.body113 ] %13 = load ptr, ptr %m, align 8 - %arrayidx116 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv149 + %arrayidx116 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv148 %14 = load i64, ptr %arrayidx116, align 8 %not = xor i64 %14, -1 %15 = load ptr, ptr %call21, align 8 - %arrayidx120 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv149 + %arrayidx120 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv148 store i64 %not, ptr %arrayidx120, align 8 - %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next150, %wide.trip.count + %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count br i1 %exitcond.not, label %for.end123, label %for.body113, !llvm.loop !8 for.end123: ; preds = %for.body113, %if.end104 @@ -680,7 +680,6 @@ if.end131: ; preds = %if.else125, %for.en for.cond132.outer: ; preds = %if.end183, %if.end131 %wstart.0.ph = phi i32 [ %sub185, %if.end183 ], [ %sub93, %if.end131 ] %tobool136.not = phi i1 [ true, %if.end183 ], [ false, %if.end131 ] - %tobool165.not = phi i1 [ false, %if.end183 ], [ true, %if.end131 ] %call133128 = tail call i32 @BN_is_bit_set(ptr noundef %p, i32 noundef %wstart.0.ph) #5 %cmp134129 = icmp eq i32 %call133128, 0 br i1 %cmp134129, label %if.then135.lr.ph, label %for.cond147.preheader @@ -736,8 +735,8 @@ if.end153: ; preds = %for.body149 %wend.1 = select i1 %tobool156.not, i32 %wend.0132, i32 %i.2133 %wvalue.1 = select i1 %tobool156.not, i32 %wvalue.0134, i32 %or160 %inc163 = add nuw nsw i32 %i.2133, 1 - %exitcond152.not = icmp eq i32 %inc163, %cond69109 - br i1 %exitcond152.not, label %for.end164.loopexit, label %for.body149, !llvm.loop !9 + %exitcond151.not = icmp eq i32 %inc163, %cond69109 + br i1 %exitcond151.not, label %for.end164.loopexit, label %for.body149, !llvm.loop !9 for.end164.loopexit: ; preds = %for.body149, %if.end153 %wend.0.lcssa.ph = phi i32 [ %wend.1, %if.end153 ], [ %wend.0132, %for.body149 ] @@ -750,17 +749,15 @@ for.end164: ; preds = %for.end164.loopexit %wend.0.lcssa = phi i32 [ 0, %for.cond147.preheader ], [ %wend.0.lcssa.ph, %for.end164.loopexit ] %wvalue.0.lcssa = phi i64 [ 0, %for.cond147.preheader ], [ %17, %for.end164.loopexit ] %add.neg = xor i32 %wend.0.lcssa, -1 - %cmp168.not139 = icmp slt i32 %wend.0.lcssa, 0 - %or.cond = select i1 %tobool165.not, i1 true, i1 %cmp168.not139 - br i1 %or.cond, label %if.end177, label %for.body169 + br i1 %tobool136.not, label %for.body169, label %if.end177 for.cond167: ; preds = %for.body169 - %inc175 = add nuw i32 %i.3140, 1 - %exitcond153.not = icmp eq i32 %i.3140, %wend.0.lcssa - br i1 %exitcond153.not, label %if.end177, label %for.body169, !llvm.loop !10 + %inc175 = add nuw i32 %i.3139, 1 + %exitcond152.not = icmp eq i32 %i.3139, %wend.0.lcssa + br i1 %exitcond152.not, label %if.end177, label %for.body169, !llvm.loop !10 for.body169: ; preds = %for.end164, %for.cond167 - %i.3140 = phi i32 [ %inc175, %for.cond167 ], [ 0, %for.end164 ] + %i.3139 = phi i32 [ %inc175, %for.cond167 ], [ 0, %for.end164 ] %call170 = tail call i32 @bn_mul_mont_fixed_top(ptr noundef %call21, ptr noundef %call21, ptr noundef %call21, ptr noundef nonnull %mont.1, ptr noundef %ctx) #5 %tobool171.not = icmp eq i32 %call170, 0 br i1 %tobool171.not, label %err, label %for.cond167 @@ -973,7 +970,6 @@ for.cond98.preheader: ; preds = %if.end93 for.cond98.outer: ; preds = %for.cond98.preheader, %if.end148 %wstart.0.ph = phi i32 [ %sub83, %for.cond98.preheader ], [ %sub150, %if.end148 ] %tobool102.not = phi i1 [ false, %for.cond98.preheader ], [ true, %if.end148 ] - %tobool130.not = phi i1 [ true, %for.cond98.preheader ], [ false, %if.end148 ] %call9987 = call i32 @BN_is_bit_set(ptr noundef %p.addr.0, i32 noundef %wstart.0.ph) #5 %cmp10088 = icmp eq i32 %call9987, 0 br i1 %cmp10088, label %if.then101.lr.ph, label %for.cond113.preheader @@ -1043,17 +1039,15 @@ for.end129: ; preds = %for.end129.loopexit %wend.0.lcssa = phi i32 [ 0, %for.cond113.preheader ], [ %wend.0.lcssa.ph, %for.end129.loopexit ] %wvalue.0.lcssa = phi i64 [ 0, %for.cond113.preheader ], [ %5, %for.end129.loopexit ] %add.neg = xor i32 %wend.0.lcssa, -1 - %cmp133.not99 = icmp slt i32 %wend.0.lcssa, 0 - %or.cond = select i1 %tobool130.not, i1 true, i1 %cmp133.not99 - br i1 %or.cond, label %if.end142, label %for.body134 + br i1 %tobool102.not, label %for.body134, label %if.end142 for.cond132: ; preds = %for.body134 - %inc140 = add nuw i32 %i.2100, 1 - %exitcond109.not = icmp eq i32 %i.2100, %wend.0.lcssa - br i1 %exitcond109.not, label %if.end142, label %for.body134, !llvm.loop !13 + %inc140 = add nuw i32 %i.299, 1 + %exitcond108.not = icmp eq i32 %i.299, %wend.0.lcssa + br i1 %exitcond108.not, label %if.end142, label %for.body134, !llvm.loop !13 for.body134: ; preds = %for.end129, %for.cond132 - %i.2100 = phi i32 [ %inc140, %for.cond132 ], [ 0, %for.end129 ] + %i.299 = phi i32 [ %inc140, %for.cond132 ], [ 0, %for.end129 ] %call135 = call i32 @BN_mod_mul_reciprocal(ptr noundef %r, ptr noundef %r, ptr noundef %r, ptr noundef nonnull %recp, ptr noundef %ctx) #5 %tobool136.not = icmp eq i32 %call135, 0 br i1 %tobool136.not, label %err, label %for.cond132 @@ -2314,7 +2308,6 @@ for.cond84.preheader: ; preds = %if.end79 for.cond84.outer: ; preds = %for.cond84.preheader, %if.end134 %wstart.0.ph = phi i32 [ %sub69, %for.cond84.preheader ], [ %sub136, %if.end134 ] %tobool88.not = phi i1 [ false, %for.cond84.preheader ], [ true, %if.end134 ] - %tobool116.not = phi i1 [ true, %for.cond84.preheader ], [ false, %if.end134 ] %call8586 = tail call i32 @BN_is_bit_set(ptr noundef %p.addr.0, i32 noundef %wstart.0.ph) #5 %cmp8687 = icmp eq i32 %call8586, 0 br i1 %cmp8687, label %if.then87.lr.ph, label %for.cond99.preheader @@ -2384,17 +2377,15 @@ for.end115: ; preds = %for.end115.loopexit %wend.0.lcssa = phi i32 [ 0, %for.cond99.preheader ], [ %wend.0.lcssa.ph, %for.end115.loopexit ] %wvalue.0.lcssa = phi i64 [ 0, %for.cond99.preheader ], [ %4, %for.end115.loopexit ] %add.neg = xor i32 %wend.0.lcssa, -1 - %cmp119.not98 = icmp slt i32 %wend.0.lcssa, 0 - %or.cond = select i1 %tobool116.not, i1 true, i1 %cmp119.not98 - br i1 %or.cond, label %if.end128, label %for.body120 + br i1 %tobool88.not, label %for.body120, label %if.end128 for.cond118: ; preds = %for.body120 - %inc126 = add nuw i32 %i.299, 1 - %exitcond108.not = icmp eq i32 %i.299, %wend.0.lcssa - br i1 %exitcond108.not, label %if.end128, label %for.body120, !llvm.loop !35 + %inc126 = add nuw i32 %i.298, 1 + %exitcond107.not = icmp eq i32 %i.298, %wend.0.lcssa + br i1 %exitcond107.not, label %if.end128, label %for.body120, !llvm.loop !35 for.body120: ; preds = %for.end115, %for.cond118 - %i.299 = phi i32 [ %inc126, %for.cond118 ], [ 0, %for.end115 ] + %i.298 = phi i32 [ %inc126, %for.cond118 ], [ 0, %for.end115 ] %call121 = tail call i32 @BN_mod_mul(ptr noundef %r, ptr noundef %r, ptr noundef %r, ptr noundef %m, ptr noundef %ctx) #5 %tobool122.not = icmp eq i32 %call121, 0 br i1 %tobool122.not, label %err, label %for.cond118 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/write.c.ll b/bench/openusd/optimized/write.c.ll index 438dd5f58a0..ddb687cfe55 100644 --- a/bench/openusd/optimized/write.c.ll +++ b/bench/openusd/optimized/write.c.ll @@ -3109,9 +3109,9 @@ define internal fastcc i32 @avifRWStreamWriteProperties(ptr noundef nonnull %0, %18 = getelementptr inbounds nuw i8, ptr %3, i64 8 br label %19 -19: ; preds = %.lr.ph242, %147 - %indvars.iv311 = phi i64 [ 0, %.lr.ph242 ], [ %indvars.iv.next312, %147 ] - %20 = phi ptr [ %11, %.lr.ph242 ], [ %148, %147 ] +19: ; preds = %.lr.ph242, %145 + %indvars.iv311 = phi i64 [ 0, %.lr.ph242 ], [ %indvars.iv.next312, %145 ] + %20 = phi ptr [ %11, %.lr.ph242 ], [ %146, %145 ] %21 = load ptr, ptr %20, align 8 %22 = getelementptr inbounds %struct.avifEncoderItem, ptr %21, i64 %indvars.iv311 %23 = getelementptr inbounds nuw i8, ptr %22, i64 136 @@ -3127,7 +3127,7 @@ define internal fastcc i32 @avifRWStreamWriteProperties(ptr noundef nonnull %0, %30 = icmp ne ptr %29, null %or.cond = select i1 %30, i1 true, i1 %25 %or.cond3 = select i1 %or.cond, i1 true, i1 %.not - br i1 %or.cond3, label %31, label %147 + br i1 %or.cond3, label %31, label %145 31: ; preds = %19 %32 = getelementptr inbounds nuw i8, ptr %22, i64 156 @@ -3190,7 +3190,7 @@ avifEncoderDataFindItemByID.exit: ; preds = %44 57: ; preds = %53 %58 = getelementptr inbounds nuw i8, ptr %49, i64 160 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(84) %27, ptr noundef nonnull align 8 dereferenceable(84) %58, i64 84, i1 false) - br label %147 + br label %145 59: ; preds = %.lr.ph, %53 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -3332,7 +3332,7 @@ avifEncoderDataFindItemByID.exit: ; preds = %44 %116 = getelementptr inbounds nuw i8, ptr %22, i64 152 %117 = load i32, ptr %116, align 8 %.not209 = icmp eq i32 %117, 0 - br i1 %.not209, label %147, label %118 + br i1 %.not209, label %145, label %118 118: ; preds = %115 call void @avifRWStreamStart(ptr noundef nonnull %15, ptr noundef nonnull %16) #13 @@ -3365,72 +3365,68 @@ avifEncoderDataFindItemByID.exit: ; preds = %44 %spec.select = select i1 %130, i32 1, i32 %.0163232 %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1 %exitcond302.not = icmp eq i64 %indvars.iv.next299, %wide.trip.count301 - br i1 %exitcond302.not, label %._crit_edge.loopexit, label %125, !llvm.loop !32 - -._crit_edge.loopexit: ; preds = %125 - %131 = icmp ne i32 %spec.select, 0 - br label %._crit_edge - -._crit_edge: ; preds = %._crit_edge.loopexit, %120 - %.0163.lcssa = phi i1 [ false, %120 ], [ %131, %._crit_edge.loopexit ] - %132 = call i32 @avifRWStreamWriteBits(ptr noundef nonnull %15, i32 noundef 0, i64 noundef 7) #13 - %.not211 = icmp eq i32 %132, 0 - br i1 %.not211, label %133, label %.loopexit - -133: ; preds = %._crit_edge - %134 = zext i1 %.0163.lcssa to i32 - %135 = call i32 @avifRWStreamWriteBits(ptr noundef nonnull %15, i32 noundef %134, i64 noundef 1) #13 - %.not213 = icmp eq i32 %135, 0 + br i1 %exitcond302.not, label %._crit_edge, label %125, !llvm.loop !32 + +._crit_edge: ; preds = %125, %120 + %.0163.lcssa = phi i32 [ 0, %120 ], [ %spec.select, %125 ] + %131 = call i32 @avifRWStreamWriteBits(ptr noundef nonnull %15, i32 noundef 0, i64 noundef 7) #13 + %.not211 = icmp eq i32 %131, 0 + br i1 %.not211, label %132, label %.loopexit + +132: ; preds = %._crit_edge + %133 = call i32 @avifRWStreamWriteBits(ptr noundef nonnull %15, i32 noundef %.0163.lcssa, i64 noundef 1) #13 + %.not213 = icmp eq i32 %133, 0 br i1 %.not213, label %.preheader, label %.loopexit -.preheader: ; preds = %133 - br i1 %.0163.lcssa, label %.preheader.split.us, label %.preheader.split +.preheader: ; preds = %132 + %.not212.not = icmp eq i32 %.0163.lcssa, 0 + br i1 %.not212.not, label %.preheader.split.us, label %.preheader.split -.preheader.split.us: ; preds = %.preheader, %139 - %indvars.iv307 = phi i64 [ %indvars.iv.next308, %139 ], [ 0, %.preheader ] - %136 = getelementptr inbounds [3 x i32], ptr %9, i64 0, i64 %indvars.iv307 - %137 = load i32, ptr %136, align 4 - %138 = call i32 @avifRWStreamWriteU32(ptr noundef nonnull %15, i32 noundef %137) #13 - %.not216.us = icmp eq i32 %138, 0 - br i1 %.not216.us, label %139, label %.loopexit +.preheader.split.us: ; preds = %.preheader, %138 + %indvars.iv307 = phi i64 [ %indvars.iv.next308, %138 ], [ 0, %.preheader ] + %134 = getelementptr inbounds [3 x i32], ptr %9, i64 0, i64 %indvars.iv307 + %135 = load i32, ptr %134, align 4 + %136 = trunc i32 %135 to i16 + %137 = call i32 @avifRWStreamWriteU16(ptr noundef nonnull %15, i16 noundef zeroext %136) #13 + %.not215.us = icmp eq i32 %137, 0 + br i1 %.not215.us, label %138, label %.loopexit -139: ; preds = %.preheader.split.us +138: ; preds = %.preheader.split.us %indvars.iv.next308 = add nuw nsw i64 %indvars.iv307, 1 %exitcond310.not = icmp eq i64 %indvars.iv.next308, 3 br i1 %exitcond310.not, label %.split.us, label %.preheader.split.us, !llvm.loop !33 -.preheader.split: ; preds = %.preheader, %144 - %indvars.iv303 = phi i64 [ %indvars.iv.next304, %144 ], [ 0, %.preheader ] - %140 = getelementptr inbounds [3 x i32], ptr %9, i64 0, i64 %indvars.iv303 - %141 = load i32, ptr %140, align 4 - %142 = trunc i32 %141 to i16 - %143 = call i32 @avifRWStreamWriteU16(ptr noundef nonnull %15, i16 noundef zeroext %142) #13 - %.not215 = icmp eq i32 %143, 0 - br i1 %.not215, label %144, label %.loopexit +.preheader.split: ; preds = %.preheader, %142 + %indvars.iv303 = phi i64 [ %indvars.iv.next304, %142 ], [ 0, %.preheader ] + %139 = getelementptr inbounds [3 x i32], ptr %9, i64 0, i64 %indvars.iv303 + %140 = load i32, ptr %139, align 4 + %141 = call i32 @avifRWStreamWriteU32(ptr noundef nonnull %15, i32 noundef %140) #13 + %.not216 = icmp eq i32 %141, 0 + br i1 %.not216, label %142, label %.loopexit -144: ; preds = %.preheader.split +142: ; preds = %.preheader.split %indvars.iv.next304 = add nuw nsw i64 %indvars.iv303, 1 %exitcond306.not = icmp eq i64 %indvars.iv.next304, 3 br i1 %exitcond306.not, label %.split.us, label %.preheader.split, !llvm.loop !33 -.split.us: ; preds = %144, %139 - %145 = load i64, ptr %8, align 8 - call void @avifRWStreamFinishBox(ptr noundef nonnull %15, i64 noundef %145) #13 - %146 = call fastcc i32 @avifItemPropertyDedupFinish(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %27, i32 noundef 0) - %.not214 = icmp eq i32 %146, 0 - br i1 %.not214, label %147, label %.loopexit +.split.us: ; preds = %142, %138 + %143 = load i64, ptr %8, align 8 + call void @avifRWStreamFinishBox(ptr noundef nonnull %15, i64 noundef %143) #13 + %144 = call fastcc i32 @avifItemPropertyDedupFinish(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %27, i32 noundef 0) + %.not214 = icmp eq i32 %144, 0 + br i1 %.not214, label %145, label %.loopexit -147: ; preds = %57, %115, %.split.us, %19 +145: ; preds = %57, %115, %.split.us, %19 %indvars.iv.next312 = add nuw nsw i64 %indvars.iv311, 1 - %148 = load ptr, ptr %10, align 8 - %149 = getelementptr inbounds nuw i8, ptr %148, i64 12 - %150 = load i32, ptr %149, align 4 - %151 = zext i32 %150 to i64 - %152 = icmp samesign ult i64 %indvars.iv.next312, %151 - br i1 %152, label %19, label %.loopexit, !llvm.loop !34 - -.loopexit: ; preds = %.critedge, %63, %65, %67, %78, %81, %88, %93, %99, %103, %105, %107, %110, %113, %118, %._crit_edge, %133, %.split.us, %147, %.preheader220, %.preheader.split, %.preheader.split.us, %4 - %.0 = phi i32 [ 0, %4 ], [ %138, %.preheader.split.us ], [ %143, %.preheader.split ], [ %87, %.preheader220 ], [ %62, %.critedge ], [ %64, %63 ], [ %66, %65 ], [ %69, %67 ], [ %80, %78 ], [ %82, %81 ], [ %90, %88 ], [ %98, %93 ], [ %100, %99 ], [ %104, %103 ], [ %106, %105 ], [ %109, %107 ], [ %111, %110 ], [ %114, %113 ], [ %119, %118 ], [ %132, %._crit_edge ], [ %135, %133 ], [ %146, %.split.us ], [ 0, %147 ] + %146 = load ptr, ptr %10, align 8 + %147 = getelementptr inbounds nuw i8, ptr %146, i64 12 + %148 = load i32, ptr %147, align 4 + %149 = zext i32 %148 to i64 + %150 = icmp samesign ult i64 %indvars.iv.next312, %149 + br i1 %150, label %19, label %.loopexit, !llvm.loop !34 + +.loopexit: ; preds = %.critedge, %63, %65, %67, %78, %81, %88, %93, %99, %103, %105, %107, %110, %113, %118, %._crit_edge, %132, %.split.us, %145, %.preheader220, %.preheader.split, %.preheader.split.us, %4 + %.0 = phi i32 [ 0, %4 ], [ %137, %.preheader.split.us ], [ %141, %.preheader.split ], [ %87, %.preheader220 ], [ %62, %.critedge ], [ %64, %63 ], [ %66, %65 ], [ %69, %67 ], [ %80, %78 ], [ %82, %81 ], [ %90, %88 ], [ %98, %93 ], [ %100, %99 ], [ %104, %103 ], [ %106, %105 ], [ %109, %107 ], [ %111, %110 ], [ %114, %113 ], [ %119, %118 ], [ %131, %._crit_edge ], [ %133, %132 ], [ %144, %.split.us ], [ 0, %145 ] ret i32 %.0 } 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/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/subselect.ll b/bench/postgres/optimized/subselect.ll index 8e385593422..1092eca0e9e 100644 --- a/bench/postgres/optimized/subselect.ll +++ b/bench/postgres/optimized/subselect.ll @@ -1692,7 +1692,7 @@ define dso_local void @SS_charge_for_initplans(ptr nocapture noundef readonly %0 11: ; preds = %11, %.lr.ph32.i %indvars.iv.i = phi i64 [ 0, %.lr.ph32.i ], [ %indvars.iv.next.i, %11 ] - %.0132030.i = phi i1 [ false, %.lr.ph32.i ], [ %spec.select.i, %11 ] + %.0132030.i = phi i8 [ 0, %.lr.ph32.i ], [ %spec.select.i, %11 ] %.02129.i = phi double [ 0.000000e+00, %.lr.ph32.i ], [ %19, %11 ] %12 = getelementptr %union.ListCell, ptr %10, i64 %indvars.iv.i %13 = load ptr, ptr %12, align 8 @@ -1706,133 +1706,131 @@ define dso_local void @SS_charge_for_initplans(ptr nocapture noundef readonly %0 %21 = load i8, ptr %20, align 2 %.fr58 = freeze i8 %21 %22 = trunc i8 %.fr58 to i1 - %not. = xor i1 %22, true - %spec.select.i = select i1 %not., i1 true, i1 %.0132030.i + %spec.select.i = select i1 %22, i8 %.0132030.i, i8 1 %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 %SS_compute_initplan_cost.exit, label %11 SS_compute_initplan_cost.exit: ; preds = %11 - %23 = getelementptr inbounds i8, ptr %1, i64 40 - %24 = load ptr, ptr %23, align 8 - %25 = getelementptr inbounds i8, ptr %24, i64 4 - %.not = icmp eq ptr %24, null + %23 = trunc nuw i8 %spec.select.i to i1 + %24 = getelementptr inbounds i8, ptr %1, i64 40 + %25 = load ptr, ptr %24, align 8 + %26 = getelementptr inbounds i8, ptr %25, i64 4 + %.not = icmp eq ptr %25, null br i1 %.not, label %._crit_edge, label %.lr.ph SS_compute_initplan_cost.exit.thread: ; preds = %.lr.ph.i - %26 = getelementptr inbounds i8, ptr %1, i64 40 - %27 = load ptr, ptr %26, align 8 - %.not61 = icmp eq ptr %27, null + %27 = getelementptr inbounds i8, ptr %1, i64 40 + %28 = load ptr, ptr %27, align 8 + %.not61 = icmp eq ptr %28, null br i1 %.not61, label %._crit_edge.thread, label %.lr.ph.thread .lr.ph.thread: ; preds = %SS_compute_initplan_cost.exit.thread - %28 = getelementptr inbounds i8, ptr %27, i64 4 - %29 = getelementptr inbounds i8, ptr %27, i64 16 + %29 = getelementptr inbounds i8, ptr %28, i64 4 + %30 = getelementptr inbounds i8, ptr %28, i64 16 br label %.lr.ph.split.split .lr.ph: ; preds = %SS_compute_initplan_cost.exit - %30 = getelementptr inbounds i8, ptr %24, i64 16 - br i1 %spec.select.i, label %.lr.ph.split.us.split, label %.lr.ph.split.split + %31 = getelementptr inbounds i8, ptr %25, i64 16 + br i1 %23, label %.lr.ph.split.us.split, label %.lr.ph.split.split .lr.ph.split.us.split: ; preds = %.lr.ph - %31 = load i32, ptr %25, align 4 - %32 = icmp sgt i32 %31, 0 - br i1 %32, label %.lr.ph43, label %._crit_edge.thread73 + %32 = load i32, ptr %26, align 4 + %33 = icmp sgt i32 %32, 0 + br i1 %33, label %.lr.ph43, label %._crit_edge.thread72 .lr.ph43: ; preds = %.lr.ph.split.us.split, %.lr.ph43 %indvars.iv52 = phi i64 [ %indvars.iv.next53, %.lr.ph43 ], [ 0, %.lr.ph.split.us.split ] - %33 = load ptr, ptr %30, align 8 - %34 = getelementptr %union.ListCell, ptr %33, i64 %indvars.iv52 - %35 = load ptr, ptr %34, align 8 - %36 = getelementptr inbounds i8, ptr %35, i64 48 - %37 = load double, ptr %36, align 8 - %38 = fadd double %19, %37 - store double %38, ptr %36, align 8 - %39 = getelementptr inbounds i8, ptr %35, i64 56 - %40 = load double, ptr %39, align 8 - %41 = fadd double %19, %40 - store double %41, ptr %39, align 8 - %42 = getelementptr inbounds i8, ptr %35, i64 33 - store i8 0, ptr %42, align 1 + %34 = load ptr, ptr %31, align 8 + %35 = getelementptr %union.ListCell, ptr %34, i64 %indvars.iv52 + %36 = load ptr, ptr %35, align 8 + %37 = getelementptr inbounds i8, ptr %36, i64 48 + %38 = load double, ptr %37, align 8 + %39 = fadd double %19, %38 + store double %39, ptr %37, align 8 + %40 = getelementptr inbounds i8, ptr %36, i64 56 + %41 = load double, ptr %40, align 8 + %42 = fadd double %19, %41 + store double %42, ptr %40, align 8 + %43 = getelementptr inbounds i8, ptr %36, i64 33 + store i8 0, ptr %43, align 1 %indvars.iv.next53 = add nuw nsw i64 %indvars.iv52, 1 - %43 = load i32, ptr %25, align 4 - %44 = sext i32 %43 to i64 - %45 = icmp slt i64 %indvars.iv.next53, %44 - br i1 %45, label %.lr.ph43, label %._crit_edge + %44 = load i32, ptr %26, align 4 + %45 = sext i32 %44 to i64 + %46 = icmp slt i64 %indvars.iv.next53, %45 + br i1 %46, label %.lr.ph43, label %._crit_edge.thread72 .lr.ph.split.split: ; preds = %.lr.ph, %.lr.ph.thread - %46 = phi ptr [ %29, %.lr.ph.thread ], [ %30, %.lr.ph ] - %.0.lcssa.i6468 = phi double [ 0.000000e+00, %.lr.ph.thread ], [ %19, %.lr.ph ] - %47 = phi ptr [ %28, %.lr.ph.thread ], [ %25, %.lr.ph ] - %48 = load i32, ptr %47, align 4 - %49 = icmp sgt i32 %48, 0 - br i1 %49, label %.lr.ph41, label %._crit_edge.thread + %47 = phi ptr [ %30, %.lr.ph.thread ], [ %31, %.lr.ph ] + %.0.lcssa.i6367 = phi double [ 0.000000e+00, %.lr.ph.thread ], [ %19, %.lr.ph ] + %48 = phi ptr [ %29, %.lr.ph.thread ], [ %26, %.lr.ph ] + %49 = load i32, ptr %48, align 4 + %50 = icmp sgt i32 %49, 0 + br i1 %50, label %.lr.ph41, label %._crit_edge.thread .lr.ph41: ; preds = %.lr.ph.split.split, %.lr.ph41 %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph41 ], [ 0, %.lr.ph.split.split ] - %50 = load ptr, ptr %46, align 8 - %51 = getelementptr %union.ListCell, ptr %50, i64 %indvars.iv - %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds i8, ptr %52, i64 48 - %54 = load double, ptr %53, align 8 - %55 = fadd double %.0.lcssa.i6468, %54 - store double %55, ptr %53, align 8 - %56 = getelementptr inbounds i8, ptr %52, i64 56 - %57 = load double, ptr %56, align 8 - %58 = fadd double %.0.lcssa.i6468, %57 - store double %58, ptr %56, align 8 + %51 = load ptr, ptr %47, align 8 + %52 = getelementptr %union.ListCell, ptr %51, i64 %indvars.iv + %53 = load ptr, ptr %52, align 8 + %54 = getelementptr inbounds i8, ptr %53, i64 48 + %55 = load double, ptr %54, align 8 + %56 = fadd double %.0.lcssa.i6367, %55 + store double %56, ptr %54, align 8 + %57 = getelementptr inbounds i8, ptr %53, i64 56 + %58 = load double, ptr %57, align 8 + %59 = fadd double %.0.lcssa.i6367, %58 + store double %59, ptr %57, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %59 = load i32, ptr %47, align 4 - %60 = sext i32 %59 to i64 - %61 = icmp slt i64 %indvars.iv.next, %60 - br i1 %61, label %.lr.ph41, label %._crit_edge - -._crit_edge: ; preds = %.lr.ph41, %.lr.ph43, %SS_compute_initplan_cost.exit - %.0.lcssa.i65 = phi double [ %19, %SS_compute_initplan_cost.exit ], [ %19, %.lr.ph43 ], [ %.0.lcssa.i6468, %.lr.ph41 ] - %.013.lcssa.i63 = phi i1 [ %spec.select.i, %SS_compute_initplan_cost.exit ], [ true, %.lr.ph43 ], [ false, %.lr.ph41 ] - br i1 %.013.lcssa.i63, label %._crit_edge.thread73, label %._crit_edge.thread - -._crit_edge.thread73: ; preds = %.lr.ph.split.us.split, %._crit_edge - %62 = getelementptr inbounds i8, ptr %1, i64 56 - store ptr null, ptr %62, align 8 - %63 = getelementptr inbounds i8, ptr %1, i64 26 - store i8 0, ptr %63, align 2 + %60 = load i32, ptr %48, align 4 + %61 = sext i32 %60 to i64 + %62 = icmp slt i64 %indvars.iv.next, %61 + br i1 %62, label %.lr.ph41, label %._crit_edge.thread + +._crit_edge: ; preds = %SS_compute_initplan_cost.exit + br i1 %23, label %._crit_edge.thread72, label %._crit_edge.thread + +._crit_edge.thread72: ; preds = %.lr.ph43, %.lr.ph.split.us.split, %._crit_edge + %63 = getelementptr inbounds i8, ptr %1, i64 56 + store ptr null, ptr %63, align 8 + %64 = getelementptr inbounds i8, ptr %1, i64 26 + store i8 0, ptr %64, align 2 br label %.thread34 -._crit_edge.thread: ; preds = %.lr.ph.split.split, %SS_compute_initplan_cost.exit.thread, %._crit_edge - %.0.lcssa.i6572 = phi double [ %.0.lcssa.i65, %._crit_edge ], [ %.0.lcssa.i6468, %.lr.ph.split.split ], [ 0.000000e+00, %SS_compute_initplan_cost.exit.thread ] - %64 = getelementptr inbounds i8, ptr %1, i64 56 - %65 = load ptr, ptr %64, align 8 - %66 = getelementptr inbounds i8, ptr %65, i64 4 - %.not27 = icmp eq ptr %65, null +._crit_edge.thread: ; preds = %.lr.ph41, %SS_compute_initplan_cost.exit.thread, %.lr.ph.split.split, %._crit_edge + %.0.lcssa.i6470 = phi double [ %19, %._crit_edge ], [ 0.000000e+00, %SS_compute_initplan_cost.exit.thread ], [ %.0.lcssa.i6367, %.lr.ph.split.split ], [ %.0.lcssa.i6367, %.lr.ph41 ] + %65 = getelementptr inbounds i8, ptr %1, i64 56 + %66 = load ptr, ptr %65, align 8 + %67 = getelementptr inbounds i8, ptr %66, i64 4 + %.not27 = icmp eq ptr %66, null br i1 %.not27, label %.thread34, label %.lr.ph46 .lr.ph46: ; preds = %._crit_edge.thread - %67 = getelementptr inbounds i8, ptr %65, i64 16 - %68 = load i32, ptr %66, align 4 - %69 = icmp sgt i32 %68, 0 - br i1 %69, label %.lr.ph49, label %.thread34 + %68 = getelementptr inbounds i8, ptr %66, i64 16 + %69 = load i32, ptr %67, align 4 + %70 = icmp sgt i32 %69, 0 + br i1 %70, label %.lr.ph49, label %.thread34 .lr.ph49: ; preds = %.lr.ph46, %.lr.ph49 %indvars.iv55 = phi i64 [ %indvars.iv.next56, %.lr.ph49 ], [ 0, %.lr.ph46 ] - %70 = load ptr, ptr %67, align 8 - %71 = getelementptr %union.ListCell, ptr %70, i64 %indvars.iv55 - %72 = load ptr, ptr %71, align 8 - %73 = getelementptr inbounds i8, ptr %72, i64 48 - %74 = load double, ptr %73, align 8 - %75 = fadd double %.0.lcssa.i6572, %74 - store double %75, ptr %73, align 8 - %76 = getelementptr inbounds i8, ptr %72, i64 56 - %77 = load double, ptr %76, align 8 - %78 = fadd double %.0.lcssa.i6572, %77 - store double %78, ptr %76, align 8 + %71 = load ptr, ptr %68, align 8 + %72 = getelementptr %union.ListCell, ptr %71, i64 %indvars.iv55 + %73 = load ptr, ptr %72, align 8 + %74 = getelementptr inbounds i8, ptr %73, i64 48 + %75 = load double, ptr %74, align 8 + %76 = fadd double %.0.lcssa.i6470, %75 + store double %76, ptr %74, align 8 + %77 = getelementptr inbounds i8, ptr %73, i64 56 + %78 = load double, ptr %77, align 8 + %79 = fadd double %.0.lcssa.i6470, %78 + store double %79, ptr %77, align 8 %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 - %79 = load i32, ptr %66, align 4 - %80 = sext i32 %79 to i64 - %81 = icmp slt i64 %indvars.iv.next56, %80 - br i1 %81, label %.lr.ph49, label %.thread34 + %80 = load i32, ptr %67, align 4 + %81 = sext i32 %80 to i64 + %82 = icmp slt i64 %indvars.iv.next56, %81 + br i1 %82, label %.lr.ph49, label %.thread34 -.thread34: ; preds = %.lr.ph49, %._crit_edge.thread, %.lr.ph46, %2, %._crit_edge.thread73 +.thread34: ; preds = %.lr.ph49, %._crit_edge.thread, %.lr.ph46, %2, %._crit_edge.thread72 ret void } @@ -1871,15 +1869,11 @@ define dso_local void @SS_compute_initplan_cost(ptr noundef readonly %0, ptr noc %spec.select = select i1 %20, i8 %.0132030, i8 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.loopexit, label %9 - -._crit_edge.loopexit: ; preds = %9 - %21 = and i8 %spec.select, 1 - br label %._crit_edge + br i1 %exitcond.not, label %._crit_edge, label %9 -._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph, %3 - %.013.lcssa = phi i8 [ 0, %3 ], [ 0, %.lr.ph ], [ %21, %._crit_edge.loopexit ] - %.0.lcssa = phi double [ 0.000000e+00, %3 ], [ 0.000000e+00, %.lr.ph ], [ %17, %._crit_edge.loopexit ] +._crit_edge: ; preds = %9, %.lr.ph, %3 + %.013.lcssa = phi i8 [ 0, %3 ], [ 0, %.lr.ph ], [ %spec.select, %9 ] + %.0.lcssa = phi double [ 0.000000e+00, %3 ], [ 0.000000e+00, %.lr.ph ], [ %17, %9 ] store double %.0.lcssa, ptr %1, align 8 store i8 %.013.lcssa, ptr %2, align 1 ret void diff --git a/bench/postgres/optimized/walsummarizer.ll b/bench/postgres/optimized/walsummarizer.ll index f69bd149e6f..c6cdfa0f424 100644 --- a/bench/postgres/optimized/walsummarizer.ll +++ b/bench/postgres/optimized/walsummarizer.ll @@ -676,7 +676,7 @@ define dso_local i64 @GetOldestUnsummarizedLSN(ptr noundef writeonly %0, ptr nou %6 = alloca i32, align 4 %7 = load i8, ptr @summarize_wal, align 1 %8 = trunc i8 %7 to i1 - br i1 %8, label %.preheader, label %107 + br i1 %8, label %.preheader, label %106 .preheader: ; preds = %3 %not. = xor i1 %2, true @@ -726,7 +726,7 @@ define dso_local i64 @GetOldestUnsummarizedLSN(ptr noundef writeonly %0, ptr nou %31 = load ptr, ptr @MainLWLockArray, align 8 %32 = getelementptr i8, ptr %31, i64 6272 tail call void @LWLockRelease(ptr noundef %32) #11 - br label %107 + br label %106 .lr.ph: ; preds = %.preheader br i1 %2, label %.critedge, label %33 @@ -853,50 +853,46 @@ list_length.exit: ; preds = %GetLatestLSN.exit, %spec.select58 = call i64 @llvm.umax.i64(i64 %91, i64 %.16983) %indvars.iv.next92 = add nuw nsw i64 %indvars.iv91, 1 %exitcond.not = icmp eq i64 %indvars.iv.next92, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge73.loopexit, label %87 - -._crit_edge73.loopexit: ; preds = %87 - %93 = and i8 %spec.select, 1 - br label %._crit_edge73 - -._crit_edge73: ; preds = %._crit_edge73.loopexit, %.lr.ph72, %77 - %.043.lcssa = phi i8 [ 0, %77 ], [ 0, %.lr.ph72 ], [ %93, %._crit_edge73.loopexit ] - %.1.lcssa = phi i64 [ %80, %77 ], [ %80, %.lr.ph72 ], [ %spec.select58, %._crit_edge73.loopexit ] - %94 = load ptr, ptr @WalSummarizerCtl, align 8 - store i8 1, ptr %94, align 8 - %95 = getelementptr inbounds i8, ptr %94, i64 8 - store i64 %.1.lcssa, ptr %95, align 8 - %96 = getelementptr inbounds i8, ptr %94, i64 4 - store i32 %71, ptr %96, align 4 - %97 = getelementptr inbounds i8, ptr %94, i64 16 - store i8 %.043.lcssa, ptr %97, align 8 - %98 = getelementptr inbounds i8, ptr %94, i64 24 - store i64 %.1.lcssa, ptr %98, align 8 + br i1 %exitcond.not, label %._crit_edge73, label %87 + +._crit_edge73: ; preds = %87, %.lr.ph72, %77 + %.043.lcssa = phi i8 [ 0, %77 ], [ 0, %.lr.ph72 ], [ %spec.select, %87 ] + %.1.lcssa = phi i64 [ %80, %77 ], [ %80, %.lr.ph72 ], [ %spec.select58, %87 ] + %93 = load ptr, ptr @WalSummarizerCtl, align 8 + store i8 1, ptr %93, align 8 + %94 = getelementptr inbounds i8, ptr %93, i64 8 + store i64 %.1.lcssa, ptr %94, align 8 + %95 = getelementptr inbounds i8, ptr %93, i64 4 + store i32 %71, ptr %95, align 4 + %96 = getelementptr inbounds i8, ptr %93, i64 16 + store i8 %.043.lcssa, ptr %96, align 8 + %97 = getelementptr inbounds i8, ptr %93, i64 24 + store i64 %.1.lcssa, ptr %97, align 8 %.not54 = icmp eq ptr %0, null - br i1 %.not54, label %100, label %99 + br i1 %.not54, label %99, label %98 -99: ; preds = %._crit_edge73 +98: ; preds = %._crit_edge73 store i32 %71, ptr %0, align 4 - br label %100 + br label %99 -100: ; preds = %99, %._crit_edge73 +99: ; preds = %98, %._crit_edge73 %.not55 = icmp eq ptr %1, null - br i1 %.not55, label %104, label %101 - -101: ; preds = %100 - %102 = load i8, ptr %97, align 8 - %103 = and i8 %102, 1 - store i8 %103, ptr %1, align 1 - br label %104 - -104: ; preds = %101, %100 - %105 = load ptr, ptr @MainLWLockArray, align 8 - %106 = getelementptr i8, ptr %105, i64 6272 - call void @LWLockRelease(ptr noundef %106) #11 - br label %107 - -107: ; preds = %3, %104, %30 - %.0 = phi i64 [ %17, %30 ], [ %.1.lcssa, %104 ], [ 0, %3 ] + br i1 %.not55, label %103, label %100 + +100: ; preds = %99 + %101 = load i8, ptr %96, align 8 + %102 = and i8 %101, 1 + store i8 %102, ptr %1, align 1 + br label %103 + +103: ; preds = %100, %99 + %104 = load ptr, ptr @MainLWLockArray, align 8 + %105 = getelementptr i8, ptr %104, i64 6272 + call void @LWLockRelease(ptr noundef %105) #11 + br label %106 + +106: ; preds = %3, %103, %30 + %.0 = phi i64 [ %17, %30 ], [ %.1.lcssa, %103 ], [ 0, %3 ] ret i64 %.0 } diff --git a/bench/qemu/optimized/hw_net_tulip.c.ll b/bench/qemu/optimized/hw_net_tulip.c.ll index c8bb55d12b7..af019946364 100644 --- a/bench/qemu/optimized/hw_net_tulip.c.ll +++ b/bench/qemu/optimized/hw_net_tulip.c.ll @@ -2013,17 +2013,13 @@ if.end: ; preds = %lor.lhs.false3 for.body.i: ; preds = %for.body.i, %if.end %indvars.iv.i = phi i64 [ 0, %if.end ], [ %indvars.iv.next.i, %for.body.i ] - %ret.014.i = phi i8 [ 0, %if.end ], [ %spec.select.i, %for.body.i ] %arrayidx.i = getelementptr [16 x [6 x i8]], ptr %filter.i, i64 0, i64 %indvars.iv.i %bcmp12.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(6) %arrayidx.i, ptr noundef nonnull readonly dereferenceable(6) %buf, i64 6) %tobool3.not.i = icmp eq i32 %bcmp12.i, 0 - %spec.select.i = select i1 %tobool3.not.i, i8 1, i8 %ret.014.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %cmp.i38 = icmp samesign ult i64 %indvars.iv.i, 15 - %10 = and i8 %spec.select.i, 1 - %cmp1.i = icmp eq i8 %10, 0 - %11 = select i1 %cmp.i38, i1 %cmp1.i, i1 false - br i1 %11, label %for.body.i, label %for.end.i, !llvm.loop !14 + %cmp.i38 = icmp samesign ugt i64 %indvars.iv.i, 14 + %.not.i = select i1 %cmp.i38, i1 true, i1 %tobool3.not.i + br i1 %.not.i, label %for.end.i, label %for.body.i, !llvm.loop !14 for.end.i: ; preds = %for.body.i %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(6) %buf, ptr noundef nonnull dereferenceable(6) @tulip_filter_address.broadcast, i64 6) @@ -2032,8 +2028,8 @@ for.end.i: ; preds = %for.body.i if.end7.i: ; preds = %for.end.i %arrayidx8.i = getelementptr i8, ptr %s, i64 11416 - %12 = load i32, ptr %arrayidx8.i, align 8 - %conv9.i = zext i32 %12 to i64 + %10 = load i32, ptr %arrayidx8.i, align 8 + %conv9.i = zext i32 %10 to i64 %and.i = and i64 %conv9.i, 1073741888 %tobool10.not.i = icmp eq i64 %and.i, 0 br i1 %tobool10.not.i, label %if.end14.i, label %do.body.preheader.sink.split @@ -2044,30 +2040,29 @@ if.end14.i: ; preds = %if.end7.i br i1 %tobool19.not.i, label %if.end29.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %if.end14.i - %13 = load i8, ptr %buf, align 1 - %14 = and i8 %13, 1 - %tobool23.not.i = icmp eq i8 %14, 0 + %11 = load i8, ptr %buf, align 1 + %12 = and i8 %11, 1 + %tobool23.not.i = icmp eq i8 %12, 0 br i1 %tobool23.not.i, label %if.end29.i, label %do.body.preheader.sink.split if.end29.i: ; preds = %land.lhs.true.i, %if.end14.i - %15 = trunc i32 %12 to i8 - %16 = lshr i8 %15, 4 - %spec.select13.i = xor i8 %16, %spec.select.i - %tobool40.i = trunc i8 %spec.select13.i to i1 + %13 = and i32 %10, 16 + %14 = icmp ne i32 %13, 0 + %tobool40.i = xor i1 %tobool3.not.i, %14 br i1 %tobool40.i, label %do.body.preheader, label %return do.body.preheader.sink.split: ; preds = %land.lhs.true.i, %if.end7.i %.sink47 = phi i32 [ 1073741824, %if.end7.i ], [ 1024, %land.lhs.true.i ] %rx_status.i = getelementptr inbounds i8, ptr %s, i64 15592 - %17 = load i32, ptr %rx_status.i, align 8 - %18 = or i32 %17, %.sink47 - store i32 %18, ptr %rx_status.i, align 8 + %15 = load i32, ptr %rx_status.i, align 8 + %16 = or i32 %15, %.sink47 + store i32 %16, ptr %rx_status.i, align 8 br label %do.body.preheader do.body.preheader: ; preds = %do.body.preheader.sink.split, %if.end29.i, %for.end.i %current_rx_desc = getelementptr inbounds i8, ptr %s, i64 11472 - %19 = trunc nuw i64 %size to i16 - %conv22 = add nuw nsw i16 %19, 4 + %17 = trunc nuw i64 %size to i16 + %conv22 = add nuw nsw i16 %17, 4 %rx_frame_size23 = getelementptr inbounds i8, ptr %s, i64 15588 %conv25 = zext nneg i16 %conv22 to i32 %shl = shl nuw nsw i32 %conv25, 16 @@ -2084,30 +2079,30 @@ do.body.preheader: ; preds = %do.body.preheader.s br label %do.body do.body: ; preds = %do.body.preheader, %tulip_next_rx_descriptor.exit - %20 = phi i64 [ %.pre, %do.body.preheader ], [ %and18.i44, %tulip_next_rx_descriptor.exit ] - call fastcc void @tulip_desc_read(ptr noundef nonnull %s, i64 noundef %20, ptr noundef %desc) + %18 = phi i64 [ %.pre, %do.body.preheader ], [ %and18.i44, %tulip_next_rx_descriptor.exit ] + call fastcc void @tulip_desc_read(ptr noundef nonnull %s, i64 noundef %18, ptr noundef %desc) %s.val35 = load i64, ptr %current_rx_desc, align 16 call fastcc void @tulip_dump_rx_descriptor(i64 %s.val35, ptr noundef %desc) - %21 = load i32, ptr %desc, align 4 - %tobool9.not = icmp sgt i32 %21, -1 + %19 = load i32, ptr %desc, align 4 + %tobool9.not = icmp sgt i32 %19, -1 br i1 %tobool9.not, label %if.then10, label %if.end17 if.then10: ; preds = %do.body - %22 = load i32, ptr %8, align 4 - %23 = or i32 %22, 128 - store i32 %23, ptr %8, align 4 + %20 = load i32, ptr %8, align 4 + %21 = or i32 %20, 128 + store i32 %21, ptr %8, align 4 call fastcc void @tulip_update_int(ptr noundef nonnull %s) - %24 = load i16, ptr %rx_frame_size23, align 4 - %conv13 = zext i16 %24 to i64 - %25 = load i16, ptr %rx_frame_len, align 2 - %conv15 = zext i16 %25 to i64 + %22 = load i16, ptr %rx_frame_size23, align 4 + %conv13 = zext i16 %22 to i64 + %23 = load i16, ptr %rx_frame_len, align 2 + %conv15 = zext i16 %23 to i64 %sub = sub nsw i64 %conv13, %conv15 br label %return if.end17: ; preds = %do.body store i32 0, ptr %desc, align 4 - %26 = load i16, ptr %rx_frame_len, align 2 - %tobool20.not = icmp eq i16 %26, 0 + %24 = load i16, ptr %rx_frame_len, align 2 + %tobool20.not = icmp eq i16 %24, 0 br i1 %tobool20.not, label %if.then21, label %if.end36 if.then21: ; preds = %if.end17 @@ -2115,43 +2110,43 @@ if.then21: ; preds = %if.end17 store i32 %or28, ptr %rx_status, align 8 store i32 512, ptr %desc, align 4 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %rx_frame, ptr align 1 %buf, i64 %size, i1 false) - %27 = load i16, ptr %rx_frame_size23, align 4 - store i16 %27, ptr %rx_frame_len, align 2 + %25 = load i16, ptr %rx_frame_size23, align 4 + store i16 %25, ptr %rx_frame_len, align 2 br label %if.end36 if.end36: ; preds = %if.then21, %if.end17 - %28 = phi i16 [ %27, %if.then21 ], [ %26, %if.end17 ] - %29 = load i32, ptr %control.i, align 4 - %and.i39 = and i32 %29, 2047 - %shr2.i = lshr i32 %29, 11 + %26 = phi i16 [ %25, %if.then21 ], [ %24, %if.end17 ] + %27 = load i32, ptr %control.i, align 4 + %and.i39 = and i32 %27, 2047 + %shr2.i = lshr i32 %27, 11 %and3.i = and i32 %shr2.i, 2047 - %tobool.i = icmp ne i16 %28, 0 + %tobool.i = icmp ne i16 %26, 0 %tobool4.i = icmp ne i32 %and.i39, 0 %or.cond.i = select i1 %tobool.i, i1 %tobool4.i, i1 false br i1 %or.cond.i, label %if.then.i, label %if.end20.i if.then.i: ; preds = %if.end36 - %conv.i = zext i16 %28 to i32 + %conv.i = zext i16 %26 to i32 %and.conv.i = call i32 @llvm.umin.i32(i32 %and.i39, i32 %conv.i) - %30 = load i32, ptr %buf_addr1.i, align 4 - %conv11.i = zext i32 %30 to i64 - %31 = load i16, ptr %rx_frame_size23, align 4 - %conv12.i = zext i16 %31 to i64 - %conv14.i = zext i16 %28 to i64 + %28 = load i32, ptr %buf_addr1.i, align 4 + %conv11.i = zext i32 %28 to i64 + %29 = load i16, ptr %rx_frame_size23, align 4 + %conv12.i = zext i16 %29 to i64 + %conv14.i = zext i16 %26 to i64 %sub.i = sub nsw i64 %conv12.i, %conv14.i %add.ptr.i = getelementptr i8, ptr %rx_frame, i64 %sub.i %conv15.i = zext nneg i32 %and.conv.i to i64 call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !11 fence seq_cst %call.i.i.i.i.i = call i32 @address_space_rw(ptr noundef nonnull %bus_master_as.i.i.i.i, i64 noundef range(i64 0, 4294967296) %conv11.i, i32 range(i32 1, 33) 1, ptr noundef %add.ptr.i, i64 noundef range(i64 1, 2048) %conv15.i, i1 noundef zeroext true) #8 - %32 = load i16, ptr %rx_frame_len, align 2 - %33 = trunc nuw nsw i32 %and.conv.i to i16 - %conv19.i = sub i16 %32, %33 + %30 = load i16, ptr %rx_frame_len, align 2 + %31 = trunc nuw nsw i32 %and.conv.i to i16 + %conv19.i = sub i16 %30, %31 store i16 %conv19.i, ptr %rx_frame_len, align 2 br label %if.end20.i if.end20.i: ; preds = %if.then.i, %if.end36 - %.pr = phi i16 [ %conv19.i, %if.then.i ], [ %28, %if.end36 ] + %.pr = phi i16 [ %conv19.i, %if.then.i ], [ %26, %if.end36 ] %tobool23.i = icmp ne i16 %.pr, 0 %tobool25.i = icmp ne i32 %and3.i, 0 %or.cond1.i = select i1 %tobool23.i, i1 %tobool25.i, i1 false @@ -2160,10 +2155,10 @@ if.end20.i: ; preds = %if.then.i, %if.end3 if.then26.i: ; preds = %if.end20.i %conv22.i = zext i16 %.pr to i32 %and3.conv22.i = call i32 @llvm.umin.i32(i32 %and3.i, i32 %conv22.i) - %34 = load i32, ptr %buf_addr2.i, align 4 - %conv37.i = zext i32 %34 to i64 - %35 = load i16, ptr %rx_frame_size23, align 4 - %conv41.i = zext i16 %35 to i64 + %32 = load i32, ptr %buf_addr2.i, align 4 + %conv37.i = zext i32 %32 to i64 + %33 = load i16, ptr %rx_frame_size23, align 4 + %conv41.i = zext i16 %33 to i64 %conv43.i = zext i16 %.pr to i64 %sub44.i = sub nsw i64 %conv41.i, %conv43.i %add.ptr46.i = getelementptr i8, ptr %rx_frame, i64 %sub44.i @@ -2171,33 +2166,33 @@ if.then26.i: ; preds = %if.end20.i call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !11 fence seq_cst %call.i.i.i.i28.i = call i32 @address_space_rw(ptr noundef nonnull %bus_master_as.i.i.i.i, i64 noundef range(i64 0, 4294967296) %conv37.i, i32 range(i32 1, 33) 1, ptr noundef %add.ptr46.i, i64 noundef range(i64 1, 2048) %conv47.i, i1 noundef zeroext true) #8 - %36 = load i16, ptr %rx_frame_len, align 2 - %37 = trunc nuw nsw i32 %and3.conv22.i to i16 - %conv52.i = sub i16 %36, %37 + %34 = load i16, ptr %rx_frame_len, align 2 + %35 = trunc nuw nsw i32 %and3.conv22.i to i16 + %conv52.i = sub i16 %34, %35 store i16 %conv52.i, ptr %rx_frame_len, align 2 br label %tulip_copy_rx_bytes.exit tulip_copy_rx_bytes.exit: ; preds = %if.end20.i, %if.then26.i - %38 = phi i16 [ %conv52.i, %if.then26.i ], [ %.pr, %if.end20.i ] - %tobool38.not = icmp eq i16 %38, 0 + %36 = phi i16 [ %conv52.i, %if.then26.i ], [ %.pr, %if.end20.i ] + %tobool38.not = icmp eq i16 %36, 0 br i1 %tobool38.not, label %if.then39, label %if.end48 if.then39: ; preds = %tulip_copy_rx_bytes.exit - %39 = load i32, ptr %rx_status, align 8 - %40 = load i32, ptr %desc, align 4 - %or42 = or i32 %40, %39 + %37 = load i32, ptr %rx_status, align 8 + %38 = load i32, ptr %desc, align 4 + %or42 = or i32 %38, %37 store i32 %or42, ptr %desc, align 4 - %41 = load i32, ptr %8, align 4 - %42 = or i32 %41, 64 - store i32 %42, ptr %8, align 4 + %39 = load i32, ptr %8, align 4 + %40 = or i32 %39, 64 + store i32 %40, ptr %8, align 4 call fastcc void @tulip_update_int(ptr noundef nonnull %s) br label %if.end48 if.end48: ; preds = %if.then39, %tulip_copy_rx_bytes.exit %s.val36 = load i64, ptr %current_rx_desc, align 16 call fastcc void @tulip_dump_rx_descriptor(i64 %s.val36, ptr noundef %desc) - %43 = load i64, ptr %current_rx_desc, align 16 - call fastcc void @tulip_desc_write(ptr noundef nonnull %s, i64 noundef %43, ptr noundef %desc) + %41 = load i64, ptr %current_rx_desc, align 16 + call fastcc void @tulip_desc_write(ptr noundef nonnull %s, i64 noundef %41, ptr noundef %desc) %desc.val = load i32, ptr %control.i, align 4 %desc.val37 = load i32, ptr %buf_addr2.i, align 4 %conv.i40 = zext i32 %desc.val to i64 @@ -2206,8 +2201,8 @@ if.end48: ; preds = %if.then39, %tulip_c br i1 %tobool.not.i, label %if.else.i, label %if.then.i42 if.then.i42: ; preds = %if.end48 - %44 = load i32, ptr %arrayidx.i43, align 4 - %conv1.i = zext i32 %44 to i64 + %42 = load i32, ptr %arrayidx.i43, align 4 + %conv1.i = zext i32 %42 to i64 br label %tulip_next_rx_descriptor.exit if.else.i: ; preds = %if.end48 @@ -2220,20 +2215,20 @@ if.then6.i: ; preds = %if.else.i br label %tulip_next_rx_descriptor.exit if.else9.i: ; preds = %if.else.i - %45 = load i32, ptr %csr10.i, align 16 - %and12.i = and i32 %45, 124 + %43 = load i32, ptr %csr10.i, align 16 + %and12.i = and i32 %43, 124 %narrow.i = add nuw nsw i32 %and12.i, 16 %add.i = zext nneg i32 %narrow.i to i64 - %46 = load i64, ptr %current_rx_desc, align 16 - %add15.i = add i64 %46, %add.i + %44 = load i64, ptr %current_rx_desc, align 16 + %add15.i = add i64 %44, %add.i br label %tulip_next_rx_descriptor.exit tulip_next_rx_descriptor.exit: ; preds = %if.then.i42, %if.then6.i, %if.else9.i - %47 = phi i64 [ %conv7.i, %if.then6.i ], [ %add15.i, %if.else9.i ], [ %conv1.i, %if.then.i42 ] - %and18.i44 = and i64 %47, -4 + %45 = phi i64 [ %conv7.i, %if.then6.i ], [ %add15.i, %if.else9.i ], [ %conv1.i, %if.then.i42 ] + %and18.i44 = and i64 %45, -4 store i64 %and18.i44, ptr %current_rx_desc, align 16 - %48 = load i16, ptr %rx_frame_len, align 2 - %tobool51.not = icmp eq i16 %48, 0 + %46 = load i16, ptr %rx_frame_len, align 2 + %tobool51.not = icmp eq i16 %46, 0 br i1 %tobool51.not, label %return, label %do.body, !llvm.loop !15 return: ; preds = %tulip_next_rx_descriptor.exit, %if.end29.i, %trace_tulip_receive.exit, %lor.lhs.false2, %lor.lhs.false3, %if.then10 diff --git a/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll b/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll index 3e33dcdcab5..c58983e2798 100644 --- a/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll +++ b/bench/qemu/optimized/hw_usb_hcd-ehci.c.ll @@ -6243,8 +6243,8 @@ if.then29: ; preds = %ehci_get_pid.exit %as.i = getelementptr inbounds i8, ptr %32, i64 480 %34 = load ptr, ptr %as.i, align 16 tail call void @qemu_sglist_init(ptr noundef nonnull %sgl.i, ptr noundef %33, i32 noundef 5, ptr noundef %34) #17 - %cmp.not20.i = icmp eq i32 %shr4.i, 0 - br i1 %cmp.not20.i, label %if.end33, label %while.body.preheader.i + %cmp.not21.i = icmp eq i32 %shr4.i, 0 + br i1 %cmp.not21.i, label %if.end33, label %while.body.preheader.i while.body.preheader.i: ; preds = %if.then29 %and6.i = and i32 %30, 4095 @@ -6253,35 +6253,34 @@ while.body.preheader.i: ; preds = %if.then29 br label %while.body.i while.body.i: ; preds = %if.end.i39, %while.body.preheader.i - %bytes.023.i = phi i32 [ %sub23.i, %if.end.i39 ], [ %shr4.i, %while.body.preheader.i ] - %offset.022.i = phi i32 [ %offset.1.i, %if.end.i39 ], [ %and6.i, %while.body.preheader.i ] - %cpage.021.i = phi i32 [ %cpage.1.i, %if.end.i39 ], [ %shr.i38, %while.body.preheader.i ] - %cmp9.i = icmp samesign ugt i32 %cpage.021.i, 4 + %bytes.024.i = phi i32 [ %sub23.i, %if.end.i39 ], [ %shr4.i, %while.body.preheader.i ] + %offset.023.i = phi i32 [ %offset.1.i, %if.end.i39 ], [ %and6.i, %while.body.preheader.i ] + %cpage.022.i = phi i32 [ %cpage.1.i, %if.end.i39 ], [ %shr.i38, %while.body.preheader.i ] + %cmp9.i = icmp samesign ugt i32 %cpage.022.i, 4 br i1 %cmp9.i, label %ehci_init_transfer.exit, label %if.end.i39 if.end.i39: ; preds = %while.body.i - %idxprom.i = zext nneg i32 %cpage.021.i to i64 + %idxprom.i = zext nneg i32 %cpage.022.i to i64 %arrayidx13.i = getelementptr [5 x i32], ptr %bufptr.i, i64 0, i64 %idxprom.i %35 = load i32, ptr %arrayidx13.i, align 4 %and14.i = and i32 %35, -4096 - %conv.i = zext i32 %and14.i to i64 - %conv15.i = zext nneg i32 %offset.022.i to i64 - %add.i = add nuw nsw i64 %conv.i, %conv15.i - %sub.i = sub nuw nsw i32 4096, %offset.022.i - %cmp16.i = icmp ugt i32 %bytes.023.i, %sub.i + %add19.i = or disjoint i32 %and14.i, %offset.023.i + %add.i = zext i32 %add19.i to i64 + %sub.i = sub nuw nsw i32 4096, %offset.023.i + %cmp16.i = icmp ugt i32 %bytes.024.i, %sub.i %inc.i = zext i1 %cmp16.i to i32 - %cpage.1.i = add nuw nsw i32 %cpage.021.i, %inc.i - %offset.1.i = select i1 %cmp16.i, i32 0, i32 %offset.022.i - %plen.0.i = tail call i32 @llvm.umin.i32(i32 %bytes.023.i, i32 %sub.i) + %cpage.1.i = add nuw nsw i32 %cpage.022.i, %inc.i + %offset.1.i = select i1 %cmp16.i, i32 0, i32 %offset.023.i + %plen.0.i = tail call i32 @llvm.umin.i32(i32 %bytes.024.i, i32 %sub.i) %conv22.i = zext nneg i32 %plen.0.i to i64 tail call void @qemu_sglist_add(ptr noundef nonnull %sgl.i, i64 noundef %add.i, i64 noundef %conv22.i) #17 - %sub23.i = sub i32 %bytes.023.i, %plen.0.i + %sub23.i = sub i32 %bytes.024.i, %plen.0.i %cmp.not.i = icmp eq i32 %sub23.i, 0 br i1 %cmp.not.i, label %if.end33, label %while.body.i, !llvm.loop !29 ehci_init_transfer.exit: ; preds = %while.body.i %36 = load ptr, ptr @stderr, align 8 - %call.i41 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str.136, i32 noundef %cpage.021.i) #19 + %call.i41 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str.136, i32 noundef %cpage.022.i) #19 tail call void @qemu_sglist_destroy(ptr noundef nonnull %sgl.i) #17 br label %return 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/regex-rs/optimized/1pxsmct4oxs5dlep.ll b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll index f5d2260f6c7..8c8a89e232b 100644 --- a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll +++ b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll @@ -5643,7 +5643,7 @@ _ZN12regex_syntax7unicode14canonical_prop17hfd1549437477a757E.exit.thread: ; pre %.0201.i.i.i.i = phi i64 [ %.021.i.i.i.i, %23 ], [ 254, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17h5b15d29981e3414dE.exit81.thread.preheader" ] %13 = lshr i64 %.03.i.i.i.i, 1 %14 = add nuw nsw i64 %13, %.0192.i.i.i.i - %15 = icmp ult i64 %14, 254 + %15 = icmp samesign ult i64 %14, 254 tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.3345, i64 %14 %.val23.i.i.i.i = load ptr, ptr %16, align 8, !noalias !93, !nonnull !5, !align !102, !noundef !5 @@ -5664,8 +5664,8 @@ _ZN12regex_syntax7unicode14canonical_prop17hfd1549437477a757E.exit.thread: ; pre %25 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i, 0 %26 = add nuw nsw i64 %14, 1 %.022.i.i.i.i = select i1 %25, i64 %26, i64 %.0192.i.i.i.i - %27 = sub i64 %.021.i.i.i.i, %.022.i.i.i.i - %28 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %27 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i + %28 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %28, label %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17h5b15d29981e3414dE.exit81.thread", label %_ZN12regex_syntax7unicode14canonical_prop17hfd1549437477a757E.exit.thread 29: ; preds = %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17h5b15d29981e3414dE.exit81.thread" @@ -6027,7 +6027,7 @@ common.resume: ; preds = %446, %398, %355, %9 %.0201.i.i.i.i.i = phi i64 [ 254, %109 ], [ %.021.i.i.i.i.i, %125 ] %115 = lshr i64 %.03.i.i.i.i.i, 1 %116 = add nuw nsw i64 %115, %.0192.i.i.i.i.i - %117 = icmp ult i64 %116, 254 + %117 = icmp samesign ult i64 %116, 254 tail call void @llvm.assume(i1 %117) %118 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.3345, i64 %116 %.val23.i.i.i.i.i = load ptr, ptr %118, align 8, !noalias !155, !nonnull !5, !align !102, !noundef !5 @@ -6048,8 +6048,8 @@ common.resume: ; preds = %446, %398, %355, %9 %127 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i.i, 0 %128 = add nuw nsw i64 %116, 1 %.022.i.i.i.i.i = select i1 %127, i64 %128, i64 %.0192.i.i.i.i.i - %129 = sub i64 %.021.i.i.i.i.i, %.022.i.i.i.i.i - %130 = icmp ult i64 %.022.i.i.i.i.i, %.021.i.i.i.i.i + %129 = sub nsw i64 %.021.i.i.i.i.i, %.022.i.i.i.i.i + %130 = icmp samesign ult i64 %.022.i.i.i.i.i, %.021.i.i.i.i.i br i1 %130, label %114, label %.loopexit 131: ; preds = %161, %139 @@ -6096,7 +6096,7 @@ common.resume: ; preds = %446, %398, %355, %9 %.0202.i.i.i.i.i = phi i64 [ %.021.i.i.i.i100.i, %155 ], [ 7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit95.thread.i.preheader" ] %145 = lshr i64 %.04.i.i.i.i.i, 1 %146 = add nuw nsw i64 %145, %.0193.i.i.i.i.i - %147 = icmp ult i64 %146, 7 + %147 = icmp samesign ult i64 %146, 7 tail call void @llvm.assume(i1 %147) %148 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %146 %.val23.i.i.i.i96.i = load ptr, ptr %148, align 8, !noalias !181, !nonnull !5, !align !102, !noundef !5 @@ -6118,7 +6118,7 @@ common.resume: ; preds = %446, %398, %355, %9 %158 = add nuw nsw i64 %146, 1 %.022.i.i.i.i101.i = select i1 %157, i64 %158, i64 %.0193.i.i.i.i.i %159 = sub nsw i64 %.021.i.i.i.i100.i, %.022.i.i.i.i101.i - %160 = icmp ult i64 %.022.i.i.i.i101.i, %.021.i.i.i.i100.i + %160 = icmp samesign ult i64 %.022.i.i.i.i101.i, %.021.i.i.i.i100.i br i1 %160, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit95.thread.i", label %192 161: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit95.i" @@ -6408,7 +6408,7 @@ default.unreachable: ; preds = %253 %.02026.i.i.i.i.i = phi i64 [ 60, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit10.thread.i" ], [ %.021.i.i.i.i.i69, %275 ] %265 = lshr i64 %.028.i.i.i.i.i, 1 %266 = add nuw nsw i64 %265, %.01927.i.i.i.i.i - %267 = icmp ult i64 %266, 60 + %267 = icmp samesign ult i64 %266, 60 call void @llvm.assume(i1 %267) %268 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4485, i64 %266 %.val23.i.i.i.i.i65 = load ptr, ptr %268, align 8, !alias.scope !288, !noalias !289, !nonnull !5, !align !102, !noundef !5 @@ -6429,8 +6429,8 @@ default.unreachable: ; preds = %253 %277 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i.i68, 0 %278 = add nuw nsw i64 %266, 1 %.022.i.i.i.i.i70 = select i1 %277, i64 %278, i64 %.01927.i.i.i.i.i - %279 = sub i64 %.021.i.i.i.i.i69, %.022.i.i.i.i.i70 - %280 = icmp ult i64 %.022.i.i.i.i.i70, %.021.i.i.i.i.i69 + %279 = sub nsw i64 %.021.i.i.i.i.i69, %.022.i.i.i.i.i70 + %280 = icmp samesign ult i64 %.022.i.i.i.i.i70, %.021.i.i.i.i.i69 br i1 %280, label %264, label %.thread.i.i .thread.i.i: ; preds = %275 @@ -6535,7 +6535,7 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %.02026.i.i.i.i = phi i64 [ 37, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit7.thread.i" ], [ %.021.i.i.i.i, %311 ] %301 = lshr i64 %.028.i.i.i.i, 1 %302 = add nuw nsw i64 %301, %.01927.i.i.i.i - %303 = icmp ult i64 %302, 37 + %303 = icmp samesign ult i64 %302, 37 call void @llvm.assume(i1 %303), !noalias !317 %304 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4188, i64 %302 %.val23.i.i.i.i = load ptr, ptr %304, align 8, !alias.scope !347, !noalias !348, !nonnull !5, !align !102, !noundef !5 @@ -6556,8 +6556,8 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %313 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i, 0 %314 = add nuw nsw i64 %302, 1 %.022.i.i.i.i = select i1 %313, i64 %314, i64 %.01927.i.i.i.i - %315 = sub i64 %.021.i.i.i.i, %.022.i.i.i.i - %316 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %315 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i + %316 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %316, label %300, label %.thread31.i .thread31.i: ; preds = %311 @@ -6579,7 +6579,7 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %.02026.i.i.i.i.i77 = phi i64 [ 37, %318 ], [ %.021.i.i.i.i.i82, %330 ] %320 = lshr i64 %.028.i.i.i.i.i75, 1 %321 = add nuw nsw i64 %320, %.01927.i.i.i.i.i76 - %322 = icmp ult i64 %321, 37 + %322 = icmp samesign ult i64 %321, 37 call void @llvm.assume(i1 %322), !noalias !365 %323 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4188, i64 %321 %.val23.i.i.i.i.i78 = load ptr, ptr %323, align 8, !alias.scope !371, !noalias !372, !nonnull !5, !align !102, !noundef !5 @@ -6600,8 +6600,8 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %332 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i.i81, 0 %333 = add nuw nsw i64 %321, 1 %.022.i.i.i.i.i83 = select i1 %332, i64 %333, i64 %.01927.i.i.i.i.i76 - %334 = sub i64 %.021.i.i.i.i.i82, %.022.i.i.i.i.i83 - %335 = icmp ult i64 %.022.i.i.i.i.i83, %.021.i.i.i.i.i82 + %334 = sub nsw i64 %.021.i.i.i.i.i82, %.022.i.i.i.i.i83 + %335 = icmp samesign ult i64 %.022.i.i.i.i.i83, %.021.i.i.i.i.i82 br i1 %335, label %319, label %.thread31.i.i .thread31.i.i: ; preds = %330 @@ -6712,7 +6712,7 @@ _ZN12regex_syntax7unicode6gencat17h7a12ab031675e367E.exit: ; preds = %297, %299, %.02026.i.i.i.i.i89 = phi i64 [ 163, %360 ], [ %.021.i.i.i.i.i94, %372 ] %362 = lshr i64 %.028.i.i.i.i.i87, 1 %363 = add nuw nsw i64 %362, %.01927.i.i.i.i.i88 - %364 = icmp ult i64 %363, 163 + %364 = icmp samesign ult i64 %363, 163 call void @llvm.assume(i1 %364) %365 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4354, i64 %363 %.val23.i.i.i.i.i90 = load ptr, ptr %365, align 8, !alias.scope !413, !noalias !414, !nonnull !5, !align !102, !noundef !5 @@ -6733,8 +6733,8 @@ _ZN12regex_syntax7unicode6gencat17h7a12ab031675e367E.exit: ; preds = %297, %299, %374 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i.i93, 0 %375 = add nuw nsw i64 %363, 1 %.022.i.i.i.i.i95 = select i1 %374, i64 %375, i64 %.01927.i.i.i.i.i88 - %376 = sub i64 %.021.i.i.i.i.i94, %.022.i.i.i.i.i95 - %377 = icmp ult i64 %.022.i.i.i.i.i95, %.021.i.i.i.i.i94 + %376 = sub nsw i64 %.021.i.i.i.i.i94, %.022.i.i.i.i.i95 + %377 = icmp samesign ult i64 %.022.i.i.i.i.i95, %.021.i.i.i.i.i94 br i1 %377, label %361, label %.thread.i.i96 .thread.i.i96: ; preds = %372 @@ -6878,7 +6878,7 @@ _ZN12regex_syntax3hir12ClassUnicode5empty17h26d5991a0702163dE.exit: ; preds = %3 %.02026.i.i.i.i.i115 = phi i64 [ 163, %408 ], [ %.021.i.i.i.i.i120, %421 ] %411 = lshr i64 %.028.i.i.i.i.i113, 1 %412 = add nuw nsw i64 %411, %.01927.i.i.i.i.i114 - %413 = icmp ult i64 %412, 163 + %413 = icmp samesign ult i64 %412, 163 call void @llvm.assume(i1 %413) %414 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4425, i64 %412 %.val23.i.i.i.i.i116 = load ptr, ptr %414, align 8, !alias.scope !492, !noalias !493, !nonnull !5, !align !102, !noundef !5 @@ -6899,8 +6899,8 @@ _ZN12regex_syntax3hir12ClassUnicode5empty17h26d5991a0702163dE.exit: ; preds = %3 %423 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i.i119, 0 %424 = add nuw nsw i64 %412, 1 %.022.i.i.i.i.i121 = select i1 %423, i64 %424, i64 %.01927.i.i.i.i.i114 - %425 = sub i64 %.021.i.i.i.i.i120, %.022.i.i.i.i.i121 - %426 = icmp ult i64 %.022.i.i.i.i.i121, %.021.i.i.i.i.i120 + %425 = sub nsw i64 %.021.i.i.i.i.i120, %.022.i.i.i.i.i121 + %426 = icmp samesign ult i64 %.022.i.i.i.i.i121, %.021.i.i.i.i.i120 br i1 %426, label %410, label %.thread.i.i122 .thread.i.i122: ; preds = %421 @@ -7222,7 +7222,7 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char br i1 %or.cond.i, label %_ZN12regex_syntax7unicode17is_word_character3imp17h708cd24619ee543bE.llvm.16611923841924356903.exit, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ._crit_edge.i.i: ; preds = %17 - %10 = icmp ult i64 %.022.i.i, 772 + %10 = icmp samesign ult i64 %.022.i.i, 772 tail call void @llvm.assume(i1 %10) br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit.i" @@ -7231,8 +7231,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %.01927.i.i = phi i64 [ %.022.i.i, %17 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ] %.02026.i.i = phi i64 [ %.021.i.i, %17 ], [ 771, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ] %11 = lshr i64 %.028.i.i, 1 - %12 = add i64 %11, %.01927.i.i - %13 = icmp ult i64 %12, 771 + %12 = add nuw nsw i64 %11, %.01927.i.i + %13 = icmp samesign ult i64 %12, 771 tail call void @llvm.assume(i1 %13) %14 = getelementptr inbounds { i32, i32 }, ptr @anon.ee024262027212e939cdd9996d089225.2960.llvm.16611923841924356903, i64 %12 %.val23.i.i = load i32, ptr %14, align 4, !range !4, !alias.scope !579, !noalias !582, !noundef !5 @@ -7249,8 +7249,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %18 = select i1 %.not.i.i.i, i1 %.not2.i.i.i, i1 false %19 = add nuw nsw i64 %12, 1 %.022.i.i = select i1 %18, i64 %19, i64 %.01927.i.i - %20 = sub i64 %.021.i.i, %.022.i.i - %21 = icmp ult i64 %.022.i.i, %.021.i.i + %20 = sub nsw i64 %.021.i.i, %.022.i.i + %21 = icmp samesign ult i64 %.022.i.i, %.021.i.i br i1 %21, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i", label %._crit_edge.i.i "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i", %._crit_edge.i.i @@ -7284,7 +7284,7 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char br i1 %or.cond, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread", label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ._crit_edge.i: ; preds = %17 - %10 = icmp ult i64 %.022.i, 772 + %10 = icmp samesign ult i64 %.022.i, 772 tail call void @llvm.assume(i1 %10) br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit" @@ -7293,8 +7293,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %.01927.i = phi i64 [ %.022.i, %17 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ] %.02026.i = phi i64 [ %.021.i, %17 ], [ 771, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ] %11 = lshr i64 %.028.i, 1 - %12 = add i64 %11, %.01927.i - %13 = icmp ult i64 %12, 771 + %12 = add nuw nsw i64 %11, %.01927.i + %13 = icmp samesign ult i64 %12, 771 tail call void @llvm.assume(i1 %13) %14 = getelementptr inbounds { i32, i32 }, ptr @anon.ee024262027212e939cdd9996d089225.2960.llvm.16611923841924356903, i64 %12 %.val23.i = load i32, ptr %14, align 4, !range !4, !alias.scope !584, !noalias !587, !noundef !5 @@ -7311,8 +7311,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %18 = select i1 %.not.i.i, i1 %.not2.i.i, i1 false %19 = add nuw nsw i64 %12, 1 %.022.i = select i1 %18, i64 %19, i64 %.01927.i - %20 = sub i64 %.021.i, %.022.i - %21 = icmp ult i64 %.022.i, %.021.i + %20 = sub nsw i64 %.021.i, %.022.i + %21 = icmp samesign ult i64 %.022.i, %.021.i br i1 %21, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4", label %._crit_edge.i "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4", %._crit_edge.i @@ -7357,7 +7357,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_gencat17hda57f %.0202.i.i.i.i = phi i64 [ %.021.i.i.i.i, %17 ], [ 7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit27.thread.preheader" ] %7 = lshr i64 %.04.i.i.i.i, 1 %8 = add nuw nsw i64 %7, %.0193.i.i.i.i - %9 = icmp ult i64 %8, 7 + %9 = icmp samesign ult i64 %8, 7 tail call void @llvm.assume(i1 %9) %10 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %8 %.val23.i.i.i.i = load ptr, ptr %10, align 8, !noalias !601, !nonnull !5, !align !102, !noundef !5 @@ -7379,7 +7379,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_gencat17hda57f %20 = add nuw nsw i64 %8, 1 %.022.i.i.i.i = select i1 %19, i64 %20, i64 %.0193.i.i.i.i %21 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i - %22 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %22 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %22, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit27.thread", label %23 23: ; preds = %17 @@ -7464,7 +7464,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_script17hb0626 %.0202.i.i.i.i = phi i64 [ 7, %3 ], [ %.021.i.i.i.i, %15 ] %5 = lshr i64 %.04.i.i.i.i, 1 %6 = add nuw nsw i64 %5, %.0193.i.i.i.i - %7 = icmp ult i64 %6, 7 + %7 = icmp samesign ult i64 %6, 7 tail call void @llvm.assume(i1 %7) %8 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %6 %.val23.i.i.i.i = load ptr, ptr %8, align 8, !noalias !641, !nonnull !5, !align !102, !noundef !5 @@ -7486,7 +7486,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_script17hb0626 %18 = add nuw nsw i64 %6, 1 %.022.i.i.i.i = select i1 %17, i64 %18, i64 %.0193.i.i.i.i %19 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i - %20 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %20 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %20, label %4, label %21 21: ; preds = %15 @@ -7578,7 +7578,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode3gcb17hb8ef32ba6d8eed21E(p %.02026.i.i.i.i = phi i64 [ 13, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp ult i64 %7, 13 + %8 = icmp samesign ult i64 %7, 13 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4498, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !693, !noalias !694, !nonnull !5, !align !102, !noundef !5 @@ -7599,8 +7599,8 @@ define internal fastcc void @_ZN12regex_syntax7unicode3gcb17hb8ef32ba6d8eed21E(p %18 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i, 0 %19 = add nuw nsw i64 %7, 1 %.022.i.i.i.i = select i1 %18, i64 %19, i64 %.01927.i.i.i.i - %20 = sub i64 %.021.i.i.i.i, %.022.i.i.i.i - %21 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %20 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i + %21 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %21, label %5, label %.thread.i .thread.i: ; preds = %16 @@ -7656,7 +7656,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode2wb17hc0a5a8cc8ed468edE(pt %.02026.i.i.i.i = phi i64 [ 18, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp ult i64 %7, 18 + %8 = icmp samesign ult i64 %7, 18 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4513, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !721, !noalias !722, !nonnull !5, !align !102, !noundef !5 @@ -7677,8 +7677,8 @@ define internal fastcc void @_ZN12regex_syntax7unicode2wb17hc0a5a8cc8ed468edE(pt %18 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i, 0 %19 = add nuw nsw i64 %7, 1 %.022.i.i.i.i = select i1 %18, i64 %19, i64 %.01927.i.i.i.i - %20 = sub i64 %.021.i.i.i.i, %.022.i.i.i.i - %21 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %20 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i + %21 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %21, label %5, label %.thread.i .thread.i: ; preds = %16 @@ -7734,7 +7734,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode2sb17h2baa8a68179ef89cE(pt %.02026.i.i.i.i = phi i64 [ 14, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp ult i64 %7, 14 + %8 = icmp samesign ult i64 %7, 14 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4526, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !749, !noalias !750, !nonnull !5, !align !102, !noundef !5 @@ -7755,8 +7755,8 @@ define internal fastcc void @_ZN12regex_syntax7unicode2sb17h2baa8a68179ef89cE(pt %18 = icmp slt i64 %spec.store.select.i.i.i.i.i.i.i.i, 0 %19 = add nuw nsw i64 %7, 1 %.022.i.i.i.i = select i1 %18, i64 %19, i64 %.01927.i.i.i.i - %20 = sub i64 %.021.i.i.i.i, %.022.i.i.i.i - %21 = icmp ult i64 %.022.i.i.i.i, %.021.i.i.i.i + %20 = sub nsw i64 %.021.i.i.i.i, %.022.i.i.i.i + %21 = icmp samesign ult i64 %.022.i.i.i.i, %.021.i.i.i.i br i1 %21, label %5, label %.thread.i .thread.i: ; preds = %16 diff --git a/bench/ruby/optimized/gc.ll b/bench/ruby/optimized/gc.ll index dc59b16cc8e..1983657d6be 100644 --- a/bench/ruby/optimized/gc.ll +++ b/bench/ruby/optimized/gc.ll @@ -27170,55 +27170,55 @@ declare void @ruby_debug_breakpoint() local_unnamed_addr #2 ; Function Attrs: nounwind sspstrong uwtable define internal fastcc void @gc_verify_heap_pages_(ptr nocapture noundef readonly %0, ptr noundef readonly %1) unnamed_addr #0 { - %.pn68 = load ptr, ptr %1, align 8 - %.not70 = icmp eq ptr %.pn68, %1 - br i1 %.not70, label %._crit_edge76, label %.lr.ph75 + %.pn69 = load ptr, ptr %1, align 8 + %.not71 = icmp eq ptr %.pn69, %1 + br i1 %.not71, label %._crit_edge77, label %.lr.ph76 -.lr.ph75: ; preds = %2 +.lr.ph76: ; preds = %2 %3 = getelementptr inbounds i8, ptr %0, i64 16 br label %4 -4: ; preds = %.lr.ph75, %85 - %.pn72 = phi ptr [ %.pn68, %.lr.ph75 ], [ %.pn, %85 ] - %.071 = phi i32 [ 0, %.lr.ph75 ], [ %.1, %85 ] - %.01973 = getelementptr i8, ptr %.pn72, i64 -48 - %5 = getelementptr i8, ptr %.pn72, i64 -8 - %.02065 = load ptr, ptr %5, align 8 - %.not2166 = icmp eq ptr %.02065, null - br i1 %.not2166, label %._crit_edge, label %.lr.ph +4: ; preds = %.lr.ph76, %84 + %.pn73 = phi ptr [ %.pn69, %.lr.ph76 ], [ %.pn, %84 ] + %.072 = phi i32 [ 0, %.lr.ph76 ], [ %.1, %84 ] + %.01974 = getelementptr i8, ptr %.pn73, i64 -48 + %5 = getelementptr i8, ptr %.pn73, i64 -8 + %.02066 = load ptr, ptr %5, align 8 + %.not2167 = icmp eq ptr %.02066, null + br i1 %.not2167, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4, %13 - %.02067 = phi ptr [ %.020, %13 ], [ %.02065, %4 ] - %6 = load i64, ptr %.02067, align 8 + %.02068 = phi ptr [ %.020, %13 ], [ %.02066, %4 ] + %6 = load i64, ptr %.02068, align 8 %7 = and i64 %6, 31 %.not22 = icmp eq i64 %7, 0 br i1 %.not22, label %13, label %8 8: ; preds = %.lr.ph - %9 = ptrtoint ptr %.02067 to i64 + %9 = ptrtoint ptr %.02068 to i64 %10 = load ptr, ptr @stderr, align 8 %11 = tail call fastcc nonnull ptr @obj_type_name(i64 noundef %9) %12 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10, ptr noundef nonnull @.str.203, ptr noundef nonnull %11) #58 br label %13 13: ; preds = %8, %.lr.ph - %14 = getelementptr inbounds i8, ptr %.02067, i64 8 + %14 = getelementptr inbounds i8, ptr %.02068, i64 8 %.020 = load ptr, ptr %14, align 8 %.not21 = icmp eq ptr %.020, null br i1 %.not21, label %._crit_edge, label %.lr.ph, !llvm.loop !182 ._crit_edge: ; preds = %13, %4 - %15 = getelementptr i8, ptr %.pn72, i64 -36 + %15 = getelementptr i8, ptr %.pn73, i64 -36 %16 = load i8, ptr %15, align 4 %17 = and i8 %16, 2 %18 = icmp eq i8 %17, 0 - br i1 %18, label %19, label %85 + br i1 %18, label %19, label %84 19: ; preds = %._crit_edge - %20 = load i16, ptr %.01973, align 8 - %21 = getelementptr i8, ptr %.pn72, i64 -16 + %20 = load i16, ptr %.01974, align 8 + %21 = getelementptr i8, ptr %.pn73, i64 -16 %22 = load i64, ptr %21, align 8 - %23 = getelementptr i8, ptr %.pn72, i64 -46 + %23 = getelementptr i8, ptr %.pn73, i64 -46 %24 = load i16, ptr %23, align 2 %25 = sext i16 %24 to i64 %26 = sext i16 %20 to i64 @@ -27228,9 +27228,9 @@ define internal fastcc void @gc_verify_heap_pages_(ptr nocapture noundef readonl br i1 %29, label %.lr.ph.i, label %._crit_edge._crit_edge.i.thread .lr.ph.i: ; preds = %19 - %30 = getelementptr i8, ptr %.pn72, i64 432 - %31 = getelementptr i8, ptr %.pn72, i64 16 - %32 = getelementptr i8, ptr %.pn72, i64 640 + %30 = getelementptr i8, ptr %.pn73, i64 432 + %31 = getelementptr i8, ptr %.pn73, i64 16 + %32 = getelementptr i8, ptr %.pn73, i64 640 br label %33 33: ; preds = %51, %.lr.ph.i @@ -27280,78 +27280,78 @@ define internal fastcc void @gc_verify_heap_pages_(ptr nocapture noundef readonl br i1 %57, label %33, label %._crit_edge.i, !llvm.loop !183 ._crit_edge.i: ; preds = %51 - %58 = icmp ne i32 %spec.select80.i, 1 - %59 = load i16, ptr %3, align 8 - %60 = and i16 %59, 2048 - %.not.i = icmp ne i16 %60, 0 - %brmerge = select i1 %.not.i, i1 true, i1 %58 + %.not46 = icmp eq i32 %spec.select80.i, 0 + %58 = load i16, ptr %3, align 8 + %59 = and i16 %58, 2048 + %.not.i = icmp ne i16 %59, 0 + %brmerge = select i1 %.not.i, i1 true, i1 %.not46 br i1 %brmerge, label %._crit_edge._crit_edge.i, label %.lr.ph96.i -.lr.ph96.i: ; preds = %._crit_edge.i, %73 - %.05995.i = phi i64 [ %74, %73 ], [ %22, %._crit_edge.i ] +.lr.ph96.i: ; preds = %._crit_edge.i, %72 + %.05995.i = phi i64 [ %73, %72 ], [ %22, %._crit_edge.i ] %.lhs.trunc83.i = trunc i64 %.05995.i to i16 - %61 = udiv i16 %.lhs.trunc83.i, 40 - %62 = udiv i16 %.lhs.trunc83.i, 2560 - %.zext86.i = zext nneg i16 %62 to i64 - %63 = getelementptr [26 x i64], ptr %32, i64 0, i64 %.zext86.i - %64 = load i64, ptr %63, align 8 - %65 = and i16 %61, 63 - %66 = zext nneg i16 %65 to i64 - %67 = shl nuw i64 1, %66 - %68 = and i64 %67, %64 - %.not73.i = icmp eq i64 %68, 0 - br i1 %.not73.i, label %73, label %69 - -69: ; preds = %.lr.ph96.i - %70 = load ptr, ptr @stderr, align 8 - %71 = tail call fastcc nonnull ptr @obj_type_name(i64 noundef %.05995.i) - %72 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %70, ptr noundef nonnull @.str.204, ptr noundef nonnull %71) #58 - br label %73 - -73: ; preds = %69, %.lr.ph96.i - %74 = add i64 %.05995.i, %26 - %75 = icmp ult i64 %74, %28 - br i1 %75, label %.lr.ph96.i, label %._crit_edge97.i, !llvm.loop !184 - -._crit_edge97.i: ; preds = %73 - tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.205, ptr noundef nonnull %.01973, i32 noundef %spec.select79.i, ptr noundef nonnull @.str.206) #54 + %60 = udiv i16 %.lhs.trunc83.i, 40 + %61 = udiv i16 %.lhs.trunc83.i, 2560 + %.zext86.i = zext nneg i16 %61 to i64 + %62 = getelementptr [26 x i64], ptr %32, i64 0, i64 %.zext86.i + %63 = load i64, ptr %62, align 8 + %64 = and i16 %60, 63 + %65 = zext nneg i16 %64 to i64 + %66 = shl nuw i64 1, %65 + %67 = and i64 %66, %63 + %.not73.i = icmp eq i64 %67, 0 + br i1 %.not73.i, label %72, label %68 + +68: ; preds = %.lr.ph96.i + %69 = load ptr, ptr @stderr, align 8 + %70 = tail call fastcc nonnull ptr @obj_type_name(i64 noundef %.05995.i) + %71 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %69, ptr noundef nonnull @.str.204, ptr noundef nonnull %70) #58 + br label %72 + +72: ; preds = %68, %.lr.ph96.i + %73 = add i64 %.05995.i, %26 + %74 = icmp ult i64 %73, %28 + br i1 %74, label %.lr.ph96.i, label %._crit_edge97.i, !llvm.loop !184 + +._crit_edge97.i: ; preds = %72 + tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.205, ptr noundef nonnull %.01974, i32 noundef %spec.select79.i, ptr noundef nonnull @.str.206) #54 unreachable ._crit_edge._crit_edge.i: ; preds = %._crit_edge.i - %76 = icmp eq i32 %.1.i, 1 - %77 = and i8 %16, 4 - %78 = icmp eq i8 %77, 0 - %or.cond3.i = select i1 %78, i1 %76, i1 false - br i1 %or.cond3.i, label %79, label %._crit_edge._crit_edge.i.thread - -79: ; preds = %._crit_edge._crit_edge.i - tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.207, ptr noundef nonnull %.01973, ptr noundef nonnull @.str.206) #54 + %75 = icmp eq i32 %.1.i, 1 + %76 = and i8 %16, 4 + %77 = icmp eq i8 %76, 0 + %or.cond3.i = select i1 %77, i1 %75, i1 false + br i1 %or.cond3.i, label %78, label %._crit_edge._crit_edge.i.thread + +78: ; preds = %._crit_edge._crit_edge.i + tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.207, ptr noundef nonnull %.01974, ptr noundef nonnull @.str.206) #54 unreachable ._crit_edge._crit_edge.i.thread: ; preds = %19, %._crit_edge._crit_edge.i %.067.lcssa.i2844 = phi i32 [ %.168.i, %._crit_edge._crit_edge.i ], [ 0, %19 ] %.062.lcssa.i3143 = phi i32 [ %spec.select79.i, %._crit_edge._crit_edge.i ], [ 0, %19 ] - %80 = getelementptr i8, ptr %.pn72, i64 -42 - %81 = load i16, ptr %80, align 2 - %82 = sext i16 %81 to i32 - %.not74.i = icmp eq i32 %.067.lcssa.i2844, %82 - br i1 %.not74.i, label %gc_verify_heap_page.exit, label %83 - -83: ; preds = %._crit_edge._crit_edge.i.thread - tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.208, ptr noundef nonnull %.01973, i32 noundef %82, i32 noundef %.067.lcssa.i2844) #54 + %79 = getelementptr i8, ptr %.pn73, i64 -42 + %80 = load i16, ptr %79, align 2 + %81 = sext i16 %80 to i32 + %.not74.i = icmp eq i32 %.067.lcssa.i2844, %81 + br i1 %.not74.i, label %gc_verify_heap_page.exit, label %82 + +82: ; preds = %._crit_edge._crit_edge.i.thread + tail call void (ptr, ...) @rb_bug(ptr noundef nonnull @.str.208, ptr noundef nonnull %.01974, i32 noundef %81, i32 noundef %.067.lcssa.i2844) #54 unreachable gc_verify_heap_page.exit: ; preds = %._crit_edge._crit_edge.i.thread - %84 = add i32 %.062.lcssa.i3143, %.071 - br label %85 + %83 = add i32 %.062.lcssa.i3143, %.072 + br label %84 -85: ; preds = %._crit_edge, %gc_verify_heap_page.exit - %.1 = phi i32 [ %84, %gc_verify_heap_page.exit ], [ %.071, %._crit_edge ] - %.pn = load ptr, ptr %.pn72, align 8 +84: ; preds = %._crit_edge, %gc_verify_heap_page.exit + %.1 = phi i32 [ %83, %gc_verify_heap_page.exit ], [ %.072, %._crit_edge ] + %.pn = load ptr, ptr %.pn73, align 8 %.not = icmp eq ptr %.pn, %1 - br i1 %.not, label %._crit_edge76, label %4, !llvm.loop !185 + br i1 %.not, label %._crit_edge77, label %4, !llvm.loop !185 -._crit_edge76: ; preds = %85, %2 +._crit_edge77: ; preds = %84, %2 ret void } diff --git a/bench/slurm/optimized/cbuf.ll b/bench/slurm/optimized/cbuf.ll index fc229f856d3..bd8db840f24 100644 --- a/bench/slurm/optimized/cbuf.ll +++ b/bench/slurm/optimized/cbuf.ll @@ -1463,11 +1463,11 @@ define dso_local i32 @cbuf_drop_line(ptr noundef %0, i32 noundef %1, i32 noundef 6: ; preds = %3 %7 = tail call ptr @__errno_location() #14 store i32 22, ptr %7, align 4 - br label %57 + br label %56 8: ; preds = %3 %9 = icmp eq i32 %2, 0 - br i1 %9, label %57, label %10 + br i1 %9, label %56, label %10 10: ; preds = %8 %11 = tail call i32 @pthread_mutex_lock(ptr noundef %0) #15 @@ -1542,35 +1542,33 @@ define dso_local i32 @cbuf_drop_line(ptr noundef %0, i32 noundef %1, i32 noundef ._crit_edge.i: ; preds = %41, %30 %46 = icmp sgt i32 %.2.i, 0 - br i1 %46, label %cbuf_find_unread_line.exit.thread25, label %cbuf_find_unread_line.exit - -cbuf_find_unread_line.exit: ; preds = %._crit_edge.i - %47 = icmp sgt i32 %.235.i, 0 - br i1 %47, label %48, label %cbuf_find_unread_line.exit.thread25 - -48: ; preds = %cbuf_find_unread_line.exit - %49 = sub nsw i32 %19, %.235.i - store i32 %49, ptr %18, align 8 - %50 = add nsw i32 %23, %.235.i - %51 = load i32, ptr %29, align 4 - %52 = add nsw i32 %51, 1 - %53 = srem i32 %50, %52 - store i32 %53, ptr %22, align 8 + %.not27 = icmp eq i32 %.235.i, 0 + %or.cond28 = select i1 %46, i1 true, i1 %.not27 + br i1 %or.cond28, label %cbuf_find_unread_line.exit.thread25, label %47 + +47: ; preds = %._crit_edge.i + %48 = sub nsw i32 %19, %.235.i + store i32 %48, ptr %18, align 8 + %49 = add nsw i32 %23, %.235.i + %50 = load i32, ptr %29, align 4 + %51 = add nsw i32 %50, 1 + %52 = srem i32 %49, %51 + store i32 %52, ptr %22, align 8 br label %cbuf_find_unread_line.exit.thread25 -cbuf_find_unread_line.exit.thread25: ; preds = %21, %._crit_edge.i, %17, %14, %cbuf_find_unread_line.exit, %48 - %.038.i21 = phi i32 [ %.235.i, %cbuf_find_unread_line.exit ], [ %.235.i, %48 ], [ 0, %14 ], [ 0, %17 ], [ 0, %._crit_edge.i ], [ 0, %21 ] - %54 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 - %.not19 = icmp eq i32 %54, 0 - br i1 %.not19, label %57, label %55 +cbuf_find_unread_line.exit.thread25: ; preds = %21, %._crit_edge.i, %17, %14, %47 + %.038.i21 = phi i32 [ %.235.i, %47 ], [ 0, %14 ], [ 0, %17 ], [ 0, %._crit_edge.i ], [ 0, %21 ] + %53 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 + %.not19 = icmp eq i32 %53, 0 + br i1 %.not19, label %56, label %54 -55: ; preds = %cbuf_find_unread_line.exit.thread25 - %56 = tail call ptr @__errno_location() #14 - store i32 %54, ptr %56, align 4 +54: ; preds = %cbuf_find_unread_line.exit.thread25 + %55 = tail call ptr @__errno_location() #14 + store i32 %53, ptr %55, align 4 tail call void (ptr, ...) @fatal(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 542, ptr noundef nonnull @__func__.cbuf_drop_line) #16 unreachable -57: ; preds = %cbuf_find_unread_line.exit.thread25, %8, %6 +56: ; preds = %cbuf_find_unread_line.exit.thread25, %8, %6 %.0 = phi i32 [ -1, %6 ], [ 0, %8 ], [ %.038.i21, %cbuf_find_unread_line.exit.thread25 ] ret i32 %.0 } @@ -1756,11 +1754,11 @@ define dso_local i32 @cbuf_read_line(ptr noundef %0, ptr noundef writeonly %1, i 8: ; preds = %4 %9 = tail call ptr @__errno_location() #14 store i32 22, ptr %9, align 4 - br label %86 + br label %85 10: ; preds = %4 %11 = icmp eq i32 %3, 0 - br i1 %11, label %86, label %12 + br i1 %11, label %85, label %12 12: ; preds = %10 %13 = tail call i32 @pthread_mutex_lock(ptr noundef %0) #15 @@ -1836,91 +1834,89 @@ define dso_local i32 @cbuf_read_line(ptr noundef %0, ptr noundef writeonly %1, i ._crit_edge.i: ; preds = %44, %33 %49 = icmp sgt i32 %.2.i, 0 - br i1 %49, label %cbuf_find_unread_line.exit.thread48, label %cbuf_find_unread_line.exit - -cbuf_find_unread_line.exit: ; preds = %._crit_edge.i - %50 = icmp sgt i32 %.235.i, 0 - br i1 %50, label %51, label %cbuf_find_unread_line.exit.thread48 + %.not50 = icmp eq i32 %.235.i, 0 + %or.cond53 = select i1 %49, i1 true, i1 %.not50 + br i1 %or.cond53, label %cbuf_find_unread_line.exit.thread48, label %50 -51: ; preds = %cbuf_find_unread_line.exit - %52 = icmp sgt i32 %2, 0 - br i1 %52, label %53, label %75 +50: ; preds = %._crit_edge.i + %51 = icmp sgt i32 %2, 0 + br i1 %51, label %52, label %74 -53: ; preds = %51 - %54 = tail call i32 @llvm.umin.i32(i32 %.235.i, i32 %17) +52: ; preds = %50 + %53 = tail call i32 @llvm.umin.i32(i32 %.235.i, i32 %17) %.not36 = icmp ne i32 %2, 1 %.old1.i = icmp sgt i32 %22, 0 - %or.cond52 = and i1 %.not36, %.old1.i - br i1 %or.cond52, label %.preheader.i, label %cbuf_reader.exit - -.preheader.i: ; preds = %53 - %55 = tail call i32 @llvm.umin.i32(i32 %54, i32 %22) - br label %56 - -56: ; preds = %71, %.preheader.i - %.042 = phi ptr [ %1, %.preheader.i ], [ %63, %71 ] - %.035.i = phi i32 [ %55, %.preheader.i ], [ %.2.i38, %71 ] - %.0.i = phi i32 [ %26, %.preheader.i ], [ %.1.i39, %71 ] - %57 = load i32, ptr %32, align 4 - %reass.sub = sub i32 %57, %.0.i - %58 = add i32 %reass.sub, 1 - %.035..i = tail call i32 @llvm.smin.i32(i32 %.035.i, i32 %58) - %59 = load ptr, ptr %30, align 8 - %60 = sext i32 %.0.i to i64 - %61 = getelementptr inbounds i8, ptr %59, i64 %60 - %62 = sext i32 %.035..i to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.042, ptr readonly align 1 %61, i64 %62, i1 false) - %63 = getelementptr inbounds i8, ptr %.042, i64 %62 - %64 = icmp sgt i32 %.035..i, 0 - br i1 %64, label %65, label %71 - -65: ; preds = %56 - %66 = sub nsw i32 %.035.i, %.035..i - %67 = add nsw i32 %.035..i, %.0.i - %68 = load i32, ptr %32, align 4 - %69 = add nsw i32 %68, 1 - %70 = srem i32 %67, %69 - br label %71 + %or.cond54 = and i1 %.not36, %.old1.i + br i1 %or.cond54, label %.preheader.i, label %cbuf_reader.exit -71: ; preds = %65, %56 - %.2.i38 = phi i32 [ %66, %65 ], [ %.035.i, %56 ] - %.1.i39 = phi i32 [ %70, %65 ], [ %.0.i, %56 ] - %72 = icmp sgt i32 %.2.i38, 0 - br i1 %72, label %56, label %cbuf_reader.exit, !llvm.loop !10 +.preheader.i: ; preds = %52 + %54 = tail call i32 @llvm.umin.i32(i32 %53, i32 %22) + br label %55 -cbuf_reader.exit: ; preds = %71, %53 - %73 = zext nneg i32 %54 to i64 - %74 = getelementptr inbounds i8, ptr %1, i64 %73 - store i8 0, ptr %74, align 1 +55: ; preds = %70, %.preheader.i + %.042 = phi ptr [ %1, %.preheader.i ], [ %62, %70 ] + %.035.i = phi i32 [ %54, %.preheader.i ], [ %.2.i38, %70 ] + %.0.i = phi i32 [ %26, %.preheader.i ], [ %.1.i39, %70 ] + %56 = load i32, ptr %32, align 4 + %reass.sub = sub i32 %56, %.0.i + %57 = add i32 %reass.sub, 1 + %.035..i = tail call i32 @llvm.smin.i32(i32 %.035.i, i32 %57) + %58 = load ptr, ptr %30, align 8 + %59 = sext i32 %.0.i to i64 + %60 = getelementptr inbounds i8, ptr %58, i64 %59 + %61 = sext i32 %.035..i to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.042, ptr readonly align 1 %60, i64 %61, i1 false) + %62 = getelementptr inbounds i8, ptr %.042, i64 %61 + %63 = icmp sgt i32 %.035..i, 0 + br i1 %63, label %64, label %70 + +64: ; preds = %55 + %65 = sub nsw i32 %.035.i, %.035..i + %66 = add nsw i32 %.035..i, %.0.i + %67 = load i32, ptr %32, align 4 + %68 = add nsw i32 %67, 1 + %69 = srem i32 %66, %68 + br label %70 + +70: ; preds = %64, %55 + %.2.i38 = phi i32 [ %65, %64 ], [ %.035.i, %55 ] + %.1.i39 = phi i32 [ %69, %64 ], [ %.0.i, %55 ] + %71 = icmp sgt i32 %.2.i38, 0 + br i1 %71, label %55, label %cbuf_reader.exit, !llvm.loop !10 + +cbuf_reader.exit: ; preds = %70, %52 + %72 = zext nneg i32 %53 to i64 + %73 = getelementptr inbounds i8, ptr %1, i64 %72 + store i8 0, ptr %73, align 1 %.pre = load i32, ptr %21, align 8 - %.pre51 = load i32, ptr %25, align 8 - br label %75 + %.pre52 = load i32, ptr %25, align 8 + br label %74 -75: ; preds = %cbuf_reader.exit, %51 - %76 = phi i32 [ %.pre51, %cbuf_reader.exit ], [ %26, %51 ] - %77 = phi i32 [ %.pre, %cbuf_reader.exit ], [ %22, %51 ] - %78 = sub nsw i32 %77, %.235.i - store i32 %78, ptr %21, align 8 - %79 = add nsw i32 %76, %.235.i - %80 = load i32, ptr %32, align 4 - %81 = add nsw i32 %80, 1 - %82 = srem i32 %79, %81 - store i32 %82, ptr %25, align 8 +74: ; preds = %cbuf_reader.exit, %50 + %75 = phi i32 [ %.pre52, %cbuf_reader.exit ], [ %26, %50 ] + %76 = phi i32 [ %.pre, %cbuf_reader.exit ], [ %22, %50 ] + %77 = sub nsw i32 %76, %.235.i + store i32 %77, ptr %21, align 8 + %78 = add nsw i32 %75, %.235.i + %79 = load i32, ptr %32, align 4 + %80 = add nsw i32 %79, 1 + %81 = srem i32 %78, %80 + store i32 %81, ptr %25, align 8 br label %cbuf_find_unread_line.exit.thread48 -cbuf_find_unread_line.exit.thread48: ; preds = %24, %._crit_edge.i, %20, %16, %cbuf_find_unread_line.exit, %75 - %.038.i44 = phi i32 [ %.235.i, %cbuf_find_unread_line.exit ], [ %.235.i, %75 ], [ 0, %16 ], [ 0, %20 ], [ 0, %._crit_edge.i ], [ 0, %24 ] - %83 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 - %.not37 = icmp eq i32 %83, 0 - br i1 %.not37, label %86, label %84 +cbuf_find_unread_line.exit.thread48: ; preds = %24, %._crit_edge.i, %20, %16, %74 + %.038.i44 = phi i32 [ %.235.i, %74 ], [ 0, %16 ], [ 0, %20 ], [ 0, %._crit_edge.i ], [ 0, %24 ] + %82 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 + %.not37 = icmp eq i32 %82, 0 + br i1 %.not37, label %85, label %83 -84: ; preds = %cbuf_find_unread_line.exit.thread48 - %85 = tail call ptr @__errno_location() #14 - store i32 %83, ptr %85, align 4 +83: ; preds = %cbuf_find_unread_line.exit.thread48 + %84 = tail call ptr @__errno_location() #14 + store i32 %82, ptr %84, align 4 tail call void (ptr, ...) @fatal(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 615, ptr noundef nonnull @__func__.cbuf_read_line) #16 unreachable -86: ; preds = %cbuf_find_unread_line.exit.thread48, %10, %8 +85: ; preds = %cbuf_find_unread_line.exit.thread48, %10, %8 %.0 = phi i32 [ -1, %8 ], [ 0, %10 ], [ %.038.i44, %cbuf_find_unread_line.exit.thread48 ] ret i32 %.0 } 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/typst-rs/optimized/40w6rezair915kkd.ll b/bench/typst-rs/optimized/40w6rezair915kkd.ll index daf5ceb5ce4..8d4560eca28 100644 --- a/bench/typst-rs/optimized/40w6rezair915kkd.ll +++ b/bench/typst-rs/optimized/40w6rezair915kkd.ll @@ -17793,7 +17793,7 @@ define hidden noundef zeroext i1 @_ZN20unicode_segmentation4word16has_alphanumer %.02026.i.i.i.i.i = phi i64 [ %.021.i.i.i.i.i, %55 ], [ 733, %47 ] %49 = lshr i64 %.028.i.i.i.i.i, 1 %50 = add nuw nsw i64 %49, %.01927.i.i.i.i.i - %51 = icmp ult i64 %50, 733 + %51 = icmp samesign ult i64 %50, 733 tail call void @llvm.assume(i1 %51) %52 = getelementptr inbounds { i32, i32 }, ptr @anon.db70647216840ea9fd0320153731fc7a.58, i64 %50 %.val23.i.i.i.i.i = load i32, ptr %52, align 4, !range !7215, !alias.scope !7216, !noalias !7219, !noundef !4 @@ -17811,7 +17811,7 @@ define hidden noundef zeroext i1 @_ZN20unicode_segmentation4word16has_alphanumer %57 = add nuw nsw i64 %50, 1 %.022.i.i.i.i.i = select i1 %.not2.i.i.i.i.i.i, i64 %.01927.i.i.i.i.i, i64 %57 %58 = sub nsw i64 %.021.i.i.i.i.i, %.022.i.i.i.i.i - %59 = icmp ult i64 %.022.i.i.i.i.i, %.021.i.i.i.i.i + %59 = icmp samesign ult i64 %.022.i.i.i.i.i, %.021.i.i.i.i.i br i1 %59, label %.preheader.i.i.i.i, label %_ZN20unicode_segmentation6tables4util13is_alphabetic17hd1e8766fe86cb383E.exit.thread3.i.i.i _ZN20unicode_segmentation6tables4util13is_alphabetic17hd1e8766fe86cb383E.exit.thread3.i.i.i: ; preds = %55 @@ -17836,7 +17836,7 @@ _ZN20unicode_segmentation6tables4util13is_alphabetic17hd1e8766fe86cb383E.exit.th %.02026.i.i5.i.i.i = phi i64 [ %.021.i.i12.i.i.i, %70 ], [ 137, %_ZN20unicode_segmentation6tables4util13is_alphabetic17hd1e8766fe86cb383E.exit.thread3.i.i.i ] %64 = lshr i64 %.028.i.i3.i.i.i, 1 %65 = add nuw nsw i64 %64, %.01927.i.i4.i.i.i - %66 = icmp ult i64 %65, 137 + %66 = icmp samesign ult i64 %65, 137 tail call void @llvm.assume(i1 %66) %67 = getelementptr inbounds { i32, i32 }, ptr @anon.db70647216840ea9fd0320153731fc7a.57, i64 %65 %.val23.i.i6.i.i.i = load i32, ptr %67, align 4, !range !7215, !alias.scope !7221, !noalias !7224, !noundef !4 @@ -17854,7 +17854,7 @@ _ZN20unicode_segmentation6tables4util13is_alphabetic17hd1e8766fe86cb383E.exit.th %72 = add nuw nsw i64 %65, 1 %.022.i.i13.i.i.i = select i1 %.not2.i.i.i9.i.i.i, i64 %.01927.i.i4.i.i.i, i64 %72 %73 = sub nsw i64 %.021.i.i12.i.i.i, %.022.i.i13.i.i.i - %74 = icmp ult i64 %.022.i.i13.i.i.i, %.021.i.i12.i.i.i + %74 = icmp samesign ult i64 %.022.i.i13.i.i.i, %.021.i.i12.i.i.i br i1 %74, label %.preheader.i2.i.i.i, label %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h75a1fd5fdf434561E.exit.i" "_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h75a1fd5fdf434561E.exit.i": ; preds = %70 diff --git a/bench/velox/optimized/GreatestLeast.cpp.ll b/bench/velox/optimized/GreatestLeast.cpp.ll index ae3eb229d1f..074d4c0e569 100644 --- a/bench/velox/optimized/GreatestLeast.cpp.ll +++ b/bench/velox/optimized/GreatestLeast.cpp.ll @@ -17441,6 +17441,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit: ; preds = %entry, %if.th %and.i.i = and i64 %conv.i.i, 63 %9 = lshr i64 %8, %and.i.i %10 = trunc i64 %9 to i8 + %frombool = and i8 %10, 1 %11 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %11, align 8 %_M_finish.i30 = getelementptr inbounds i8, ptr %12, i64 8 @@ -17459,7 +17460,7 @@ for.body.lr.ph: ; preds = %_ZNK8facebook5velox for.body: ; preds = %for.body.lr.ph, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 %indvars.iv = phi i64 [ 1, %for.body.lr.ph ], [ %indvars.iv.next, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %valueIndex.037 = phi i64 [ 0, %for.body.lr.ph ], [ %spec.select29, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] - %currentValue.036 = phi i8 [ %10, %for.body.lr.ph ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] + %currentValue.036 = phi i8 [ %frombool, %for.body.lr.ph ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %15 = load ptr, ptr %this, align 8 %16 = load ptr, ptr %15, align 8 %add.ptr.i.i = getelementptr inbounds %"class.facebook::velox::exec::LocalDecodedVector", ptr %16, i64 %indvars.iv @@ -17499,29 +17500,28 @@ _ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27: ; preds = %for.body, % %24 = lshr i64 %23, %and.i.i21 %25 = trunc i64 %24 to i8 %frombool6 = and i8 %25, 1 - %26 = and i8 %currentValue.036, 1 - %cmp10 = icmp samesign ult i8 %frombool6, %26 + %cmp10 = icmp samesign ult i8 %frombool6, %currentValue.036 %spec.select = select i1 %cmp10, i8 0, i8 %currentValue.036 %spec.select29 = select i1 %cmp10, i64 %indvars.iv, i64 %valueIndex.037 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %27 = load ptr, ptr %11, align 8 - %_M_finish.i = getelementptr inbounds i8, ptr %27, i64 8 - %28 = load ptr, ptr %_M_finish.i, align 8 - %29 = load ptr, ptr %27, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %28 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %29 to i64 + %26 = load ptr, ptr %11, align 8 + %_M_finish.i = getelementptr inbounds i8, ptr %26, i64 8 + %27 = load ptr, ptr %_M_finish.i, align 8 + %28 = load ptr, ptr %26, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %27 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %28 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 4 %cmp = icmp ugt i64 %sub.ptr.div.i, %indvars.iv.next br i1 %cmp, label %for.body, label %for.end, !llvm.loop !188 for.end: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit - %currentValue.0.lcssa = phi i8 [ %10, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] + %currentValue.0.lcssa = phi i8 [ %frombool, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %valueIndex.0.lcssa = phi i64 [ 0, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select29, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] - %30 = getelementptr inbounds i8, ptr %this, i64 24 - %31 = load ptr, ptr %30, align 8 - %_M_parent.i.i.i.i.i = getelementptr inbounds i8, ptr %31, i64 16 - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %31, i64 8 + %29 = getelementptr inbounds i8, ptr %this, i64 24 + %30 = load ptr, ptr %29, align 8 + %_M_parent.i.i.i.i.i = getelementptr inbounds i8, ptr %30, i64 16 + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %30, i64 8 %__x.019.i.i.i = load ptr, ptr %_M_parent.i.i.i.i.i, align 8 %cmp.not20.i.i.i = icmp eq ptr %__x.019.i.i.i, null br i1 %cmp.not20.i.i.i, label %if.then.i.i.i, label %while.body.i.i.i @@ -17529,8 +17529,8 @@ for.end: ; preds = %_ZNK8facebook5velox while.body.i.i.i: ; preds = %for.end, %while.body.i.i.i %__x.021.i.i.i = phi ptr [ %__x.0.i.i.i, %while.body.i.i.i ], [ %__x.019.i.i.i, %for.end ] %_M_storage.i.i.i.i.i = getelementptr inbounds i8, ptr %__x.021.i.i.i, i64 32 - %32 = load i64, ptr %_M_storage.i.i.i.i.i, align 8 - %cmp.i.i.i.i = icmp ult i64 %valueIndex.0.lcssa, %32 + %31 = load i64, ptr %_M_storage.i.i.i.i.i, align 8 + %cmp.i.i.i.i = icmp ult i64 %valueIndex.0.lcssa, %31 %cond.in.v.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 24 %cond.in.i.i.i = getelementptr inbounds i8, ptr %__x.021.i.i.i, i64 %cond.in.v.i.i.i %__x.0.i.i.i = load ptr, ptr %cond.in.i.i.i, align 8 @@ -17542,9 +17542,9 @@ while.end.i.i.i: ; preds = %while.body.i.i.i if.then.i.i.i: ; preds = %while.end.i.i.i, %for.end %__y.0.lcssa25.i.i.i = phi ptr [ %__x.021.i.i.i, %while.end.i.i.i ], [ %add.ptr.i.i.i.i, %for.end ] - %_M_left.i3.i.i.i = getelementptr inbounds i8, ptr %31, i64 24 - %33 = load ptr, ptr %_M_left.i3.i.i.i, align 8 - %cmp.i4.i.i.i = icmp eq ptr %__y.0.lcssa25.i.i.i, %33 + %_M_left.i3.i.i.i = getelementptr inbounds i8, ptr %30, i64 24 + %32 = load ptr, ptr %_M_left.i3.i.i.i, align 8 + %cmp.i4.i.i.i = icmp eq ptr %__y.0.lcssa25.i.i.i, %32 br i1 %cmp.i4.i.i.i, label %if.then.i.i, label %if.else.i.i.i if.else.i.i.i: ; preds = %if.then.i.i.i @@ -17554,9 +17554,9 @@ if.else.i.i.i: ; preds = %if.then.i.i.i br label %if.end12.i.i.i if.end12.i.i.i: ; preds = %if.else.i.i.i, %while.end.i.i.i - %34 = phi i64 [ %.pre.i.i, %if.else.i.i.i ], [ %32, %while.end.i.i.i ] + %33 = phi i64 [ %.pre.i.i, %if.else.i.i.i ], [ %31, %while.end.i.i.i ] %__y.0.lcssa26.i.i.i = phi ptr [ %__y.0.lcssa25.i.i.i, %if.else.i.i.i ], [ %__x.021.i.i.i, %while.end.i.i.i ] - %cmp.i5.i.i.i = icmp ult i64 %34, %valueIndex.0.lcssa + %cmp.i5.i.i.i = icmp ult i64 %33, %valueIndex.0.lcssa br i1 %cmp.i5.i.i.i, label %if.then.i.i, label %_ZNSt3setImSt4lessImESaImEE6insertERKm.exit if.then.i.i: ; preds = %if.end12.i.i.i, %if.then.i.i.i @@ -17566,28 +17566,28 @@ if.then.i.i: ; preds = %if.end12.i.i.i, %if lor.rhs.i.i.i: ; preds = %if.then.i.i %_M_storage.i.i.i.i6.i.i = getelementptr inbounds i8, ptr %retval.sroa.4.0.i.ph.i.i, i64 32 - %35 = load i64, ptr %_M_storage.i.i.i.i6.i.i, align 8 - %cmp.i.i7.i.i = icmp ult i64 %valueIndex.0.lcssa, %35 + %34 = load i64, ptr %_M_storage.i.i.i.i6.i.i, align 8 + %cmp.i.i7.i.i = icmp ult i64 %valueIndex.0.lcssa, %34 br label %_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i _ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i: ; preds = %lor.rhs.i.i.i, %if.then.i.i - %36 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i7.i.i, %lor.rhs.i.i.i ] + %35 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i7.i.i, %lor.rhs.i.i.i ] %call5.i.i.i.i.i.i.i.i = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #24 %_M_storage.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i.i, i64 32 store i64 %valueIndex.0.lcssa, ptr %_M_storage.i.i.i.i.i.i.i, align 8 - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %36, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #22 - %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %31, i64 40 - %37 = load i64, ptr %_M_node_count.i.i.i, align 8 - %inc.i.i.i = add i64 %37, 1 + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %35, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #22 + %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %30, i64 40 + %36 = load i64, ptr %_M_node_count.i.i.i, align 8 + %inc.i.i.i = add i64 %36, 1 store i64 %inc.i.i.i, ptr %_M_node_count.i.i.i, align 8 br label %_ZNSt3setImSt4lessImESaImEE6insertERKm.exit _ZNSt3setImSt4lessImESaImEE6insertERKm.exit: ; preds = %if.end12.i.i.i, %_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i - %38 = getelementptr inbounds i8, ptr %this, i64 32 + %37 = getelementptr inbounds i8, ptr %this, i64 32 + %38 = load ptr, ptr %37, align 8 %39 = load ptr, ptr %38, align 8 - %40 = load ptr, ptr %39, align 8 - %tobool15 = trunc i8 %currentValue.0.lcssa to i1 - tail call void @_ZN8facebook5velox10FlatVectorIbE3setEib(ptr noundef nonnull align 8 dereferenceable(184) %40, i32 noundef %row, i1 noundef zeroext %tobool15) + %tobool15 = trunc nuw i8 %currentValue.0.lcssa to i1 + tail call void @_ZN8facebook5velox10FlatVectorIbE3setEib(ptr noundef nonnull align 8 dereferenceable(184) %39, i32 noundef %row, i1 noundef zeroext %tobool15) ret void } @@ -38292,6 +38292,7 @@ _ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit: ; preds = %entry, %if.th %and.i.i = and i64 %conv.i.i, 63 %9 = lshr i64 %8, %and.i.i %10 = trunc i64 %9 to i8 + %frombool = and i8 %10, 1 %11 = getelementptr inbounds i8, ptr %this, i64 16 %12 = load ptr, ptr %11, align 8 %_M_finish.i30 = getelementptr inbounds i8, ptr %12, i64 8 @@ -38310,7 +38311,7 @@ for.body.lr.ph: ; preds = %_ZNK8facebook5velox for.body: ; preds = %for.body.lr.ph, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 %indvars.iv = phi i64 [ 1, %for.body.lr.ph ], [ %indvars.iv.next, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %valueIndex.037 = phi i64 [ 0, %for.body.lr.ph ], [ %spec.select29, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] - %currentValue.036 = phi i8 [ %10, %for.body.lr.ph ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] + %currentValue.036 = phi i8 [ %frombool, %for.body.lr.ph ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %15 = load ptr, ptr %this, align 8 %16 = load ptr, ptr %15, align 8 %add.ptr.i.i = getelementptr inbounds %"class.facebook::velox::exec::LocalDecodedVector", ptr %16, i64 %indvars.iv @@ -38350,29 +38351,28 @@ _ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27: ; preds = %for.body, % %24 = lshr i64 %23, %and.i.i21 %25 = trunc i64 %24 to i8 %frombool6 = and i8 %25, 1 - %26 = and i8 %currentValue.036, 1 - %cmp10 = icmp samesign ugt i8 %frombool6, %26 + %cmp10 = icmp samesign ugt i8 %frombool6, %currentValue.036 %spec.select = select i1 %cmp10, i8 1, i8 %currentValue.036 %spec.select29 = select i1 %cmp10, i64 %indvars.iv, i64 %valueIndex.037 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %27 = load ptr, ptr %11, align 8 - %_M_finish.i = getelementptr inbounds i8, ptr %27, i64 8 - %28 = load ptr, ptr %_M_finish.i, align 8 - %29 = load ptr, ptr %27, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %28 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %29 to i64 + %26 = load ptr, ptr %11, align 8 + %_M_finish.i = getelementptr inbounds i8, ptr %26, i64 8 + %27 = load ptr, ptr %_M_finish.i, align 8 + %28 = load ptr, ptr %26, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %27 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %28 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 4 %cmp = icmp ugt i64 %sub.ptr.div.i, %indvars.iv.next br i1 %cmp, label %for.body, label %for.end, !llvm.loop !361 for.end: ; preds = %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit - %currentValue.0.lcssa = phi i8 [ %10, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] + %currentValue.0.lcssa = phi i8 [ %frombool, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] %valueIndex.0.lcssa = phi i64 [ 0, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit ], [ %spec.select29, %_ZNK8facebook5velox13DecodedVector7valueAtIbEET_i.exit27 ] - %30 = getelementptr inbounds i8, ptr %this, i64 24 - %31 = load ptr, ptr %30, align 8 - %_M_parent.i.i.i.i.i = getelementptr inbounds i8, ptr %31, i64 16 - %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %31, i64 8 + %29 = getelementptr inbounds i8, ptr %this, i64 24 + %30 = load ptr, ptr %29, align 8 + %_M_parent.i.i.i.i.i = getelementptr inbounds i8, ptr %30, i64 16 + %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %30, i64 8 %__x.019.i.i.i = load ptr, ptr %_M_parent.i.i.i.i.i, align 8 %cmp.not20.i.i.i = icmp eq ptr %__x.019.i.i.i, null br i1 %cmp.not20.i.i.i, label %if.then.i.i.i, label %while.body.i.i.i @@ -38380,8 +38380,8 @@ for.end: ; preds = %_ZNK8facebook5velox while.body.i.i.i: ; preds = %for.end, %while.body.i.i.i %__x.021.i.i.i = phi ptr [ %__x.0.i.i.i, %while.body.i.i.i ], [ %__x.019.i.i.i, %for.end ] %_M_storage.i.i.i.i.i = getelementptr inbounds i8, ptr %__x.021.i.i.i, i64 32 - %32 = load i64, ptr %_M_storage.i.i.i.i.i, align 8 - %cmp.i.i.i.i = icmp ult i64 %valueIndex.0.lcssa, %32 + %31 = load i64, ptr %_M_storage.i.i.i.i.i, align 8 + %cmp.i.i.i.i = icmp ult i64 %valueIndex.0.lcssa, %31 %cond.in.v.i.i.i = select i1 %cmp.i.i.i.i, i64 16, i64 24 %cond.in.i.i.i = getelementptr inbounds i8, ptr %__x.021.i.i.i, i64 %cond.in.v.i.i.i %__x.0.i.i.i = load ptr, ptr %cond.in.i.i.i, align 8 @@ -38393,9 +38393,9 @@ while.end.i.i.i: ; preds = %while.body.i.i.i if.then.i.i.i: ; preds = %while.end.i.i.i, %for.end %__y.0.lcssa25.i.i.i = phi ptr [ %__x.021.i.i.i, %while.end.i.i.i ], [ %add.ptr.i.i.i.i, %for.end ] - %_M_left.i3.i.i.i = getelementptr inbounds i8, ptr %31, i64 24 - %33 = load ptr, ptr %_M_left.i3.i.i.i, align 8 - %cmp.i4.i.i.i = icmp eq ptr %__y.0.lcssa25.i.i.i, %33 + %_M_left.i3.i.i.i = getelementptr inbounds i8, ptr %30, i64 24 + %32 = load ptr, ptr %_M_left.i3.i.i.i, align 8 + %cmp.i4.i.i.i = icmp eq ptr %__y.0.lcssa25.i.i.i, %32 br i1 %cmp.i4.i.i.i, label %if.then.i.i, label %if.else.i.i.i if.else.i.i.i: ; preds = %if.then.i.i.i @@ -38405,9 +38405,9 @@ if.else.i.i.i: ; preds = %if.then.i.i.i br label %if.end12.i.i.i if.end12.i.i.i: ; preds = %if.else.i.i.i, %while.end.i.i.i - %34 = phi i64 [ %.pre.i.i, %if.else.i.i.i ], [ %32, %while.end.i.i.i ] + %33 = phi i64 [ %.pre.i.i, %if.else.i.i.i ], [ %31, %while.end.i.i.i ] %__y.0.lcssa26.i.i.i = phi ptr [ %__y.0.lcssa25.i.i.i, %if.else.i.i.i ], [ %__x.021.i.i.i, %while.end.i.i.i ] - %cmp.i5.i.i.i = icmp ult i64 %34, %valueIndex.0.lcssa + %cmp.i5.i.i.i = icmp ult i64 %33, %valueIndex.0.lcssa br i1 %cmp.i5.i.i.i, label %if.then.i.i, label %_ZNSt3setImSt4lessImESaImEE6insertERKm.exit if.then.i.i: ; preds = %if.end12.i.i.i, %if.then.i.i.i @@ -38417,28 +38417,28 @@ if.then.i.i: ; preds = %if.end12.i.i.i, %if lor.rhs.i.i.i: ; preds = %if.then.i.i %_M_storage.i.i.i.i6.i.i = getelementptr inbounds i8, ptr %retval.sroa.4.0.i.ph.i.i, i64 32 - %35 = load i64, ptr %_M_storage.i.i.i.i6.i.i, align 8 - %cmp.i.i7.i.i = icmp ult i64 %valueIndex.0.lcssa, %35 + %34 = load i64, ptr %_M_storage.i.i.i.i6.i.i, align 8 + %cmp.i.i7.i.i = icmp ult i64 %valueIndex.0.lcssa, %34 br label %_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i _ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i: ; preds = %lor.rhs.i.i.i, %if.then.i.i - %36 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i7.i.i, %lor.rhs.i.i.i ] + %35 = phi i1 [ true, %if.then.i.i ], [ %cmp.i.i7.i.i, %lor.rhs.i.i.i ] %call5.i.i.i.i.i.i.i.i = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #24 %_M_storage.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i.i.i.i, i64 32 store i64 %valueIndex.0.lcssa, ptr %_M_storage.i.i.i.i.i.i.i, align 8 - tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %36, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #22 - %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %31, i64 40 - %37 = load i64, ptr %_M_node_count.i.i.i, align 8 - %inc.i.i.i = add i64 %37, 1 + tail call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %35, ptr noundef nonnull %call5.i.i.i.i.i.i.i.i, ptr noundef nonnull %retval.sroa.4.0.i.ph.i.i, ptr noundef nonnull align 8 dereferenceable(32) %add.ptr.i.i.i.i) #22 + %_M_node_count.i.i.i = getelementptr inbounds i8, ptr %30, i64 40 + %36 = load i64, ptr %_M_node_count.i.i.i, align 8 + %inc.i.i.i = add i64 %36, 1 store i64 %inc.i.i.i, ptr %_M_node_count.i.i.i, align 8 br label %_ZNSt3setImSt4lessImESaImEE6insertERKm.exit _ZNSt3setImSt4lessImESaImEE6insertERKm.exit: ; preds = %if.end12.i.i.i, %_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE10_M_insert_IRKmNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorImEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i - %38 = getelementptr inbounds i8, ptr %this, i64 32 + %37 = getelementptr inbounds i8, ptr %this, i64 32 + %38 = load ptr, ptr %37, align 8 %39 = load ptr, ptr %38, align 8 - %40 = load ptr, ptr %39, align 8 - %tobool15 = trunc i8 %currentValue.0.lcssa to i1 - tail call void @_ZN8facebook5velox10FlatVectorIbE3setEib(ptr noundef nonnull align 8 dereferenceable(184) %40, i32 noundef %row, i1 noundef zeroext %tobool15) + %tobool15 = trunc nuw i8 %currentValue.0.lcssa to i1 + tail call void @_ZN8facebook5velox10FlatVectorIbE3setEib(ptr noundef nonnull align 8 dereferenceable(184) %39, i32 noundef %row, i1 noundef zeroext %tobool15) ret void } diff --git a/bench/wireshark/optimized/packet-bacapp.c.ll b/bench/wireshark/optimized/packet-bacapp.c.ll index e7528b3f135..91152b9b0ed 100644 --- a/bench/wireshark/optimized/packet-bacapp.c.ll +++ b/bench/wireshark/optimized/packet-bacapp.c.ll @@ -7213,29 +7213,29 @@ define internal fastcc i32 @fBitStringTagVSBase(ptr noundef nonnull %0, ptr noun %22 = tail call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %21) #7 %23 = icmp eq i32 %.08398, %19 %spec.select = select i1 %23, i32 %17, i32 %.08697 - %24 = icmp slt i32 %spec.select, 8 - br i1 %24, label %.lr.ph, label %._crit_edge + %24 = sub nsw i32 8, %spec.select + %25 = icmp samesign ult i32 %spec.select, 8 + br i1 %25, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %20 - %25 = sub nsw i32 8, %spec.select %26 = zext i8 %22 to i32 %27 = shl i32 %.08398, 3 br label %28 28: ; preds = %.lr.ph, %28 %.08496 = phi i32 [ 0, %.lr.ph ], [ %37, %28 ] - %29 = sub nsw i32 7, %.08496 - %30 = shl nuw i32 1, %29 + %29 = sub nuw nsw i32 7, %.08496 + %30 = shl nuw nsw i32 1, %29 %31 = and i32 %30, %26 %.not94 = icmp eq i32 %31, 0 %32 = select i1 %.not94, i8 70, i8 84 - %33 = add i32 %.08496, %27 + %33 = add nuw nsw i32 %.08496, %27 %34 = tail call i32 @llvm.umin.i32(i32 %33, i32 255) %35 = zext nneg i32 %34 to i64 %36 = getelementptr [257 x i8], ptr %11, i64 0, i64 %35 store i8 %32, ptr %36, align 1 %37 = add nuw nsw i32 %.08496, 1 - %exitcond.not = icmp eq i32 %37, %25 + %exitcond.not = icmp eq i32 %37, %24 br i1 %exitcond.not, label %._crit_edge, label %28, !llvm.loop !28 ._crit_edge: ; preds = %28, %20 @@ -7272,41 +7272,41 @@ define internal fastcc i32 @fBitStringTagVSBase(ptr noundef nonnull %0, ptr noun br i1 %.not91, label %.lr.ph109.split.us, label %.lr.ph109.split .lr.ph109.split.us: ; preds = %.lr.ph109, %._crit_edge105.split.us.us - %.1107.us = phi i32 [ %55, %._crit_edge105.split.us.us ], [ 0, %.lr.ph109 ] + %.1107.us = phi i32 [ %56, %._crit_edge105.split.us.us ], [ 0, %.lr.ph109 ] %.2106.us = phi i32 [ %spec.select95.us, %._crit_edge105.split.us.us ], [ 0, %.lr.ph109 ] %51 = add i32 %49, %.1107.us %52 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %51) #7 %53 = icmp eq i32 %.1107.us, %50 %spec.select95.us = select i1 %53, i32 %17, i32 %.2106.us - %54 = icmp slt i32 %spec.select95.us, 8 - br i1 %54, label %.lr.ph104.us, label %._crit_edge105.split.us.us + %54 = sub nsw i32 8, %spec.select95.us + %55 = icmp samesign ult i32 %spec.select95.us, 8 + br i1 %55, label %.lr.ph104.us, label %._crit_edge105.split.us.us ._crit_edge105.split.us.us: ; preds = %59, %.lr.ph109.split.us - %55 = add nuw i32 %.1107.us, 1 - %exitcond120.not = icmp eq i32 %55, %14 - br i1 %exitcond120.not, label %._crit_edge110, label %.lr.ph109.split.us, !llvm.loop !30 + %56 = add nuw i32 %.1107.us, 1 + %exitcond118.not = icmp eq i32 %56, %14 + br i1 %exitcond118.not, label %._crit_edge110, label %.lr.ph109.split.us, !llvm.loop !30 .lr.ph104.us: ; preds = %.lr.ph109.split.us - %56 = sub nsw i32 8, %spec.select95.us %57 = zext i8 %52 to i32 %58 = shl i32 %.1107.us, 3 br label %59 59: ; preds = %59, %.lr.ph104.us %.185102.us.us = phi i32 [ 0, %.lr.ph104.us ], [ %68, %59 ] - %60 = sub nsw i32 7, %.185102.us.us - %61 = shl nuw i32 1, %60 + %60 = sub nuw nsw i32 7, %.185102.us.us + %61 = shl nuw nsw i32 1, %60 %62 = and i32 %61, %57 %.not92.us.us = icmp eq i32 %62, 0 %63 = select i1 %.not92.us.us, i8 48, i8 49 - %64 = add i32 %.185102.us.us, %58 + %64 = add nuw nsw i32 %.185102.us.us, %58 %65 = call i32 @llvm.umin.i32(i32 %64, i32 255) %66 = zext nneg i32 %65 to i64 %67 = getelementptr [257 x i8], ptr %11, i64 0, i64 %66 store i8 %63, ptr %67, align 1 %68 = add nuw nsw i32 %.185102.us.us, 1 - %exitcond119.not = icmp eq i32 %68, %56 - br i1 %exitcond119.not, label %._crit_edge105.split.us.us, label %59, !llvm.loop !31 + %exitcond117.not = icmp eq i32 %68, %54 + br i1 %exitcond117.not, label %._crit_edge105.split.us.us, label %59, !llvm.loop !31 .lr.ph109.split: ; preds = %.lr.ph109, %._crit_edge105.split %.1107 = phi i32 [ %87, %._crit_edge105.split ], [ 0, %.lr.ph109 ] @@ -7315,11 +7315,11 @@ define internal fastcc i32 @fBitStringTagVSBase(ptr noundef nonnull %0, ptr noun %70 = call zeroext i8 @tvb_get_guint8(ptr noundef nonnull %0, i32 noundef %69) #7 %71 = icmp eq i32 %.1107, %50 %spec.select95 = select i1 %71, i32 %17, i32 %.2106 - %72 = icmp slt i32 %spec.select95, 8 - br i1 %72, label %.lr.ph104, label %._crit_edge105.split + %72 = sub nsw i32 8, %spec.select95 + %73 = icmp samesign ult i32 %spec.select95, 8 + br i1 %73, label %.lr.ph104, label %._crit_edge105.split .lr.ph104: ; preds = %.lr.ph109.split - %73 = sub nsw i32 8, %spec.select95 %74 = zext i8 %70 to i32 %75 = shl i32 %.1107, 3 br label %76 @@ -7327,23 +7327,23 @@ define internal fastcc i32 @fBitStringTagVSBase(ptr noundef nonnull %0, ptr noun 76: ; preds = %.lr.ph104, %76 %.185102 = phi i32 [ 0, %.lr.ph104 ], [ %86, %76 ] %77 = load i32, ptr @hf_bacapp_bit, align 4 - %78 = sub nsw i32 7, %.185102 - %79 = shl nuw i32 1, %78 + %78 = sub nuw nsw i32 7, %.185102 + %79 = shl nuw nsw i32 1, %78 %80 = and i32 %79, %74 %81 = zext nneg i32 %80 to i64 - %82 = add i32 %.185102, %75 + %82 = add nuw nsw i32 %.185102, %75 %83 = call ptr @val_to_str(i32 noundef %82, ptr noundef nonnull %5, ptr noundef nonnull @ASHRAE_Reserved_Fmt) #7 %.not93 = icmp eq i32 %80, 0 %84 = select i1 %.not93, ptr @.str.2567, ptr @.str.2568 %85 = call ptr (ptr, i32, ptr, i32, i32, i64, ptr, ...) @proto_tree_add_boolean_format(ptr noundef %.0, i32 noundef %77, ptr noundef nonnull %0, i32 noundef %69, i32 noundef 1, i64 noundef %81, ptr noundef nonnull @.str.2583, ptr noundef %83, ptr noundef nonnull %84) #7 %86 = add nuw nsw i32 %.185102, 1 - %exitcond116.not = icmp eq i32 %86, %73 - br i1 %exitcond116.not, label %._crit_edge105.split, label %76, !llvm.loop !31 + %exitcond115.not = icmp eq i32 %86, %72 + br i1 %exitcond115.not, label %._crit_edge105.split, label %76, !llvm.loop !31 ._crit_edge105.split: ; preds = %76, %.lr.ph109.split %87 = add nuw i32 %.1107, 1 - %exitcond117.not = icmp eq i32 %87, %14 - br i1 %exitcond117.not, label %._crit_edge110, label %.lr.ph109.split, !llvm.loop !30 + %exitcond116.not = icmp eq i32 %87, %14 + br i1 %exitcond116.not, label %._crit_edge110, label %.lr.ph109.split, !llvm.loop !30 ._crit_edge110: ; preds = %._crit_edge105.split, %._crit_edge105.split.us.us, %45 %88 = icmp eq ptr %5, null @@ -20906,15 +20906,15 @@ declare i32 @stats_tree_create_node(ptr noundef, ptr noundef, i32 noundef, i32 n ; 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.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 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #5 + 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 nocallback nofree nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/wireshark/optimized/packet-nat-pmp.c.ll b/bench/wireshark/optimized/packet-nat-pmp.c.ll index 526dd99e846..4e2d71d3aca 100644 --- a/bench/wireshark/optimized/packet-nat-pmp.c.ll +++ b/bench/wireshark/optimized/packet-nat-pmp.c.ll @@ -392,7 +392,7 @@ define internal i32 @dissect_portcontrol(ptr noundef %0, ptr noundef %1, ptr nou %10 = alloca i32, align 4 %11 = alloca i32, align 4 %12 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 0) #3 - switch i8 %12, label %279 [ + switch i8 %12, label %278 [ i8 0, label %13 i8 1, label %15 i8 2, label %15 @@ -400,7 +400,7 @@ define internal i32 @dissect_portcontrol(ptr noundef %0, ptr noundef %1, ptr nou 13: ; preds = %4 %14 = tail call i32 @dissect_nat_pmp(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr poison) - br label %279 + br label %278 15: ; preds = %4, %4 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) @@ -612,12 +612,12 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 %.1307.i = phi i32 [ 24, %134 ], [ %133, %109 ], [ %93, %94 ], [ %93, %99 ], [ 24, %75 ], [ 24, %75 ] %138 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %.1307.i) #3 %139 = icmp sgt i32 %138, 0 - br i1 %139, label %140, label %257 + br i1 %139, label %140, label %256 140: ; preds = %137 %141 = call ptr @try_val_to_str(i32 noundef %27, ptr noundef nonnull @pcp_ropcode_vals) #3 %.not316.i = icmp eq ptr %141, null - br i1 %.not316.i, label %257, label %142 + br i1 %.not316.i, label %256, label %142 142: ; preds = %140 %143 = load i32, ptr @hf_options, align 4 @@ -626,41 +626,41 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 %146 = call ptr @proto_item_add_subtree(ptr noundef %144, i32 noundef %145) #3 %147 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %.1307.i) #3 %148 = icmp sgt i32 %147, 0 - br i1 %148, label %.lr.ph332.i, label %._crit_edge.i + br i1 %148, label %.lr.ph333.i, label %._crit_edge.i -.lr.ph332.i: ; preds = %142, %253 - %.6331.i = phi i32 [ %.7.i, %253 ], [ %.1307.i, %142 ] - %.0308330.i = phi i32 [ %spec.select.i, %253 ], [ 0, %142 ] +.lr.ph333.i: ; preds = %142, %252 + %.6332.i = phi i32 [ %.7.i, %252 ], [ %.1307.i, %142 ] + %.0308331.i = phi i32 [ %spec.select.i, %252 ], [ 0, %142 ] %149 = load i32, ptr @hf_option, align 4 - %150 = call ptr @proto_tree_add_item(ptr noundef %146, i32 noundef %149, ptr noundef %0, i32 noundef %.6331.i, i32 noundef 1, i32 noundef 0) #3 + %150 = call ptr @proto_tree_add_item(ptr noundef %146, i32 noundef %149, ptr noundef %0, i32 noundef %.6332.i, i32 noundef 1, i32 noundef 0) #3 %151 = load i32, ptr @ett_suboption, align 4 %152 = call ptr @proto_item_add_subtree(ptr noundef %150, i32 noundef %151) #3 %153 = load i32, ptr @hf_option_code, align 4 - %154 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %153, ptr noundef %0, i32 noundef %.6331.i, i32 noundef 1, i32 noundef 0) #3 - %155 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.6331.i) #3 + %154 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %153, ptr noundef %0, i32 noundef %.6332.i, i32 noundef 1, i32 noundef 0) #3 + %155 = call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef %.6332.i) #3 %156 = zext i8 %155 to i32 %157 = call ptr @val_to_str(i32 noundef %156, ptr noundef nonnull @pcp_option_vals, ptr noundef nonnull @.str.156) #3 call void (ptr, ptr, ...) @proto_item_append_text(ptr noundef %150, ptr noundef nonnull @.str.155, ptr noundef %157) #3 - %158 = add i32 %.6331.i, 1 + %158 = add i32 %.6332.i, 1 %159 = load i32, ptr @hf_option_reserved, align 4 %160 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %159, ptr noundef %0, i32 noundef %158, i32 noundef 1, i32 noundef 0) #3 - %161 = add i32 %.6331.i, 2 + %161 = add i32 %.6332.i, 2 %162 = load i32, ptr @hf_option_length, align 4 %163 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %162, ptr noundef %0, i32 noundef %161, i32 noundef 2, i32 noundef 0) #3 %164 = call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %161) #3 - %165 = add i32 %.6331.i, 4 + %165 = add i32 %.6332.i, 4 %166 = zext i16 %164 to i32 %167 = and i32 %166, 3 %.not317.i = icmp eq i32 %167, 0 %168 = sub nuw nsw i32 4, %167 - %spec.select.i = select i1 %.not317.i, i32 %.0308330.i, i32 %168 + %spec.select.i = select i1 %.not317.i, i32 %.0308331.i, i32 %168 %169 = add nuw nsw i32 %166, 4 %170 = add nuw nsw i32 %169, %spec.select.i call void @proto_item_set_len(ptr noundef %150, i32 noundef %170) #3 %.not318.i = icmp eq i16 %164, 0 br i1 %.not318.i, label %.loopexit.i, label %171 -171: ; preds = %.lr.ph332.i +171: ; preds = %.lr.ph333.i switch i8 %155, label %245 [ i8 1, label %172 i8 2, label %.loopexit.i @@ -679,13 +679,13 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 %176 = load i32, ptr @hf_option_filter_reserved, align 4 %177 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %176, ptr noundef %0, i32 noundef %165, i32 noundef 1, i32 noundef 0) #3 %178 = load i32, ptr @hf_option_filter_prefix_length, align 4 - %179 = add i32 %.6331.i, 5 + %179 = add i32 %.6332.i, 5 %180 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %178, ptr noundef %0, i32 noundef %179, i32 noundef 1, i32 noundef 0) #3 %181 = load i32, ptr @hf_option_filter_remote_peer_port, align 4 - %182 = add i32 %.6331.i, 6 + %182 = add i32 %.6332.i, 6 %183 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %181, ptr noundef %0, i32 noundef %182, i32 noundef 2, i32 noundef 0) #3 %184 = load i32, ptr @hf_option_filter_remote_peer_ip, align 4 - %185 = add i32 %.6331.i, 8 + %185 = add i32 %.6332.i, 8 %186 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %184, ptr noundef %0, i32 noundef %185, i32 noundef 16, i32 noundef 0) #3 br label %.loopexit.i @@ -711,7 +711,7 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 199: ; preds = %196 %200 = load i32, ptr @hf_option_p64_prefix64, align 4 - %201 = add i32 %.6331.i, 6 + %201 = add i32 %.6332.i, 6 %202 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %200, ptr noundef %0, i32 noundef %201, i32 noundef %197, i32 noundef 0) #3 %203 = load i32, ptr %10, align 4 %204 = load i32, ptr @hf_option_p64_suffix, align 4 @@ -734,32 +734,32 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 %215 = add i32 %.0305.i, %165 %216 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %152, i32 noundef %214, ptr noundef %0, i32 noundef %215, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %11) #3 %217 = add i32 %.0305.i, 2 - %invariant.op.i = add i32 %.6331.i, 6 + %invariant.op.i = add i32 %.6332.i, 6 %218 = load i32, ptr %11, align 4 - %.not319326.i = icmp eq i32 %218, 0 + %.not319327.i = icmp eq i32 %218, 0 %219 = sub i32 %166, %217 %220 = icmp slt i32 %219, 2 - %or.cond322327.i = or i1 %220, %.not319326.i - br i1 %or.cond322327.i, label %.loopexit.i, label %.lr.ph.i.preheader + %or.cond322328.i = or i1 %220, %.not319327.i + br i1 %or.cond322328.i, label %.loopexit.i, label %.lr.ph.i.preheader .lr.ph.i.preheader: ; preds = %213 %.neg10 = add nsw i32 %166, -2 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %226 - %.1328.i = phi i32 [ %229, %226 ], [ %217, %.lr.ph.i.preheader ] + %.1329.i = phi i32 [ %229, %226 ], [ %217, %.lr.ph.i.preheader ] %221 = load i32, ptr @hf_option_p64_ipv4_prefix_length, align 4 - %222 = add i32 %.1328.i, %165 + %222 = add i32 %.1329.i, %165 %223 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %221, ptr noundef %0, i32 noundef %222, i32 noundef 2, i32 noundef 0) #3 - %224 = sub i32 %.neg10, %.1328.i + %224 = sub i32 %.neg10, %.1329.i %225 = icmp slt i32 %224, 4 br i1 %225, label %.loopexit.i, label %226 226: ; preds = %.lr.ph.i %227 = load i32, ptr @hf_option_p64_ipv4_address, align 4 - %.reass.i = add i32 %invariant.op.i, %.1328.i + %.reass.i = add i32 %invariant.op.i, %.1329.i %228 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %227, ptr noundef %0, i32 noundef %.reass.i, i32 noundef 4, i32 noundef 0) #3 - %229 = add i32 %.1328.i, 6 + %229 = add i32 %.1329.i, 6 %230 = load i32, ptr %11, align 4 %231 = add i32 %230, -1 store i32 %231, ptr %11, align 4 @@ -772,13 +772,13 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 234: ; preds = %171 %235 = load i32, ptr @hf_option_portset_size, align 4 %236 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %152, i32 noundef %235, ptr noundef %0, i32 noundef %165, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %9) #3 - %237 = add i32 %.6331.i, 6 + %237 = add i32 %.6332.i, 6 %hf_option_portset_first_suggested_port.val.i = load i32, ptr @hf_option_portset_first_suggested_port, align 4 %hf_option_portset_first_assigned_port.val.i = load i32, ptr @hf_option_portset_first_assigned_port, align 4 %238 = select i1 %.not.i, i32 %hf_option_portset_first_suggested_port.val.i, i32 %hf_option_portset_first_assigned_port.val.i %239 = call ptr @proto_tree_add_item_ret_uint(ptr noundef %152, i32 noundef %238, ptr noundef %0, i32 noundef %237, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %8) #3 %240 = load i32, ptr @hf_option_portset_reserved, align 4 - %241 = add i32 %.6331.i, 8 + %241 = add i32 %.6332.i, 8 %242 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %240, ptr noundef %0, i32 noundef %241, i32 noundef 1, i32 noundef 0) #3 %243 = load i32, ptr @hf_option_portset_parity, align 4 %244 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %243, ptr noundef %0, i32 noundef %241, i32 noundef 1, i32 noundef 0) #3 @@ -788,65 +788,65 @@ proto_item_set_hidden.exit325.i: ; preds = %56, %53, %50 %246 = call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %144, ptr noundef nonnull @ei_pcp_option_unknown, ptr noundef nonnull @.str.156, i32 noundef %156) #3 br label %.loopexit.i -.loopexit.i: ; preds = %226, %.lr.ph.i, %245, %234, %213, %211, %192, %190, %187, %175, %172, %171, %.lr.ph332.i +.loopexit.i: ; preds = %226, %.lr.ph.i, %245, %234, %213, %211, %192, %190, %187, %175, %172, %171, %.lr.ph333.i %247 = add i32 %165, %166 - %248 = icmp sgt i32 %spec.select.i, 0 - br i1 %248, label %249, label %253 - -249: ; preds = %.loopexit.i - %250 = load i32, ptr @hf_option_padding, align 4 - %251 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %250, ptr noundef %0, i32 noundef %247, i32 noundef %spec.select.i, i32 noundef 0) #3 - %252 = add i32 %spec.select.i, %247 - br label %253 - -253: ; preds = %249, %.loopexit.i - %.7.i = phi i32 [ %252, %249 ], [ %247, %.loopexit.i ] - %254 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %.7.i) #3 - %255 = icmp sgt i32 %254, 0 - br i1 %255, label %.lr.ph332.i, label %._crit_edge.i, !llvm.loop !6 - -._crit_edge.i: ; preds = %253, %142 - %.6.lcssa.i = phi i32 [ %.1307.i, %142 ], [ %.7.i, %253 ] - %256 = sub i32 %.6.lcssa.i, %.1307.i - call void @proto_item_set_len(ptr noundef %144, i32 noundef %256) #3 - br label %257 - -257: ; preds = %._crit_edge.i, %140, %137 + %.not326.i = icmp eq i32 %spec.select.i, 0 + br i1 %.not326.i, label %252, label %248 + +248: ; preds = %.loopexit.i + %249 = load i32, ptr @hf_option_padding, align 4 + %250 = call ptr @proto_tree_add_item(ptr noundef %152, i32 noundef %249, ptr noundef %0, i32 noundef %247, i32 noundef %spec.select.i, i32 noundef 0) #3 + %251 = add i32 %spec.select.i, %247 + br label %252 + +252: ; preds = %248, %.loopexit.i + %.7.i = phi i32 [ %251, %248 ], [ %247, %.loopexit.i ] + %253 = call i32 @tvb_reported_length_remaining(ptr noundef %0, i32 noundef %.7.i) #3 + %254 = icmp sgt i32 %253, 0 + br i1 %254, label %.lr.ph333.i, label %._crit_edge.i, !llvm.loop !6 + +._crit_edge.i: ; preds = %252, %142 + %.6.lcssa.i = phi i32 [ %.1307.i, %142 ], [ %.7.i, %252 ] + %255 = sub i32 %.6.lcssa.i, %.1307.i + call void @proto_item_set_len(ptr noundef %144, i32 noundef %255) #3 + br label %256 + +256: ; preds = %._crit_edge.i, %140, %137 %.5.i = phi i32 [ %.6.lcssa.i, %._crit_edge.i ], [ %.1307.i, %140 ], [ %.1307.i, %137 ] - %258 = load ptr, ptr %5, align 8 - %259 = add i32 %.5.i, -24 - call void @proto_item_set_len(ptr noundef %258, i32 noundef %259) #3 - %260 = and i8 %26, 127 - %261 = icmp eq i8 %260, 1 - %262 = load i32, ptr %9, align 4 - %263 = icmp ne i32 %262, 0 - %or.cond.i = select i1 %261, i1 %263, i1 false - br i1 %or.cond.i, label %264, label %272 - -264: ; preds = %257 - %265 = load ptr, ptr %17, align 8 - %266 = load i32, ptr %7, align 4 - %267 = add i32 %266, %262 - %268 = load i32, ptr %8, align 4 - %269 = add i32 %268, %262 - %270 = load i32, ptr %6, align 4 - %271 = call ptr @val_to_str(i32 noundef %270, ptr noundef nonnull @pcp_protocol_vals, ptr noundef nonnull @.str.158) #3 - call void (ptr, i32, ptr, ...) @col_add_fstr(ptr noundef %265, i32 noundef 25, ptr noundef nonnull @.str.157, ptr noundef %28, i32 noundef %266, i32 noundef %267, i32 noundef %268, i32 noundef %269, ptr noundef %271) #3 + %257 = load ptr, ptr %5, align 8 + %258 = add i32 %.5.i, -24 + call void @proto_item_set_len(ptr noundef %257, i32 noundef %258) #3 + %259 = and i8 %26, 127 + %260 = icmp eq i8 %259, 1 + %261 = load i32, ptr %9, align 4 + %262 = icmp ne i32 %261, 0 + %or.cond.i = select i1 %260, i1 %262, i1 false + br i1 %or.cond.i, label %263, label %271 + +263: ; preds = %256 + %264 = load ptr, ptr %17, align 8 + %265 = load i32, ptr %7, align 4 + %266 = add i32 %265, %261 + %267 = load i32, ptr %8, align 4 + %268 = add i32 %267, %261 + %269 = load i32, ptr %6, align 4 + %270 = call ptr @val_to_str(i32 noundef %269, ptr noundef nonnull @pcp_protocol_vals, ptr noundef nonnull @.str.158) #3 + call void (ptr, i32, ptr, ...) @col_add_fstr(ptr noundef %264, i32 noundef 25, ptr noundef nonnull @.str.157, ptr noundef %28, i32 noundef %265, i32 noundef %266, i32 noundef %267, i32 noundef %268, ptr noundef %270) #3 br label %dissect_portcontrol_pdu.exit -272: ; preds = %257 - br i1 %261, label %273, label %dissect_portcontrol_pdu.exit +271: ; preds = %256 + br i1 %260, label %272, label %dissect_portcontrol_pdu.exit -273: ; preds = %272 - %274 = load ptr, ptr %17, align 8 - %275 = load i32, ptr %7, align 4 - %276 = load i32, ptr %8, align 4 - %277 = load i32, ptr %6, align 4 - %278 = call ptr @val_to_str(i32 noundef %277, ptr noundef nonnull @pcp_protocol_vals, ptr noundef nonnull @.str.158) #3 - call void (ptr, i32, ptr, ...) @col_add_fstr(ptr noundef %274, i32 noundef 25, ptr noundef nonnull @.str.159, ptr noundef %28, i32 noundef %275, i32 noundef %276, ptr noundef %278) #3 +272: ; preds = %271 + %273 = load ptr, ptr %17, align 8 + %274 = load i32, ptr %7, align 4 + %275 = load i32, ptr %8, align 4 + %276 = load i32, ptr %6, align 4 + %277 = call ptr @val_to_str(i32 noundef %276, ptr noundef nonnull @pcp_protocol_vals, ptr noundef nonnull @.str.158) #3 + call void (ptr, i32, ptr, ...) @col_add_fstr(ptr noundef %273, i32 noundef 25, ptr noundef nonnull @.str.159, ptr noundef %28, i32 noundef %274, i32 noundef %275, ptr noundef %277) #3 br label %dissect_portcontrol_pdu.exit -dissect_portcontrol_pdu.exit: ; preds = %264, %272, %273 +dissect_portcontrol_pdu.exit: ; preds = %263, %271, %272 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) @@ -854,9 +854,9 @@ dissect_portcontrol_pdu.exit: ; preds = %264, %272, %273 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) - br label %279 + br label %278 -279: ; preds = %4, %dissect_portcontrol_pdu.exit, %13 +278: ; preds = %4, %dissect_portcontrol_pdu.exit, %13 %.0 = phi i32 [ %.5.i, %dissect_portcontrol_pdu.exit ], [ %14, %13 ], [ 0, %4 ] ret i32 %.0 } 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/z3/optimized/drat_frontend.cpp.ll b/bench/z3/optimized/drat_frontend.cpp.ll index afd35c9cbcc..ee7982720f4 100644 --- a/bench/z3/optimized/drat_frontend.cpp.ll +++ b/bench/z3/optimized/drat_frontend.cpp.ll @@ -325,7 +325,6 @@ for.body.lr.ph: ; preds = %invoke.cont18 br label %for.body for.body: ; preds = %for.body.lr.ph, %call.i.noexc - %__begin1.sroa.3.076 = phi i8 [ 0, %for.body.lr.ph ], [ %spec.select, %call.i.noexc ] store ptr %m_record.i, ptr %ref.tmp24, align 8 store ptr %write_theory, ptr %th3.i, align 8 %call27 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6dimacslsERSoRKNS_7drat_ppE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp24) @@ -505,172 +504,169 @@ _ZN10statisticsD2Ev.exit: ; preds = %_ZN7svectorISt4pair to label %call.i.noexc unwind label %lpad16.loopexit.split-lp.loopexit call.i.noexc: ; preds = %_ZN10statisticsD2Ev.exit - %spec.select = select i1 %call.i27, i8 %__begin1.sroa.3.076, i8 1 - %28 = and i8 %spec.select, 1 - %cmp.i.not.not = icmp eq i8 %28, 0 - br i1 %cmp.i.not.not, label %for.body, label %cleanup + br i1 %call.i27, label %for.body, label %cleanup lpad36: ; preds = %invoke.cont37, %invoke.cont38, %invoke.cont35 - %29 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup call void @_ZN10statisticsD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %st) #17 br label %ehcleanup cleanup: ; preds = %call.i.noexc, %invoke.cont18, %if.then %drup_units.i = getelementptr inbounds i8, ptr %checker, i64 16 - %30 = load ptr, ptr %drup_units.i, align 8 - %tobool.not.i.i.i.i28 = icmp eq ptr %30, null + %29 = load ptr, ptr %drup_units.i, align 8 + %tobool.not.i.i.i.i28 = icmp eq ptr %29, null br i1 %tobool.not.i.i.i.i28, label %_ZN7svectorIN3sat7literalEjED2Ev.exit.i, label %if.then.i.i.i.i29 if.then.i.i.i.i29: ; preds = %cleanup - %add.ptr.i.i.i.i.i30 = getelementptr inbounds i8, ptr %30, i64 -8 + %add.ptr.i.i.i.i.i30 = getelementptr inbounds i8, ptr %29, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i30) to label %_ZN7svectorIN3sat7literalEjED2Ev.exit.i unwind label %terminate.lpad.i.i.i31 terminate.lpad.i.i.i31: ; preds = %if.then.i.i.i.i29 - %31 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } catch ptr null - %32 = extractvalue { ptr, i32 } %31, 0 - call void @__clang_call_terminate(ptr %32) #16 + %31 = extractvalue { ptr, i32 } %30, 0 + call void @__clang_call_terminate(ptr %31) #16 unreachable _ZN7svectorIN3sat7literalEjED2Ev.exit.i: ; preds = %if.then.i.i.i.i29, %cleanup - %33 = load ptr, ptr %m_units.i, align 8 - %tobool.not.i.i.i1.i33 = icmp eq ptr %33, null + %32 = load ptr, ptr %m_units.i, align 8 + %tobool.not.i.i.i1.i33 = icmp eq ptr %32, null br i1 %tobool.not.i.i.i1.i33, label %_ZN12drup_checkerD2Ev.exit, label %if.then.i.i.i2.i34 if.then.i.i.i2.i34: ; preds = %_ZN7svectorIN3sat7literalEjED2Ev.exit.i - %add.ptr.i.i.i.i3.i35 = getelementptr inbounds i8, ptr %33, i64 -8 + %add.ptr.i.i.i.i3.i35 = getelementptr inbounds i8, ptr %32, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i3.i35) to label %_ZN12drup_checkerD2Ev.exit unwind label %terminate.lpad.i.i4.i36 terminate.lpad.i.i4.i36: ; preds = %if.then.i.i.i2.i34 - %34 = landingpad { ptr, i32 } + %33 = landingpad { ptr, i32 } catch ptr null - %35 = extractvalue { ptr, i32 } %34, 0 - call void @__clang_call_terminate(ptr %35) #16 + %34 = extractvalue { ptr, i32 } %33, 0 + call void @__clang_call_terminate(ptr %34) #16 unreachable _ZN12drup_checkerD2Ev.exit: ; preds = %_ZN7svectorIN3sat7literalEjED2Ev.exit.i, %if.then.i.i.i2.i34 call void @_ZN3sat4dratD1Ev(ptr noundef nonnull align 8 dereferenceable(664) %drat_checker) #17 call void @_ZN3sat6solverD1Ev(ptr noundef nonnull align 8 dereferenceable(4408) %solver) #17 %m_children.i = getelementptr inbounds i8, ptr %lim, i64 32 - %36 = load ptr, ptr %m_children.i, align 8 - %tobool.not.i.i.i.i37 = icmp eq ptr %36, null + %35 = load ptr, ptr %m_children.i, align 8 + %tobool.not.i.i.i.i37 = icmp eq ptr %35, null br i1 %tobool.not.i.i.i.i37, label %_ZN10ptr_vectorI8reslimitED2Ev.exit.i, label %if.then.i.i.i.i38 if.then.i.i.i.i38: ; preds = %_ZN12drup_checkerD2Ev.exit - %add.ptr.i.i.i.i.i39 = getelementptr inbounds i8, ptr %36, i64 -8 + %add.ptr.i.i.i.i.i39 = getelementptr inbounds i8, ptr %35, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i39) to label %_ZN10ptr_vectorI8reslimitED2Ev.exit.i unwind label %terminate.lpad.i.i.i40 terminate.lpad.i.i.i40: ; preds = %if.then.i.i.i.i38 - %37 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } catch ptr null - %38 = extractvalue { ptr, i32 } %37, 0 - call void @__clang_call_terminate(ptr %38) #16 + %37 = extractvalue { ptr, i32 } %36, 0 + call void @__clang_call_terminate(ptr %37) #16 unreachable _ZN10ptr_vectorI8reslimitED2Ev.exit.i: ; preds = %if.then.i.i.i.i38, %_ZN12drup_checkerD2Ev.exit %m_limits.i = getelementptr inbounds i8, ptr %lim, i64 24 - %39 = load ptr, ptr %m_limits.i, align 8 - %tobool.not.i.i.i1.i41 = icmp eq ptr %39, null + %38 = load ptr, ptr %m_limits.i, align 8 + %tobool.not.i.i.i1.i41 = icmp eq ptr %38, null br i1 %tobool.not.i.i.i1.i41, label %_ZN8reslimitD2Ev.exit, label %if.then.i.i.i2.i42 if.then.i.i.i2.i42: ; preds = %_ZN10ptr_vectorI8reslimitED2Ev.exit.i - %add.ptr.i.i.i.i3.i43 = getelementptr inbounds i8, ptr %39, i64 -8 + %add.ptr.i.i.i.i3.i43 = getelementptr inbounds i8, ptr %38, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i3.i43) to label %_ZN8reslimitD2Ev.exit unwind label %terminate.lpad.i.i4.i44 terminate.lpad.i.i4.i44: ; preds = %if.then.i.i.i2.i42 - %40 = landingpad { ptr, i32 } + %39 = landingpad { ptr, i32 } catch ptr null - %41 = extractvalue { ptr, i32 } %40, 0 - call void @__clang_call_terminate(ptr %41) #16 + %40 = extractvalue { ptr, i32 } %39, 0 + call void @__clang_call_terminate(ptr %40) #16 unreachable _ZN8reslimitD2Ev.exit: ; preds = %_ZN10ptr_vectorI8reslimitED2Ev.exit.i, %if.then.i.i.i2.i42 call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %p) #17 - %42 = load ptr, ptr %_M_manager.i.i13, align 8 - %tobool.not.i.i = icmp eq ptr %42, null + %41 = load ptr, ptr %_M_manager.i.i13, align 8 + %tobool.not.i.i = icmp eq ptr %41, null br i1 %tobool.not.i.i, label %_ZNSt8functionIF6symboliEED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN8reslimitD2Ev.exit - %call.i.i = invoke noundef zeroext i1 %42(ptr noundef nonnull align 8 dereferenceable(32) %write_theory, ptr noundef nonnull align 8 dereferenceable(32) %write_theory, i32 noundef 3) + %call.i.i = invoke noundef zeroext i1 %41(ptr noundef nonnull align 8 dereferenceable(32) %write_theory, ptr noundef nonnull align 8 dereferenceable(32) %write_theory, i32 noundef 3) to label %_ZNSt8functionIF6symboliEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i - %43 = landingpad { ptr, i32 } + %42 = landingpad { ptr, i32 } catch ptr null - %44 = extractvalue { ptr, i32 } %43, 0 - call void @__clang_call_terminate(ptr %44) #16 + %43 = extractvalue { ptr, i32 } %42, 0 + call void @__clang_call_terminate(ptr %43) #16 unreachable _ZNSt8functionIF6symboliEED2Ev.exit: ; preds = %_ZN8reslimitD2Ev.exit, %if.then.i.i - %45 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i47 = icmp eq ptr %45, null + %44 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i47 = icmp eq ptr %44, null br i1 %tobool.not.i.i47, label %_ZNSt8functionIFiPKcEED2Ev.exit, label %if.then.i.i48 if.then.i.i48: ; preds = %_ZNSt8functionIF6symboliEED2Ev.exit - %call.i.i49 = invoke noundef zeroext i1 %45(ptr noundef nonnull align 8 dereferenceable(32) %read_theory, ptr noundef nonnull align 8 dereferenceable(32) %read_theory, i32 noundef 3) + %call.i.i49 = invoke noundef zeroext i1 %44(ptr noundef nonnull align 8 dereferenceable(32) %read_theory, ptr noundef nonnull align 8 dereferenceable(32) %read_theory, i32 noundef 3) to label %_ZNSt8functionIFiPKcEED2Ev.exit unwind label %terminate.lpad.i.i50 terminate.lpad.i.i50: ; preds = %if.then.i.i48 - %46 = landingpad { ptr, i32 } + %45 = landingpad { ptr, i32 } catch ptr null - %47 = extractvalue { ptr, i32 } %46, 0 - call void @__clang_call_terminate(ptr %47) #16 + %46 = extractvalue { ptr, i32 } %45, 0 + call void @__clang_call_terminate(ptr %46) #16 unreachable _ZNSt8functionIFiPKcEED2Ev.exit: ; preds = %_ZNSt8functionIF6symboliEED2Ev.exit, %if.then.i.i48 %m_buffer.i = getelementptr inbounds i8, ptr %drat, i64 80 - %48 = load ptr, ptr %m_buffer.i, align 8 - %tobool.not.i.i.i.i51 = icmp eq ptr %48, null + %47 = load ptr, ptr %m_buffer.i, align 8 + %tobool.not.i.i.i.i51 = icmp eq ptr %47, null br i1 %tobool.not.i.i.i.i51, label %_ZN7svectorIcjED2Ev.exit.i, label %if.then.i.i.i.i52 if.then.i.i.i.i52: ; preds = %_ZNSt8functionIFiPKcEED2Ev.exit - %add.ptr.i.i.i.i.i53 = getelementptr inbounds i8, ptr %48, i64 -8 + %add.ptr.i.i.i.i.i53 = getelementptr inbounds i8, ptr %47, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i53) to label %_ZN7svectorIcjED2Ev.exit.i unwind label %terminate.lpad.i.i.i54 terminate.lpad.i.i.i54: ; preds = %if.then.i.i.i.i52 - %49 = landingpad { ptr, i32 } + %48 = landingpad { ptr, i32 } catch ptr null - %50 = extractvalue { ptr, i32 } %49, 0 - call void @__clang_call_terminate(ptr %50) #16 + %49 = extractvalue { ptr, i32 } %48, 0 + call void @__clang_call_terminate(ptr %49) #16 unreachable _ZN7svectorIcjED2Ev.exit.i: ; preds = %if.then.i.i.i.i52, %_ZNSt8functionIFiPKcEED2Ev.exit - %51 = load ptr, ptr %_M_manager3.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %51, null + %50 = load ptr, ptr %_M_manager3.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %50, null br i1 %tobool.not.i.i.i, label %_ZNSt8functionIFiPKcEED2Ev.exit.i, label %if.then.i.i.i55 if.then.i.i.i55: ; preds = %_ZN7svectorIcjED2Ev.exit.i - %call.i.i.i = invoke noundef zeroext i1 %51(ptr noundef nonnull align 8 dereferenceable(32) %m_read_theory_id.i, ptr noundef nonnull align 8 dereferenceable(32) %m_read_theory_id.i, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %50(ptr noundef nonnull align 8 dereferenceable(32) %m_read_theory_id.i, ptr noundef nonnull align 8 dereferenceable(32) %m_read_theory_id.i, i32 noundef 3) to label %_ZNSt8functionIFiPKcEED2Ev.exit.i unwind label %terminate.lpad.i.i1.i terminate.lpad.i.i1.i: ; preds = %if.then.i.i.i55 - %52 = landingpad { ptr, i32 } + %51 = landingpad { ptr, i32 } catch ptr null - %53 = extractvalue { ptr, i32 } %52, 0 - call void @__clang_call_terminate(ptr %53) #16 + %52 = extractvalue { ptr, i32 } %51, 0 + call void @__clang_call_terminate(ptr %52) #16 unreachable _ZNSt8functionIFiPKcEED2Ev.exit.i: ; preds = %if.then.i.i.i55, %_ZN7svectorIcjED2Ev.exit.i - %54 = load ptr, ptr %m_record.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %54, null + %53 = load ptr, ptr %m_record.i, align 8 + %tobool.not.i.i.i.i.i = icmp eq ptr %53, null br i1 %tobool.not.i.i.i.i.i, label %_ZN6dimacs11drat_parserD2Ev.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt8functionIFiPKcEED2Ev.exit.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %54, i64 -8 + %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %53, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.i) to label %_ZN6dimacs11drat_parserD2Ev.exit unwind label %terminate.lpad.i.i.i.i58 terminate.lpad.i.i.i.i58: ; preds = %if.then.i.i.i.i.i - %55 = landingpad { ptr, i32 } + %54 = landingpad { ptr, i32 } catch ptr null - %56 = extractvalue { ptr, i32 } %55, 0 - call void @__clang_call_terminate(ptr %56) #16 + %55 = extractvalue { ptr, i32 } %54, 0 + call void @__clang_call_terminate(ptr %55) #16 unreachable _ZN6dimacs11drat_parserD2Ev.exit: ; preds = %_ZNSt8functionIFiPKcEED2Ev.exit.i, %if.then.i.i.i.i.i @@ -679,7 +675,7 @@ _ZN6dimacs11drat_parserD2Ev.exit: ; preds = %_ZNSt8functionIFiPK ret i32 0 ehcleanup: ; preds = %lpad16.loopexit, %lpad16.loopexit.split-lp.loopexit.split-lp, %lpad16.loopexit.split-lp.loopexit, %lpad36 - %.pn = phi { ptr, i32 } [ %29, %lpad36 ], [ %lpad.loopexit, %lpad16.loopexit ], [ %lpad.loopexit72, %lpad16.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp73, %lpad16.loopexit.split-lp.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %28, %lpad36 ], [ %lpad.loopexit, %lpad16.loopexit ], [ %lpad.loopexit72, %lpad16.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp73, %lpad16.loopexit.split-lp.loopexit.split-lp ] call void @_ZN12drup_checkerD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %checker) #17 call void @_ZN3sat4dratD1Ev(ptr noundef nonnull align 8 dereferenceable(664) %drat_checker) #17 br label %ehcleanup47 @@ -697,35 +693,35 @@ ehcleanup49: ; preds = %ehcleanup47, %lpad1 ehcleanup51: ; preds = %ehcleanup49, %lpad8 %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %ehcleanup49 ], [ %19, %lpad8 ] call void @_ZN10params_refD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %p) #17 - %57 = load ptr, ptr %_M_manager.i.i13, align 8 - %tobool.not.i.i60 = icmp eq ptr %57, null + %56 = load ptr, ptr %_M_manager.i.i13, align 8 + %tobool.not.i.i60 = icmp eq ptr %56, null br i1 %tobool.not.i.i60, label %_ZNSt8functionIF6symboliEED2Ev.exit64, label %if.then.i.i61 if.then.i.i61: ; preds = %ehcleanup51 - %call.i.i62 = invoke noundef zeroext i1 %57(ptr noundef nonnull align 8 dereferenceable(32) %write_theory, ptr noundef nonnull align 8 dereferenceable(32) %write_theory, i32 noundef 3) + %call.i.i62 = invoke noundef zeroext i1 %56(ptr noundef nonnull align 8 dereferenceable(32) %write_theory, ptr noundef nonnull align 8 dereferenceable(32) %write_theory, i32 noundef 3) to label %_ZNSt8functionIF6symboliEED2Ev.exit64 unwind label %terminate.lpad.i.i63 terminate.lpad.i.i63: ; preds = %if.then.i.i61 - %58 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } catch ptr null - %59 = extractvalue { ptr, i32 } %58, 0 - call void @__clang_call_terminate(ptr %59) #16 + %58 = extractvalue { ptr, i32 } %57, 0 + call void @__clang_call_terminate(ptr %58) #16 unreachable _ZNSt8functionIF6symboliEED2Ev.exit64: ; preds = %ehcleanup51, %if.then.i.i61 - %60 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i66 = icmp eq ptr %60, null + %59 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i66 = icmp eq ptr %59, null br i1 %tobool.not.i.i66, label %_ZNSt8functionIFiPKcEED2Ev.exit70, label %if.then.i.i67 if.then.i.i67: ; preds = %_ZNSt8functionIF6symboliEED2Ev.exit64 - %call.i.i68 = invoke noundef zeroext i1 %60(ptr noundef nonnull align 8 dereferenceable(32) %read_theory, ptr noundef nonnull align 8 dereferenceable(32) %read_theory, i32 noundef 3) + %call.i.i68 = invoke noundef zeroext i1 %59(ptr noundef nonnull align 8 dereferenceable(32) %read_theory, ptr noundef nonnull align 8 dereferenceable(32) %read_theory, i32 noundef 3) to label %_ZNSt8functionIFiPKcEED2Ev.exit70 unwind label %terminate.lpad.i.i69 terminate.lpad.i.i69: ; preds = %if.then.i.i67 - %61 = landingpad { ptr, i32 } + %60 = landingpad { ptr, i32 } catch ptr null - %62 = extractvalue { ptr, i32 } %61, 0 - call void @__clang_call_terminate(ptr %62) #16 + %61 = extractvalue { ptr, i32 } %60, 0 + call void @__clang_call_terminate(ptr %61) #16 unreachable _ZNSt8functionIFiPKcEED2Ev.exit70: ; preds = %_ZNSt8functionIF6symboliEED2Ev.exit64, %if.then.i.i67 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