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/cmdUtils.c.ll b/bench/abc/optimized/cmdUtils.c.ll index ec7fa80e400..2345e2e2b20 100644 --- a/bench/abc/optimized/cmdUtils.c.ll +++ b/bench/abc/optimized/cmdUtils.c.ll @@ -395,13 +395,11 @@ define ptr @CmdSplitLine(ptr nocapture noundef readonly %0, ptr noundef %1, ptr 29: ; preds = %26, %21 %30 = icmp eq i8 %20, 39 - %.not73 = icmp eq i32 %.058, 0 - %31 = zext i1 %.not73 to i32 - %.159 = select i1 %30, i32 %31, i32 %.058 + %31 = zext i1 %30 to i32 + %.159 = xor i32 %.058, %31 %32 = icmp eq i8 %20, 34 - %.not74 = icmp eq i32 %.0, 0 - %33 = zext i1 %.not74 to i32 - %.1 = select i1 %32, i32 %33, i32 %.0 + %33 = zext i1 %32 to i32 + %.1 = xor i32 %.0, %33 %34 = getelementptr inbounds i8, ptr %.2, i64 1 %indvars.iv.next82 = add i64 %indvars.iv81, 1 %.pre = load i8, ptr %34, align 1 diff --git a/bench/abc/optimized/extraUtilSupp.c.ll b/bench/abc/optimized/extraUtilSupp.c.ll index 7ceee1d5904..5aef21f7c9d 100644 --- a/bench/abc/optimized/extraUtilSupp.c.ll +++ b/bench/abc/optimized/extraUtilSupp.c.ll @@ -962,7 +962,7 @@ Abc_SuppGenProfile.exit: ; preds = %._crit_edge.us.i, % .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %.012 = phi i32 [ 0, %.lr.ph.preheader ], [ %spec.select, %.lr.ph ] - %23 = sext i32 %.012 to i64 + %23 = zext nneg i32 %.012 to i64 %24 = getelementptr inbounds [64 x i32], ptr %4, i64 0, i64 %23 %25 = load i32, ptr %24, align 4 %26 = getelementptr inbounds [64 x i32], ptr %4, i64 0, i64 %indvars.iv @@ -976,7 +976,7 @@ Abc_SuppGenProfile.exit: ; preds = %._crit_edge.us.i, % ._crit_edge: ; preds = %.lr.ph, %.lr.ph20.i, %Abc_SuppGenProfile.exit %.0.lcssa = phi i32 [ 0, %Abc_SuppGenProfile.exit ], [ 0, %.lr.ph20.i ], [ %spec.select, %.lr.ph ] - %30 = sext i32 %.0.lcssa to i64 + %30 = zext nneg i32 %.0.lcssa to i64 %31 = getelementptr inbounds [64 x i32], ptr %4, i64 0, i64 %30 %32 = load i32, ptr %31, align 4 store i32 %32, ptr %2, align 4 @@ -1079,12 +1079,12 @@ define i64 @Abc_SuppFindOne(ptr nocapture noundef readonly %0, i32 noundef %1) l br i1 %6, label %.split.us, label %.split.split .split.us: ; preds = %2 - %.not54 = icmp eq i32 %1, 1 - br i1 %.not54, label %.split.us.split, label %.split.us.split.us + %.not46 = icmp eq i32 %1, 1 + br i1 %.not46, label %.split.us.split, label %.split.us.split.us .split.us.split.us: ; preds = %.split.us, %Abc_SuppGenSelectVar.exit.us.us - %.08.us.us = phi i32 [ %44, %Abc_SuppGenSelectVar.exit.us.us ], [ -1, %.split.us ] - %.0.us.us = phi i64 [ %41, %Abc_SuppGenSelectVar.exit.us.us ], [ 0, %.split.us ] + %.08.us.us = phi i32 [ %43, %Abc_SuppGenSelectVar.exit.us.us ], [ -1, %.split.us ] + %.0.us.us = phi i64 [ %40, %Abc_SuppGenSelectVar.exit.us.us ], [ 0, %.split.us ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %3, i8 0, i64 256, i1 false) %.val17.i.i.us.us = load i32, ptr %4, align 4 @@ -1128,7 +1128,7 @@ define i64 @Abc_SuppFindOne(ptr nocapture noundef readonly %0, i32 noundef %1) l .lr.ph.i.us.us: ; preds = %.lr.ph.i.us.us.preheader, %.lr.ph.i.us.us %indvars.iv.i.us.us = phi i64 [ %indvars.iv.next.i.us.us, %.lr.ph.i.us.us ], [ 1, %.lr.ph.i.us.us.preheader ] %.012.i.us.us = phi i32 [ %spec.select.i.us.us, %.lr.ph.i.us.us ], [ 0, %.lr.ph.i.us.us.preheader ] - %22 = sext i32 %.012.i.us.us to i64 + %22 = zext nneg i32 %.012.i.us.us to i64 %23 = getelementptr inbounds [64 x i32], ptr %3, i64 0, i64 %22 %24 = load i32, ptr %23, align 4 %25 = getelementptr inbounds [64 x i32], ptr %3, i64 0, i64 %indvars.iv.i.us.us @@ -1144,145 +1144,144 @@ define i64 @Abc_SuppFindOne(ptr nocapture noundef readonly %0, i32 noundef %1) l %.val9.i.us.us = load ptr, ptr %7, align 8 %30 = zext nneg i32 %.val17.i.i.us.us to i64 %31 = getelementptr inbounds i64, ptr %.val9.i.us.us, i64 %30 - %32 = zext nneg i32 %spec.select.i.us.us to i64 - %33 = shl nuw i64 1, %32 + %32 = shl nuw i64 1, %41 br i1 %9, label %.lr.ph.i10.us.us, label %Abc_SuppGenSelectVar.exit.us.us -.lr.ph.i10.us.us: ; preds = %29, %38 - %.010.i.us.us = phi ptr [ %39, %38 ], [ %.val9.i.us.us, %29 ] - %34 = load i64, ptr %.010.i.us.us, align 8 - %35 = and i64 %34, %33 - %.not.i.us.us = icmp eq i64 %35, 0 - br i1 %.not.i.us.us, label %38, label %36 - -36: ; preds = %.lr.ph.i10.us.us - %37 = xor i64 %34, %8 - store i64 %37, ptr %.010.i.us.us, align 8 - br label %38 - -38: ; preds = %36, %.lr.ph.i10.us.us - %39 = getelementptr inbounds i8, ptr %.010.i.us.us, i64 8 - %40 = icmp ult ptr %39, %31 - br i1 %40, label %.lr.ph.i10.us.us, label %Abc_SuppGenSelectVar.exit.us.us, !llvm.loop !20 - -Abc_SuppGenSelectVar.exit.us.us: ; preds = %38, %29 - %41 = or i64 %33, %.0.us.us +.lr.ph.i10.us.us: ; preds = %29, %37 + %.010.i.us.us = phi ptr [ %38, %37 ], [ %.val9.i.us.us, %29 ] + %33 = load i64, ptr %.010.i.us.us, align 8 + %34 = and i64 %33, %32 + %.not.i.us.us = icmp eq i64 %34, 0 + br i1 %.not.i.us.us, label %37, label %35 + +35: ; preds = %.lr.ph.i10.us.us + %36 = xor i64 %33, %8 + store i64 %36, ptr %.010.i.us.us, align 8 + br label %37 + +37: ; preds = %35, %.lr.ph.i10.us.us + %38 = getelementptr inbounds i8, ptr %.010.i.us.us, i64 8 + %39 = icmp ult ptr %38, %31 + br i1 %39, label %.lr.ph.i10.us.us, label %Abc_SuppGenSelectVar.exit.us.us, !llvm.loop !20 + +Abc_SuppGenSelectVar.exit.us.us: ; preds = %37, %29 + %40 = or i64 %32, %.0.us.us br label %.split.us.split.us Abc_SuppGenFindBest.exit.loopexit.us.us: ; preds = %.lr.ph.i.us.us - %42 = sext i32 %spec.select.i.us.us to i64 - %43 = getelementptr inbounds [64 x i32], ptr %3, i64 0, i64 %42 - %44 = load i32, ptr %43, align 4 + %41 = zext nneg i32 %spec.select.i.us.us to i64 + %42 = getelementptr inbounds [64 x i32], ptr %3, i64 0, i64 %41 + %43 = load i32, ptr %42, align 4 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) - %.not.us.us = icmp slt i32 %.08.us.us, %44 - br i1 %.not.us.us, label %29, label %.split20.us + %.not.us.us = icmp slt i32 %.08.us.us, %43 + br i1 %.not.us.us, label %29, label %.split16.us .split.us.split: ; preds = %.split.us, %.split.us.split.backedge %.08.us = phi i32 [ %.08.us.be, %.split.us.split.backedge ], [ -1, %.split.us ] %.0.us = phi i64 [ 1, %.split.us.split.backedge ], [ 0, %.split.us ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) %.val17.i.i.us = load i32, ptr %4, align 4 - %45 = icmp sgt i32 %.val17.i.i.us, 0 - br i1 %45, label %.lr.ph20.i.i.us, label %Abc_SuppGenProfile.exit.i.us.thread + %44 = icmp sgt i32 %.val17.i.i.us, 0 + br i1 %44, label %.lr.ph20.i.i.us, label %Abc_SuppGenProfile.exit.i.us.thread .lr.ph20.i.i.us: ; preds = %.split.us.split %.val15.us.i.i.us = load ptr, ptr %7, align 8 - %46 = zext nneg i32 %.val17.i.i.us to i64 + %45 = zext nneg i32 %.val17.i.i.us to i64 br label %.lr.ph.us.i.i.us .lr.ph.us.i.i.us: ; preds = %.lr.ph.us.i.i.us, %.lr.ph20.i.i.us - %47 = phi i32 [ %54, %.lr.ph.us.i.i.us ], [ 0, %.lr.ph20.i.i.us ] + %46 = phi i32 [ %53, %.lr.ph.us.i.i.us ], [ 0, %.lr.ph20.i.i.us ] %indvars.iv23.i.i.us = phi i64 [ %indvars.iv.next24.i.i.us, %.lr.ph.us.i.i.us ], [ 0, %.lr.ph20.i.i.us ] - %48 = getelementptr inbounds i64, ptr %.val15.us.i.i.us, i64 %indvars.iv23.i.i.us - %49 = load i64, ptr %48, align 8 - %50 = lshr i64 %49, %5 - %51 = xor i64 %49, %50 - %52 = trunc i64 %51 to i32 - %53 = and i32 %52, 1 - %54 = add i32 %53, %47 + %47 = getelementptr inbounds i64, ptr %.val15.us.i.i.us, i64 %indvars.iv23.i.i.us + %48 = load i64, ptr %47, align 8 + %49 = lshr i64 %48, %5 + %50 = xor i64 %48, %49 + %51 = trunc i64 %50 to i32 + %52 = and i32 %51, 1 + %53 = add i32 %52, %46 %indvars.iv.next24.i.i.us = add nuw nsw i64 %indvars.iv23.i.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %indvars.iv.next24.i.i.us, %46 + %exitcond.not.i.us = icmp eq i64 %indvars.iv.next24.i.i.us, %45 br i1 %exitcond.not.i.us, label %Abc_SuppGenProfile.exit.i.us, label %.lr.ph.us.i.i.us, !llvm.loop !17 Abc_SuppGenProfile.exit.i.us: ; preds = %.lr.ph.us.i.i.us call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) - %.not.us = icmp slt i32 %.08.us, %54 - br i1 %.not.us, label %55, label %.split20.us + %.not.us = icmp slt i32 %.08.us, %53 + br i1 %.not.us, label %54, label %.split16.us Abc_SuppGenProfile.exit.i.us.thread: ; preds = %.split.us.split call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) - %.not.us55 = icmp slt i32 %.08.us, 0 - br i1 %.not.us55, label %.split.us.split.backedge, label %.split20.us + %.not.us47 = icmp slt i32 %.08.us, 0 + br i1 %.not.us47, label %.split.us.split.backedge, label %.split16.us -.split.us.split.backedge: ; preds = %62, %Abc_SuppGenProfile.exit.i.us.thread - %.08.us.be = phi i32 [ 0, %Abc_SuppGenProfile.exit.i.us.thread ], [ %54, %62 ] +.split.us.split.backedge: ; preds = %61, %Abc_SuppGenProfile.exit.i.us.thread + %.08.us.be = phi i32 [ 0, %Abc_SuppGenProfile.exit.i.us.thread ], [ %53, %61 ] br label %.split.us.split -55: ; preds = %Abc_SuppGenProfile.exit.i.us +54: ; preds = %Abc_SuppGenProfile.exit.i.us %.val9.i.us = load ptr, ptr %7, align 8 - %56 = zext nneg i32 %.val17.i.i.us to i64 - %57 = getelementptr inbounds i64, ptr %.val9.i.us, i64 %56 + %55 = zext nneg i32 %.val17.i.i.us to i64 + %56 = getelementptr inbounds i64, ptr %.val9.i.us, i64 %55 br label %.lr.ph.i10.us -.lr.ph.i10.us: ; preds = %55, %62 - %.010.i.us = phi ptr [ %63, %62 ], [ %.val9.i.us, %55 ] - %58 = load i64, ptr %.010.i.us, align 8 - %59 = and i64 %58, 1 - %.not.i.us = icmp eq i64 %59, 0 - br i1 %.not.i.us, label %62, label %60 +.lr.ph.i10.us: ; preds = %54, %61 + %.010.i.us = phi ptr [ %62, %61 ], [ %.val9.i.us, %54 ] + %57 = load i64, ptr %.010.i.us, align 8 + %58 = and i64 %57, 1 + %.not.i.us = icmp eq i64 %58, 0 + br i1 %.not.i.us, label %61, label %59 -60: ; preds = %.lr.ph.i10.us - %61 = xor i64 %58, 2 - store i64 %61, ptr %.010.i.us, align 8 - br label %62 +59: ; preds = %.lr.ph.i10.us + %60 = xor i64 %57, 2 + store i64 %60, ptr %.010.i.us, align 8 + br label %61 -62: ; preds = %60, %.lr.ph.i10.us - %63 = getelementptr inbounds i8, ptr %.010.i.us, i64 8 - %64 = icmp ult ptr %63, %57 - br i1 %64, label %.lr.ph.i10.us, label %.split.us.split.backedge, !llvm.loop !20 +61: ; preds = %59, %.lr.ph.i10.us + %62 = getelementptr inbounds i8, ptr %.010.i.us, i64 8 + %63 = icmp ult ptr %62, %56 + br i1 %63, label %.lr.ph.i10.us, label %.split.us.split.backedge, !llvm.loop !20 .split.split: ; preds = %2, %.split.split.backedge %.not = phi i1 [ false, %.split.split.backedge ], [ true, %2 ] %.0 = phi i64 [ 1, %.split.split.backedge ], [ 0, %2 ] call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) %.val17.i.i = load i32, ptr %4, align 4 - %65 = icmp sgt i32 %.val17.i.i, 0 + %64 = icmp sgt i32 %.val17.i.i, 0 call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) - br i1 %65, label %.lr.ph20.i.i, label %Abc_SuppGenProfile.exit.i + br i1 %64, label %.lr.ph20.i.i, label %Abc_SuppGenProfile.exit.i .lr.ph20.i.i: ; preds = %.split.split - br i1 %.not, label %.lr.ph.i10, label %.split20.us + br i1 %.not, label %.lr.ph.i10, label %.split16.us Abc_SuppGenProfile.exit.i: ; preds = %.split.split - br i1 %.not, label %.split.split.backedge, label %.split20.us + br i1 %.not, label %.split.split.backedge, label %.split16.us -.split.split.backedge: ; preds = %73, %Abc_SuppGenProfile.exit.i +.split.split.backedge: ; preds = %72, %Abc_SuppGenProfile.exit.i br label %.split.split .lr.ph.i10: ; preds = %.lr.ph20.i.i - %.val9.i15 = load ptr, ptr %7, align 8 - %66 = zext nneg i32 %.val17.i.i to i64 - %67 = getelementptr inbounds i64, ptr %.val9.i15, i64 %66 - br label %68 - -68: ; preds = %73, %.lr.ph.i10 - %.010.i = phi ptr [ %.val9.i15, %.lr.ph.i10 ], [ %74, %73 ] - %69 = load i64, ptr %.010.i, align 8 - %70 = and i64 %69, 1 - %.not.i = icmp eq i64 %70, 0 - br i1 %.not.i, label %73, label %71 - -71: ; preds = %68 - %72 = xor i64 %69, %8 - store i64 %72, ptr %.010.i, align 8 - br label %73 - -73: ; preds = %71, %68 - %74 = getelementptr inbounds i8, ptr %.010.i, i64 8 - %75 = icmp ult ptr %74, %67 - br i1 %75, label %68, label %.split.split.backedge, !llvm.loop !20 - -.split20.us: ; preds = %.lr.ph20.i.i, %Abc_SuppGenProfile.exit.i, %Abc_SuppGenFindBest.exit.loopexit.us.us, %Abc_SuppGenProfile.exit.i.us, %Abc_SuppGenProfile.exit.i.us.thread + %.val9.i13 = load ptr, ptr %7, align 8 + %65 = zext nneg i32 %.val17.i.i to i64 + %66 = getelementptr inbounds i64, ptr %.val9.i13, i64 %65 + br label %67 + +67: ; preds = %72, %.lr.ph.i10 + %.010.i = phi ptr [ %.val9.i13, %.lr.ph.i10 ], [ %73, %72 ] + %68 = load i64, ptr %.010.i, align 8 + %69 = and i64 %68, 1 + %.not.i = icmp eq i64 %69, 0 + br i1 %.not.i, label %72, label %70 + +70: ; preds = %67 + %71 = xor i64 %68, %8 + store i64 %71, ptr %.010.i, align 8 + br label %72 + +72: ; preds = %70, %67 + %73 = getelementptr inbounds i8, ptr %.010.i, i64 8 + %74 = icmp ult ptr %73, %66 + br i1 %74, label %67, label %.split.split.backedge, !llvm.loop !20 + +.split16.us: ; preds = %.lr.ph20.i.i, %Abc_SuppGenProfile.exit.i, %Abc_SuppGenFindBest.exit.loopexit.us.us, %Abc_SuppGenProfile.exit.i.us, %Abc_SuppGenProfile.exit.i.us.thread %.us-phi = phi i64 [ %.0.us, %Abc_SuppGenProfile.exit.i.us.thread ], [ %.0.us, %Abc_SuppGenProfile.exit.i.us ], [ %.0.us.us, %Abc_SuppGenFindBest.exit.loopexit.us.us ], [ %.0, %Abc_SuppGenProfile.exit.i ], [ %.0, %.lr.ph20.i.i ] ret i64 %.us-phi } 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/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/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/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/bullet3/optimized/btBatchedConstraints.ll b/bench/bullet3/optimized/btBatchedConstraints.ll index fe16257e1f0..7723bd7dcfd 100644 --- a/bench/bullet3/optimized/btBatchedConstraints.ll +++ b/bench/bullet3/optimized/btBatchedConstraints.ll @@ -1132,13 +1132,13 @@ for.body124.i: ; preds = %invoke.cont87.i, %f br i1 %exitcond485.not.i, label %for.end134.i, label %for.body124.i, !llvm.loop !17 for.end134.i: ; preds = %for.body124.i - %idxprom137.i = sext i32 %spec.select74.i to i64 + %idxprom137.i = zext nneg i32 %spec.select74.i to i64 %arrayidx138.i = getelementptr inbounds float, ptr %gridExtent.i, i64 %idxprom137.i %64 = load float, ptr %arrayidx138.i, align 4 %mul139.i = fmul float %64, 2.000000e+00 %arrayidx143.i = getelementptr inbounds float, ptr %gridCellSize.i, i64 %idxprom137.i store float %mul139.i, ptr %arrayidx143.i, align 4 - %shl.i = shl nuw i32 1, %spec.select74.i + %shl.i = shl nuw nsw i32 1, %spec.select74.i %not.i = and i32 %shl.i, 7 %and.i = xor i32 %not.i, 7 %gridCellSize.promoted.pre.i = load float, ptr %gridCellSize.i, align 8 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/duckdb/optimized/ub_duckdb_optimizer_statistics_expr.cpp.ll b/bench/duckdb/optimized/ub_duckdb_optimizer_statistics_expr.cpp.ll index 3340d2114df..266853fb50c 100644 --- a/bench/duckdb/optimized/ub_duckdb_optimizer_statistics_expr.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_optimizer_statistics_expr.cpp.ll @@ -4169,12 +4169,11 @@ for.body.lr.ph: ; preds = %_ZNSt12_Vector_base br label %for.body for.cond.cleanup: ; preds = %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit - %2 = and i8 %spec.select, 1 - %tobool.not = icmp eq i8 %2, 0 + %tobool.not = icmp eq i8 %spec.select, 0 br i1 %tobool.not, label %cleanup257.sink.split, label %if.end19 lpad: ; preds = %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535.invoke, %invoke.cont238, %invoke.cont236, %if.end235, %invoke.cont217, %invoke.cont215, %sw.bb214, %invoke.cont195, %invoke.cont193, %if.end192, %invoke.cont174, %invoke.cont172, %sw.bb171, %if.end168, %if.then140, %_ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i, %if.then.i - %3 = landingpad { ptr, i32 } + %2 = landingpad { ptr, i32 } cleanup br label %ehcleanup258 @@ -4186,27 +4185,27 @@ for.body: ; preds = %_ZNSt10unique_ptrIN to label %invoke.cont9 unwind label %lpad8 invoke.cont9: ; preds = %for.body - %4 = load ptr, ptr %stats, align 8 - %cmp.i312.not = icmp eq ptr %4, null + %3 = load ptr, ptr %stats, align 8 + %cmp.i312.not = icmp eq ptr %3, null %spec.select = select i1 %cmp.i312.not, i8 0, i8 %all_have_stats.0580 - %5 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !3 - %6 = ptrtoint ptr %5 to i64 - %7 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !189 - %cmp.not.i.i = icmp eq ptr %5, %7 - %8 = ptrtoint ptr %4 to i64 + %4 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !3 + %5 = ptrtoint ptr %4 to i64 + %6 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !189 + %cmp.not.i.i = icmp eq ptr %4, %6 + %7 = ptrtoint ptr %3 to i64 br i1 %cmp.not.i.i, label %if.else.i.i, label %invoke.cont12.thread invoke.cont12.thread: ; preds = %invoke.cont9 - store i64 %8, ptr %5, align 8, !tbaa !3 - %9 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !188 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %9, i64 8 + store i64 %7, ptr %4, align 8, !tbaa !3 + %8 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !188 + %incdec.ptr.i.i = getelementptr inbounds i8, ptr %8, i64 8 store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i, align 8, !tbaa !188 br label %_ZNSt10unique_ptrIN6duckdb14BaseStatisticsESt14default_deleteIS1_EED2Ev.exit if.else.i.i: ; preds = %invoke.cont9 - %10 = load ptr, ptr %child_stats, align 8, !tbaa !3 - %11 = ptrtoint ptr %10 to i64 - %sub.ptr.sub.i.i.i540 = sub i64 %6, %11 + %9 = load ptr, ptr %child_stats, align 8, !tbaa !3 + %10 = ptrtoint ptr %9 to i64 + %sub.ptr.sub.i.i.i540 = sub i64 %5, %10 %cmp.i.i = icmp eq i64 %sub.ptr.sub.i.i.i540, 9223372036854775800 br i1 %cmp.i.i, label %if.then.i.i558, label %_ZNKSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE12_M_check_lenEmPKc.exit.i @@ -4222,8 +4221,8 @@ _ZNKSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_EL %.sroa.speculated.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i, i64 1) %add.i.i = add nsw i64 %.sroa.speculated.i.i, %sub.ptr.div.i.i.i %cmp7.i.i = icmp ult i64 %add.i.i, %sub.ptr.div.i.i.i - %12 = call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) - %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %12 + %11 = call i64 @llvm.umin.i64(i64 %add.i.i, i64 1152921504606846975) + %cond.i.i = select i1 %cmp7.i.i, i64 1152921504606846975, i64 %11 %cmp.not.i.i544 = icmp eq i64 %cond.i.i, 0 br i1 %cmp.not.i.i544, label %_ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i545, label %cond.true.i.i @@ -4235,62 +4234,62 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorIN6duc _ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i545: ; preds = %cond.true.i.i, %_ZNKSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE12_M_check_lenEmPKc.exit.i %cond.i31.i = phi ptr [ null, %_ZNKSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE12_M_check_lenEmPKc.exit.i ], [ %call5.i.i.i.i561, %cond.true.i.i ] %add.ptr.i546 = getelementptr inbounds %"class.duckdb::unique_ptr", ptr %cond.i31.i, i64 %sub.ptr.div.i.i.i - store i64 %8, ptr %add.ptr.i546, align 8, !tbaa !3 + store i64 %7, ptr %add.ptr.i546, align 8, !tbaa !3 store ptr null, ptr %stats, align 8, !tbaa !3 - %cmp.not6.i.i.i.i.i547 = icmp eq ptr %10, %5 + %cmp.not6.i.i.i.i.i547 = icmp eq ptr %9, %4 br i1 %cmp.not6.i.i.i.i.i547, label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i, label %for.body.i.i.i.i.i548.preheader for.body.i.i.i.i.i548.preheader: ; preds = %_ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i545 - %13 = add i64 %6, -8 - %14 = sub i64 %13, %11 - %15 = lshr i64 %14, 3 - %16 = add nuw nsw i64 %15, 1 - %min.iters.check = icmp ult i64 %14, 56 + %12 = add i64 %5, -8 + %13 = sub i64 %12, %10 + %14 = lshr i64 %13, 3 + %15 = add nuw nsw i64 %14, 1 + %min.iters.check = icmp ult i64 %13, 56 br i1 %min.iters.check, label %for.body.i.i.i.i.i548.preheader47, label %vector.memcheck for.body.i.i.i.i.i548.preheader47: ; preds = %middle.block, %vector.memcheck, %for.body.i.i.i.i.i548.preheader %__cur.08.i.i.i.i.i549.ph = phi ptr [ %ind.end, %middle.block ], [ %cond.i31.i, %for.body.i.i.i.i.i548.preheader ], [ %cond.i31.i, %vector.memcheck ] - %__first.addr.07.i.i.i.i.i550.ph = phi ptr [ %ind.end614, %middle.block ], [ %10, %for.body.i.i.i.i.i548.preheader ], [ %10, %vector.memcheck ] + %__first.addr.07.i.i.i.i.i550.ph = phi ptr [ %ind.end614, %middle.block ], [ %9, %for.body.i.i.i.i.i548.preheader ], [ %9, %vector.memcheck ] br label %for.body.i.i.i.i.i548 vector.memcheck: ; preds = %for.body.i.i.i.i.i548.preheader %scevgep = getelementptr i8, ptr %cond.i31.i, i64 8 - %17 = and i64 %14, -8 - %scevgep611 = getelementptr i8, ptr %scevgep, i64 %17 - %scevgep612 = getelementptr i8, ptr %10, i64 8 - %scevgep613 = getelementptr i8, ptr %scevgep612, i64 %17 + %16 = and i64 %13, -8 + %scevgep611 = getelementptr i8, ptr %scevgep, i64 %16 + %scevgep612 = getelementptr i8, ptr %9, i64 8 + %scevgep613 = getelementptr i8, ptr %scevgep612, i64 %16 %bound0 = icmp ult ptr %cond.i31.i, %scevgep613 - %bound1 = icmp ult ptr %10, %scevgep611 + %bound1 = icmp ult ptr %9, %scevgep611 %found.conflict = and i1 %bound0, %bound1 br i1 %found.conflict, label %for.body.i.i.i.i.i548.preheader47, label %vector.ph vector.ph: ; preds = %vector.memcheck - %n.vec = and i64 %16, 4611686018427387900 - %18 = shl i64 %n.vec, 3 - %ind.end = getelementptr i8, ptr %cond.i31.i, i64 %18 + %n.vec = and i64 %15, 4611686018427387900 + %17 = shl i64 %n.vec, 3 + %ind.end = getelementptr i8, ptr %cond.i31.i, i64 %17 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] %offset.idx = shl i64 %index, 3 %next.gep = getelementptr i8, ptr %cond.i31.i, i64 %offset.idx - %next.gep618 = getelementptr i8, ptr %10, i64 %offset.idx + %next.gep618 = getelementptr i8, ptr %9, i64 %offset.idx call void @llvm.experimental.noalias.scope.decl(metadata !190) call void @llvm.experimental.noalias.scope.decl(metadata !193) - %19 = getelementptr i8, ptr %next.gep618, i64 16 + %18 = getelementptr i8, ptr %next.gep618, i64 16 %wide.load = load <2 x i64>, ptr %next.gep618, align 8, !tbaa !3, !alias.scope !195, !noalias !190 - %wide.load620 = load <2 x i64>, ptr %19, align 8, !tbaa !3, !alias.scope !195, !noalias !190 - %20 = getelementptr i8, ptr %next.gep, i64 16 + %wide.load620 = load <2 x i64>, ptr %18, align 8, !tbaa !3, !alias.scope !195, !noalias !190 + %19 = getelementptr i8, ptr %next.gep, i64 16 store <2 x i64> %wide.load, ptr %next.gep, align 8, !tbaa !3, !alias.scope !198, !noalias !195 - store <2 x i64> %wide.load620, ptr %20, align 8, !tbaa !3, !alias.scope !198, !noalias !195 + store <2 x i64> %wide.load620, ptr %19, align 8, !tbaa !3, !alias.scope !198, !noalias !195 %index.next = add nuw i64 %index, 4 - %21 = icmp eq i64 %index.next, %n.vec + %20 = icmp eq i64 %index.next, %n.vec call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %next.gep618, i8 0, i64 32, i1 false) - br i1 %21, label %middle.block, label %vector.body, !llvm.loop !200 + br i1 %20, label %middle.block, label %vector.body, !llvm.loop !200 middle.block: ; preds = %vector.body - %ind.end614 = getelementptr i8, ptr %10, i64 %18 - %cmp.n = icmp eq i64 %16, %n.vec + %ind.end614 = getelementptr i8, ptr %9, i64 %17 + %cmp.n = icmp eq i64 %15, %n.vec br i1 %cmp.n, label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i.thread, label %for.body.i.i.i.i.i548.preheader47 _ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i.thread: ; preds = %middle.block @@ -4302,27 +4301,27 @@ for.body.i.i.i.i.i548: ; preds = %for.body.i.i.i.i.i5 %__first.addr.07.i.i.i.i.i550 = phi ptr [ %incdec.ptr.i.i.i.i.i551, %for.body.i.i.i.i.i548 ], [ %__first.addr.07.i.i.i.i.i550.ph, %for.body.i.i.i.i.i548.preheader47 ] call void @llvm.experimental.noalias.scope.decl(metadata !190) call void @llvm.experimental.noalias.scope.decl(metadata !193) - %22 = load i64, ptr %__first.addr.07.i.i.i.i.i550, align 8, !tbaa !3, !alias.scope !193, !noalias !190 - store i64 %22, ptr %__cur.08.i.i.i.i.i549, align 8, !tbaa !3, !alias.scope !190, !noalias !193 + %21 = load i64, ptr %__first.addr.07.i.i.i.i.i550, align 8, !tbaa !3, !alias.scope !193, !noalias !190 + store i64 %21, ptr %__cur.08.i.i.i.i.i549, align 8, !tbaa !3, !alias.scope !190, !noalias !193 store ptr null, ptr %__first.addr.07.i.i.i.i.i550, align 8, !tbaa !3, !alias.scope !193, !noalias !190 %incdec.ptr.i.i.i.i.i551 = getelementptr inbounds i8, ptr %__first.addr.07.i.i.i.i.i550, i64 8 %incdec.ptr1.i.i.i.i.i552 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i549, i64 8 - %cmp.not.i.i.i.i.i553 = icmp eq ptr %incdec.ptr.i.i.i.i.i551, %5 + %cmp.not.i.i.i.i.i553 = icmp eq ptr %incdec.ptr.i.i.i.i.i551, %4 br i1 %cmp.not.i.i.i.i.i553, label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i, label %for.body.i.i.i.i.i548, !llvm.loop !203 _ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i: ; preds = %for.body.i.i.i.i.i548, %_ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i545 %__cur.0.lcssa.i.i.i.i.i = phi ptr [ %cond.i31.i, %_ZNSt12_Vector_baseIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_M_allocateEm.exit.i545 ], [ %incdec.ptr1.i.i.i.i.i552, %for.body.i.i.i.i.i548 ] %incdec.ptr.i555 = getelementptr i8, ptr %__cur.0.lcssa.i.i.i.i.i, i64 8 - %tobool.not.i.i556 = icmp eq ptr %10, null + %tobool.not.i.i556 = icmp eq ptr %9, null br i1 %tobool.not.i.i556, label %invoke.cont12, label %if.then.i41.i if.then.i41.i: ; preds = %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i.thread, %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i %incdec.ptr.i55527 = phi ptr [ %incdec.ptr.i55525, %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i.thread ], [ %incdec.ptr.i555, %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit40.i ] - call void @_ZdlPv(ptr noundef nonnull %10) #19 + call void @_ZdlPv(ptr noundef nonnull %9) #19 br label %invoke.cont12 lpad8: ; preds = %for.body - %23 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -4363,23 +4362,23 @@ lpad11: ; preds = %lpad11.loopexit.spl br label %ehcleanup ehcleanup: ; preds = %lpad11, %lpad8 - %.pn306 = phi { ptr, i32 } [ %lpad.phi, %lpad11 ], [ %23, %lpad8 ] + %.pn306 = phi { ptr, i32 } [ %lpad.phi, %lpad11 ], [ %22, %lpad8 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %stats) #16 br label %ehcleanup258 if.end19: ; preds = %if.end.i, %for.cond.cleanup %type = getelementptr inbounds i8, ptr %expr, i64 8 - %24 = load i8, ptr %type, align 8, !tbaa !144 - switch i8 %24, label %cleanup257.sink.split [ + %23 = load i8, ptr %type, align 8, !tbaa !144 + switch i8 %23, label %cleanup257.sink.split [ i8 -104, label %for.cond20.preheader i8 14, label %sw.bb171 i8 15, label %sw.bb214 ] for.cond20.preheader: ; preds = %if.end19 - %25 = load ptr, ptr %_M_finish.i, align 8, !tbaa !109 - %26 = load ptr, ptr %children, align 8, !tbaa !108 - %cmp585.not = icmp eq ptr %25, %26 + %24 = load ptr, ptr %_M_finish.i, align 8, !tbaa !109 + %25 = load ptr, ptr %children, align 8, !tbaa !108 + %cmp585.not = icmp eq ptr %24, %25 br i1 %cmp585.not, label %cleanup, label %for.body24.lr.ph for.body24.lr.ph: ; preds = %for.cond20.preheader @@ -4403,18 +4402,18 @@ invoke.cont30: ; preds = %invoke.cont28 br i1 %call31, label %if.else, label %if.then32 if.then32: ; preds = %invoke.cont30 - %27 = load ptr, ptr %_M_finish.i, align 8, !tbaa !3 - %28 = load ptr, ptr %children, align 8, !tbaa !3 - %sub.ptr.lhs.cast.i324 = ptrtoint ptr %27 to i64 - %sub.ptr.rhs.cast.i325 = ptrtoint ptr %28 to i64 + %26 = load ptr, ptr %_M_finish.i, align 8, !tbaa !3 + %27 = load ptr, ptr %children, align 8, !tbaa !3 + %sub.ptr.lhs.cast.i324 = ptrtoint ptr %26 to i64 + %sub.ptr.rhs.cast.i325 = ptrtoint ptr %27 to i64 %sub.ptr.sub.i326 = sub i64 %sub.ptr.lhs.cast.i324, %sub.ptr.rhs.cast.i325 %cmp35 = icmp ugt i64 %sub.ptr.sub.i326, 8 br i1 %cmp35, label %if.then36, label %for.inc134 if.then36: ; preds = %if.then32 - %add.ptr.i328 = getelementptr inbounds %"class.duckdb::unique_ptr.26", ptr %28, i64 %i.0586 + %add.ptr.i328 = getelementptr inbounds %"class.duckdb::unique_ptr.26", ptr %27, i64 %i.0586 %add.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i328, i64 8 - %cmp.i.not.i.i = icmp eq ptr %add.ptr.i.i.i, %27 + %cmp.i.not.i.i = icmp eq ptr %add.ptr.i.i.i, %26 br i1 %cmp.i.not.i.i, label %if.end.i.i, label %if.then.i.i332 if.then.i.i332: ; preds = %if.then36 @@ -4428,18 +4427,18 @@ for.body.i.i.i.i.i.i.i: ; preds = %if.then.i.i332, %_Z %__n.010.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i, %_ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i.i, %if.then.i.i332 ] %__result.addr.09.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i, %_ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i328, %if.then.i.i332 ] %__first.addr.08.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %_ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i.i.i, %if.then.i.i332 ] - %29 = load ptr, ptr %__first.addr.08.i.i.i.i.i.i.i, align 8, !tbaa !3 + %28 = load ptr, ptr %__first.addr.08.i.i.i.i.i.i.i, align 8, !tbaa !3 store ptr null, ptr %__first.addr.08.i.i.i.i.i.i.i, align 8, !tbaa !3 - %30 = load ptr, ptr %__result.addr.09.i.i.i.i.i.i.i, align 8, !tbaa !3 - store ptr %29, ptr %__result.addr.09.i.i.i.i.i.i.i, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %30, null + %29 = load ptr, ptr %__result.addr.09.i.i.i.i.i.i.i, align 8, !tbaa !3 + store ptr %28, ptr %__result.addr.09.i.i.i.i.i.i.i, align 8, !tbaa !3 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %29, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i, label %_ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i - %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %30, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i = load ptr, ptr %29, align 8, !tbaa !103 %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 8 - %31 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - call void %31(ptr noundef nonnull align 8 dereferenceable(80) %30) #16 + %30 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i.i.i.i.i, align 8 + call void %30(ptr noundef nonnull align 8 dereferenceable(80) %29) #16 br label %_ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i _ZN6duckdb10unique_ptrINS_10ExpressionESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i @@ -4454,31 +4453,31 @@ if.end.loopexit.i.i: ; preds = %_ZN6duckdb10unique_ br label %if.end.i.i if.end.i.i: ; preds = %if.end.loopexit.i.i, %if.then.i.i332, %if.then36 - %32 = phi ptr [ %.pre.i.i, %if.end.loopexit.i.i ], [ %27, %if.then.i.i332 ], [ %27, %if.then36 ] - %incdec.ptr.i.i333 = getelementptr inbounds i8, ptr %32, i64 -8 + %31 = phi ptr [ %.pre.i.i, %if.end.loopexit.i.i ], [ %26, %if.then.i.i332 ], [ %26, %if.then36 ] + %incdec.ptr.i.i333 = getelementptr inbounds i8, ptr %31, i64 -8 store ptr %incdec.ptr.i.i333, ptr %_M_finish.i, align 8, !tbaa !109 - %33 = load ptr, ptr %incdec.ptr.i.i333, align 8, !tbaa !3 - %cmp.not.i.i.i.i.i334 = icmp eq ptr %33, null + %32 = load ptr, ptr %incdec.ptr.i.i333, align 8, !tbaa !3 + %cmp.not.i.i.i.i.i334 = icmp eq ptr %32, null br i1 %cmp.not.i.i.i.i.i334, label %invoke.cont46, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i: ; preds = %if.end.i.i - %vtable.i.i.i.i.i.i = load ptr, ptr %33, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i = load ptr, ptr %32, align 8, !tbaa !103 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 8 - %34 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 - call void %34(ptr noundef nonnull align 8 dereferenceable(80) %33) #16 + %33 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 + call void %33(ptr noundef nonnull align 8 dereferenceable(80) %32) #16 br label %invoke.cont46 invoke.cont46: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i, %if.end.i.i store ptr null, ptr %incdec.ptr.i.i333, align 8, !tbaa !3 - %35 = load ptr, ptr %child_stats, align 8, !tbaa !3 - %add.ptr.i335 = getelementptr inbounds %"class.duckdb::unique_ptr", ptr %35, i64 %i.0586 + %34 = load ptr, ptr %child_stats, align 8, !tbaa !3 + %add.ptr.i335 = getelementptr inbounds %"class.duckdb::unique_ptr", ptr %34, i64 %i.0586 %add.ptr.i.i.i340 = getelementptr inbounds i8, ptr %add.ptr.i335, i64 8 - %36 = load ptr, ptr %_M_finish.i.i.i341, align 8, !tbaa !3 - %cmp.i.not.i.i342 = icmp eq ptr %add.ptr.i.i.i340, %36 + %35 = load ptr, ptr %_M_finish.i.i.i341, align 8, !tbaa !3 + %cmp.i.not.i.i342 = icmp eq ptr %add.ptr.i.i.i340, %35 br i1 %cmp.i.not.i.i342, label %if.end.i.i349, label %if.then.i.i343 if.then.i.i343: ; preds = %invoke.cont46 - %sub.ptr.lhs.cast.i.i.i.i.i.i.i344 = ptrtoint ptr %36 to i64 + %sub.ptr.lhs.cast.i.i.i.i.i.i.i344 = ptrtoint ptr %35 to i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i345 = ptrtoint ptr %add.ptr.i.i.i340 to i64 %sub.ptr.sub.i.i.i.i.i.i.i346 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i344, %sub.ptr.rhs.cast.i.i.i.i.i.i.i345 %sub.ptr.div.i.i.i.i.i.i.i347 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i346, 3 @@ -4489,16 +4488,16 @@ for.body.i.i.i.i.i.i.i352: ; preds = %if.then.i.i343, %_Z %__n.010.i.i.i.i.i.i.i353 = phi i64 [ %dec.i.i.i.i.i.i.i359, %_ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i.i347, %if.then.i.i343 ] %__result.addr.09.i.i.i.i.i.i.i354 = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i358, %_ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i335, %if.then.i.i343 ] %__first.addr.08.i.i.i.i.i.i.i355 = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i357, %_ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i.i.i340, %if.then.i.i343 ] - %37 = load ptr, ptr %__first.addr.08.i.i.i.i.i.i.i355, align 8, !tbaa !3 + %36 = load ptr, ptr %__first.addr.08.i.i.i.i.i.i.i355, align 8, !tbaa !3 store ptr null, ptr %__first.addr.08.i.i.i.i.i.i.i355, align 8, !tbaa !3 - %38 = load ptr, ptr %__result.addr.09.i.i.i.i.i.i.i354, align 8, !tbaa !3 - store ptr %37, ptr %__result.addr.09.i.i.i.i.i.i.i354, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i356 = icmp eq ptr %38, null + %37 = load ptr, ptr %__result.addr.09.i.i.i.i.i.i.i354, align 8, !tbaa !3 + store ptr %36, ptr %__result.addr.09.i.i.i.i.i.i.i354, align 8, !tbaa !3 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i356 = icmp eq ptr %37, null br i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i356, label %_ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i352 - call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %38) #16 - call void @_ZdlPv(ptr noundef nonnull %38) #19 + call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %37) #16 + call void @_ZdlPv(ptr noundef nonnull %37) #19 br label %_ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i _ZN6duckdb10unique_ptrINS_14BaseStatisticsESt14default_deleteIS1_ELb1EEaSEOS4_.exit.i.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i352 @@ -4513,16 +4512,16 @@ if.end.loopexit.i.i361: ; preds = %_ZN6duckdb10unique_ br label %if.end.i.i349 if.end.i.i349: ; preds = %if.end.loopexit.i.i361, %if.then.i.i343, %invoke.cont46 - %39 = phi ptr [ %.pre.i.i362, %if.end.loopexit.i.i361 ], [ %36, %if.then.i.i343 ], [ %add.ptr.i.i.i340, %invoke.cont46 ] - %incdec.ptr.i.i350 = getelementptr inbounds i8, ptr %39, i64 -8 + %38 = phi ptr [ %.pre.i.i362, %if.end.loopexit.i.i361 ], [ %35, %if.then.i.i343 ], [ %add.ptr.i.i.i340, %invoke.cont46 ] + %incdec.ptr.i.i350 = getelementptr inbounds i8, ptr %38, i64 -8 store ptr %incdec.ptr.i.i350, ptr %_M_finish.i.i.i341, align 8, !tbaa !188 - %40 = load ptr, ptr %incdec.ptr.i.i350, align 8, !tbaa !3 - %cmp.not.i.i.i.i.i351 = icmp eq ptr %40, null + %39 = load ptr, ptr %incdec.ptr.i.i350, align 8, !tbaa !3 + %cmp.not.i.i.i.i.i351 = icmp eq ptr %39, null br i1 %cmp.not.i.i.i.i.i351, label %invoke.cont60, label %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i: ; preds = %if.end.i.i349 - call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %40) #16 - call void @_ZdlPv(ptr noundef nonnull %40) #19 + call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %39) #16 + call void @_ZdlPv(ptr noundef nonnull %39) #19 br label %invoke.cont60 invoke.cont60: ; preds = %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i, %if.end.i.i349 @@ -4533,7 +4532,7 @@ invoke.cont60: ; preds = %_ZNKSt14default_del br label %for.inc134 lpad25: ; preds = %invoke.cont69, %invoke.cont67, %if.else, %invoke.cont28, %invoke.cont26, %for.body24 - %41 = landingpad { ptr, i32 } + %40 = landingpad { ptr, i32 } cleanup br label %ehcleanup258 @@ -4571,15 +4570,15 @@ if.then77: ; preds = %if.then73 for.body.i.i.i.i.i.i: ; preds = %if.then77, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_10ExpressionESt14default_deleteIS2_ELb1EEEEvPT_.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.i, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_10ExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i ], [ %add.ptr.i369, %if.then77 ] - %42 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i, align 8, !tbaa !3 - %cmp.not.i.i.i.i.i.i.i.i = icmp eq ptr %42, null + %41 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i, align 8, !tbaa !3 + %cmp.not.i.i.i.i.i.i.i.i = icmp eq ptr %41, null br i1 %cmp.not.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_10ExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i - %vtable.i.i.i.i.i.i.i.i.i = load ptr, ptr %42, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i.i.i.i = load ptr, ptr %41, align 8, !tbaa !103 %vfn.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i.i.i, i64 8 - %43 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i, align 8 - call void %43(ptr noundef nonnull align 8 dereferenceable(80) %42) #16 + %42 = load ptr, ptr %vfn.i.i.i.i.i.i.i.i.i, align 8 + call void %42(ptr noundef nonnull align 8 dereferenceable(80) %41) #16 br label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_10ExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i _ZSt8_DestroyIN6duckdb10unique_ptrINS0_10ExpressionESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i @@ -4593,29 +4592,29 @@ invoke.cont.i.i.i: ; preds = %_ZSt8_DestroyIN6duc br label %invoke.cont98 invoke.cont98: ; preds = %invoke.cont.i.i.i, %if.then77 - %44 = phi ptr [ %add.ptr.i369, %invoke.cont.i.i.i ], [ %.pre597, %if.then77 ] - %45 = load ptr, ptr %child_stats, align 8, !tbaa !3 - %add.ptr.i398 = getelementptr inbounds %"class.duckdb::unique_ptr", ptr %45, i64 %i.0586 + %43 = phi ptr [ %add.ptr.i369, %invoke.cont.i.i.i ], [ %.pre597, %if.then77 ] + %44 = load ptr, ptr %child_stats, align 8, !tbaa !3 + %add.ptr.i398 = getelementptr inbounds %"class.duckdb::unique_ptr", ptr %44, i64 %i.0586 %add.ptr.i399 = getelementptr inbounds i8, ptr %add.ptr.i398, i64 8 - %46 = load ptr, ptr %_M_finish.i.i.i341, align 8, !tbaa !3 - %cmp.i.not.i.i408 = icmp eq ptr %add.ptr.i399, %46 + %45 = load ptr, ptr %_M_finish.i.i.i341, align 8, !tbaa !3 + %cmp.i.not.i.i408 = icmp eq ptr %add.ptr.i399, %45 br i1 %cmp.i.not.i.i408, label %cleanup, label %for.body.i.i.i.i.i.i422 for.body.i.i.i.i.i.i422: ; preds = %invoke.cont98, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i %__first.addr.04.i.i.i.i.i.i423 = phi ptr [ %incdec.ptr.i.i.i.i.i.i425, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i ], [ %add.ptr.i399, %invoke.cont98 ] - %47 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i423, align 8, !tbaa !3 - %cmp.not.i.i.i.i.i.i.i.i424 = icmp eq ptr %47, null + %46 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i423, align 8, !tbaa !3 + %cmp.not.i.i.i.i.i.i.i.i424 = icmp eq ptr %46, null br i1 %cmp.not.i.i.i.i.i.i.i.i424, label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i422 - call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %47) #16 - call void @_ZdlPv(ptr noundef nonnull %47) #19 + call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %46) #16 + call void @_ZdlPv(ptr noundef nonnull %46) #19 br label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i _ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i422 store ptr null, ptr %__first.addr.04.i.i.i.i.i.i423, align 8, !tbaa !3 %incdec.ptr.i.i.i.i.i.i425 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i423, i64 8 - %cmp.not.i.i.i.i.i.i426 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i425, %46 + %cmp.not.i.i.i.i.i.i426 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i425, %45 br i1 %cmp.not.i.i.i.i.i.i426, label %invoke.cont.i.i.i427, label %for.body.i.i.i.i.i.i422, !llvm.loop !205 invoke.cont.i.i.i427: ; preds = %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i.i.i @@ -4624,22 +4623,22 @@ invoke.cont.i.i.i427: ; preds = %_ZSt8_DestroyIN6duc br label %cleanup for.inc134: ; preds = %invoke.cont71, %invoke.cont60, %if.then32 - %48 = phi ptr [ %.pre599, %invoke.cont71 ], [ %.pre598, %invoke.cont60 ], [ %28, %if.then32 ] - %49 = phi ptr [ %.pre597, %invoke.cont71 ], [ %.pre, %invoke.cont60 ], [ %27, %if.then32 ] + %47 = phi ptr [ %.pre599, %invoke.cont71 ], [ %.pre598, %invoke.cont60 ], [ %27, %if.then32 ] + %48 = phi ptr [ %.pre597, %invoke.cont71 ], [ %.pre, %invoke.cont60 ], [ %26, %if.then32 ] %i.1 = phi i64 [ %i.0586, %invoke.cont71 ], [ %dec, %invoke.cont60 ], [ %i.0586, %if.then32 ] %inc = add i64 %i.1, 1 - %sub.ptr.lhs.cast.i319 = ptrtoint ptr %49 to i64 - %sub.ptr.rhs.cast.i320 = ptrtoint ptr %48 to i64 + %sub.ptr.lhs.cast.i319 = ptrtoint ptr %48 to i64 + %sub.ptr.rhs.cast.i320 = ptrtoint ptr %47 to i64 %sub.ptr.sub.i321 = sub i64 %sub.ptr.lhs.cast.i319, %sub.ptr.rhs.cast.i320 %sub.ptr.div.i322 = ashr exact i64 %sub.ptr.sub.i321, 3 %cmp = icmp ult i64 %inc, %sub.ptr.div.i322 br i1 %cmp, label %for.body24, label %cleanup, !llvm.loop !206 cleanup: ; preds = %for.inc134, %invoke.cont.i.i.i427, %invoke.cont98, %if.then73, %for.cond20.preheader - %50 = phi ptr [ %25, %for.cond20.preheader ], [ %44, %invoke.cont98 ], [ %.pre600, %invoke.cont.i.i.i427 ], [ %.pre597, %if.then73 ], [ %49, %for.inc134 ] - %51 = load ptr, ptr %children, align 8, !tbaa !108 - %sub.ptr.lhs.cast.i443 = ptrtoint ptr %50 to i64 - %sub.ptr.rhs.cast.i444 = ptrtoint ptr %51 to i64 + %49 = phi ptr [ %24, %for.cond20.preheader ], [ %43, %invoke.cont98 ], [ %.pre600, %invoke.cont.i.i.i427 ], [ %.pre597, %if.then73 ], [ %48, %for.inc134 ] + %50 = load ptr, ptr %children, align 8, !tbaa !108 + %sub.ptr.lhs.cast.i443 = ptrtoint ptr %49 to i64 + %sub.ptr.rhs.cast.i444 = ptrtoint ptr %50 to i64 %sub.ptr.sub.i445 = sub i64 %sub.ptr.lhs.cast.i443, %sub.ptr.rhs.cast.i444 %cmp139 = icmp eq i64 %sub.ptr.sub.i445, 8 br i1 %cmp139, label %if.then140, label %for.cond147.preheader @@ -4653,18 +4652,18 @@ if.then140: ; preds = %cleanup to label %invoke.cont142 unwind label %lpad invoke.cont142: ; preds = %if.then140 - %52 = load ptr, ptr %call143, align 8, !tbaa !3 + %51 = load ptr, ptr %call143, align 8, !tbaa !3 store ptr null, ptr %call143, align 8, !tbaa !3 - %53 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 - store ptr %52, ptr %expr_ptr, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i = icmp eq ptr %53, null + %52 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 + store ptr %51, ptr %expr_ptr, align 8, !tbaa !3 + %tobool.not.i.i.i.i.i = icmp eq ptr %52, null br i1 %tobool.not.i.i.i.i.i, label %if.end168, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i447 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i447: ; preds = %invoke.cont142 - %vtable.i.i.i.i.i.i448 = load ptr, ptr %53, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i448 = load ptr, ptr %52, align 8, !tbaa !103 %vfn.i.i.i.i.i.i449 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i448, i64 8 - %54 = load ptr, ptr %vfn.i.i.i.i.i.i449, align 8 - call void %54(ptr noundef nonnull align 8 dereferenceable(80) %53) #16 + %53 = load ptr, ptr %vfn.i.i.i.i.i.i449, align 8 + call void %53(ptr noundef nonnull align 8 dereferenceable(80) %52) #16 br label %if.end168 for.body152: ; preds = %for.cond147.preheader, %for.inc163 @@ -4690,17 +4689,17 @@ invoke.cont160: ; preds = %invoke.cont158 for.inc163: ; preds = %invoke.cont160 %inc164 = add nuw i64 %i146.0592, 1 - %55 = load ptr, ptr %_M_finish.i, align 8, !tbaa !109 - %56 = load ptr, ptr %children, align 8, !tbaa !108 - %sub.ptr.lhs.cast.i451 = ptrtoint ptr %55 to i64 - %sub.ptr.rhs.cast.i452 = ptrtoint ptr %56 to i64 + %54 = load ptr, ptr %_M_finish.i, align 8, !tbaa !109 + %55 = load ptr, ptr %children, align 8, !tbaa !108 + %sub.ptr.lhs.cast.i451 = ptrtoint ptr %54 to i64 + %sub.ptr.rhs.cast.i452 = ptrtoint ptr %55 to i64 %sub.ptr.sub.i453 = sub i64 %sub.ptr.lhs.cast.i451, %sub.ptr.rhs.cast.i452 %sub.ptr.div.i454 = ashr exact i64 %sub.ptr.sub.i453, 3 %cmp150 = icmp ult i64 %inc164, %sub.ptr.div.i454 br i1 %cmp150, label %for.body152, label %if.end168, !llvm.loop !207 lpad153: ; preds = %invoke.cont160, %invoke.cont158, %invoke.cont156, %invoke.cont154, %for.body152 - %57 = landingpad { ptr, i32 } + %56 = landingpad { ptr, i32 } cleanup br label %ehcleanup258 @@ -4709,8 +4708,8 @@ if.end168: ; preds = %for.inc163, %_ZNKSt to label %invoke.cont169 unwind label %lpad invoke.cont169: ; preds = %if.end168 - %58 = load i64, ptr %call170, align 8, !tbaa !3 - store i64 %58, ptr %agg.result, align 8, !tbaa !3 + %57 = load i64, ptr %call170, align 8, !tbaa !3 + store i64 %57, ptr %agg.result, align 8, !tbaa !3 br label %cleanup257.sink.split sw.bb171: ; preds = %if.end19 @@ -4744,7 +4743,7 @@ call.i.noexc: ; preds = %invoke.cont183 to label %invoke.cont185 unwind label %lpad.i, !noalias !208 lpad.i: ; preds = %call.i.noexc - %59 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } cleanup call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i) #16, !noalias !208 call void @_ZdlPv(ptr noundef nonnull %call.i455) #19, !noalias !208 @@ -4753,16 +4752,16 @@ lpad.i: ; preds = %call.i.noexc invoke.cont185: ; preds = %call.i.noexc call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i) #16, !noalias !208 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %agg.tmp.i) - %60 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 + %59 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 store ptr %call.i455, ptr %expr_ptr, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i456 = icmp eq ptr %60, null + %tobool.not.i.i.i.i.i456 = icmp eq ptr %59, null br i1 %tobool.not.i.i.i.i.i456, label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i457 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i457: ; preds = %invoke.cont185 - %vtable.i.i.i.i.i.i458 = load ptr, ptr %60, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i458 = load ptr, ptr %59, align 8, !tbaa !103 %vfn.i.i.i.i.i.i459 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i458, i64 8 - %61 = load ptr, ptr %vfn.i.i.i.i.i.i459, align 8 - call void %61(ptr noundef nonnull align 8 dereferenceable(80) %60) #16 + %60 = load ptr, ptr %vfn.i.i.i.i.i.i459, align 8 + call void %60(ptr noundef nonnull align 8 dereferenceable(80) %59) #16 br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i457, %invoke.cont185 @@ -4771,22 +4770,22 @@ _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535.invoke lpad182: ; preds = %if.then178 - %62 = landingpad { ptr, i32 } + %61 = landingpad { ptr, i32 } cleanup br label %ehcleanup188 lpad184: ; preds = %invoke.cont183 - %63 = landingpad { ptr, i32 } + %62 = landingpad { ptr, i32 } cleanup br label %lpad184.body lpad184.body: ; preds = %lpad184, %lpad.i - %eh.lpad-body = phi { ptr, i32 } [ %63, %lpad184 ], [ %59, %lpad.i ] + %eh.lpad-body = phi { ptr, i32 } [ %62, %lpad184 ], [ %58, %lpad.i ] call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp181) #16 br label %ehcleanup188 ehcleanup188: ; preds = %lpad184.body, %lpad182 - %.pn300 = phi { ptr, i32 } [ %eh.lpad-body, %lpad184.body ], [ %62, %lpad182 ] + %.pn300 = phi { ptr, i32 } [ %eh.lpad-body, %lpad184.body ], [ %61, %lpad182 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %ref.tmp181) #16 br label %ehcleanup258 @@ -4821,7 +4820,7 @@ call.i.noexc469: ; preds = %invoke.cont204 to label %invoke.cont206 unwind label %lpad.i468, !noalias !211 lpad.i468: ; preds = %call.i.noexc469 - %64 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } cleanup call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i467) #16, !noalias !211 call void @_ZdlPv(ptr noundef nonnull %call.i470) #19, !noalias !211 @@ -4830,16 +4829,16 @@ lpad.i468: ; preds = %call.i.noexc469 invoke.cont206: ; preds = %call.i.noexc469 call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i467) #16, !noalias !211 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %agg.tmp.i467) - %65 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 + %64 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 store ptr %call.i470, ptr %expr_ptr, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i473 = icmp eq ptr %65, null + %tobool.not.i.i.i.i.i473 = icmp eq ptr %64, null br i1 %tobool.not.i.i.i.i.i473, label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit489, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i474 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i474: ; preds = %invoke.cont206 - %vtable.i.i.i.i.i.i475 = load ptr, ptr %65, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i475 = load ptr, ptr %64, align 8, !tbaa !103 %vfn.i.i.i.i.i.i476 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i475, i64 8 - %66 = load ptr, ptr %vfn.i.i.i.i.i.i476, align 8 - call void %66(ptr noundef nonnull align 8 dereferenceable(80) %65) #16 + %65 = load ptr, ptr %vfn.i.i.i.i.i.i476, align 8 + call void %65(ptr noundef nonnull align 8 dereferenceable(80) %64) #16 br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit489 _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit489: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i474, %invoke.cont206 @@ -4848,22 +4847,22 @@ _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535.invoke lpad203: ; preds = %if.then199 - %67 = landingpad { ptr, i32 } + %66 = landingpad { ptr, i32 } cleanup br label %ehcleanup209 lpad205: ; preds = %invoke.cont204 - %68 = landingpad { ptr, i32 } + %67 = landingpad { ptr, i32 } cleanup br label %lpad205.body lpad205.body: ; preds = %lpad205, %lpad.i468 - %eh.lpad-body471 = phi { ptr, i32 } [ %68, %lpad205 ], [ %64, %lpad.i468 ] + %eh.lpad-body471 = phi { ptr, i32 } [ %67, %lpad205 ], [ %63, %lpad.i468 ] call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp202) #16 br label %ehcleanup209 ehcleanup209: ; preds = %lpad205.body, %lpad203 - %.pn302 = phi { ptr, i32 } [ %eh.lpad-body471, %lpad205.body ], [ %67, %lpad203 ] + %.pn302 = phi { ptr, i32 } [ %eh.lpad-body471, %lpad205.body ], [ %66, %lpad203 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %ref.tmp202) #16 br label %ehcleanup258 @@ -4898,7 +4897,7 @@ call.i.noexc492: ; preds = %invoke.cont226 to label %invoke.cont228 unwind label %lpad.i491, !noalias !214 lpad.i491: ; preds = %call.i.noexc492 - %69 = landingpad { ptr, i32 } + %68 = landingpad { ptr, i32 } cleanup call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i490) #16, !noalias !214 call void @_ZdlPv(ptr noundef nonnull %call.i493) #19, !noalias !214 @@ -4907,16 +4906,16 @@ lpad.i491: ; preds = %call.i.noexc492 invoke.cont228: ; preds = %call.i.noexc492 call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i490) #16, !noalias !214 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %agg.tmp.i490) - %70 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 + %69 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 store ptr %call.i493, ptr %expr_ptr, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i496 = icmp eq ptr %70, null + %tobool.not.i.i.i.i.i496 = icmp eq ptr %69, null br i1 %tobool.not.i.i.i.i.i496, label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit512, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i497 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i497: ; preds = %invoke.cont228 - %vtable.i.i.i.i.i.i498 = load ptr, ptr %70, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i498 = load ptr, ptr %69, align 8, !tbaa !103 %vfn.i.i.i.i.i.i499 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i498, i64 8 - %71 = load ptr, ptr %vfn.i.i.i.i.i.i499, align 8 - call void %71(ptr noundef nonnull align 8 dereferenceable(80) %70) #16 + %70 = load ptr, ptr %vfn.i.i.i.i.i.i499, align 8 + call void %70(ptr noundef nonnull align 8 dereferenceable(80) %69) #16 br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit512 _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit512: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i497, %invoke.cont228 @@ -4925,22 +4924,22 @@ _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535.invoke lpad225: ; preds = %if.then221 - %72 = landingpad { ptr, i32 } + %71 = landingpad { ptr, i32 } cleanup br label %ehcleanup231 lpad227: ; preds = %invoke.cont226 - %73 = landingpad { ptr, i32 } + %72 = landingpad { ptr, i32 } cleanup br label %lpad227.body lpad227.body: ; preds = %lpad227, %lpad.i491 - %eh.lpad-body494 = phi { ptr, i32 } [ %73, %lpad227 ], [ %69, %lpad.i491 ] + %eh.lpad-body494 = phi { ptr, i32 } [ %72, %lpad227 ], [ %68, %lpad.i491 ] call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp224) #16 br label %ehcleanup231 ehcleanup231: ; preds = %lpad227.body, %lpad225 - %.pn = phi { ptr, i32 } [ %eh.lpad-body494, %lpad227.body ], [ %72, %lpad225 ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body494, %lpad227.body ], [ %71, %lpad225 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %ref.tmp224) #16 br label %ehcleanup258 @@ -4975,7 +4974,7 @@ call.i.noexc515: ; preds = %invoke.cont247 to label %invoke.cont249 unwind label %lpad.i514, !noalias !217 lpad.i514: ; preds = %call.i.noexc515 - %74 = landingpad { ptr, i32 } + %73 = landingpad { ptr, i32 } cleanup call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i513) #16, !noalias !217 call void @_ZdlPv(ptr noundef nonnull %call.i516) #19, !noalias !217 @@ -4984,16 +4983,16 @@ lpad.i514: ; preds = %call.i.noexc515 invoke.cont249: ; preds = %call.i.noexc515 call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp.i513) #16, !noalias !217 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %agg.tmp.i513) - %75 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 + %74 = load ptr, ptr %expr_ptr, align 8, !tbaa !3 store ptr %call.i516, ptr %expr_ptr, align 8, !tbaa !3 - %tobool.not.i.i.i.i.i519 = icmp eq ptr %75, null + %tobool.not.i.i.i.i.i519 = icmp eq ptr %74, null br i1 %tobool.not.i.i.i.i.i519, label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535, label %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i520 _ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i520: ; preds = %invoke.cont249 - %vtable.i.i.i.i.i.i521 = load ptr, ptr %75, align 8, !tbaa !103 + %vtable.i.i.i.i.i.i521 = load ptr, ptr %74, align 8, !tbaa !103 %vfn.i.i.i.i.i.i522 = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i521, i64 8 - %76 = load ptr, ptr %vfn.i.i.i.i.i.i522, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(80) %75) #16 + %75 = load ptr, ptr %vfn.i.i.i.i.i.i522, align 8 + call void %75(ptr noundef nonnull align 8 dereferenceable(80) %74) #16 br label %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535 _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535: ; preds = %_ZNKSt14default_deleteIN6duckdb10ExpressionEEclEPS1_.exit.i.i.i.i.i520, %invoke.cont249 @@ -5006,22 +5005,22 @@ _ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev to label %cleanup257 unwind label %lpad lpad246: ; preds = %if.then242 - %77 = landingpad { ptr, i32 } + %76 = landingpad { ptr, i32 } cleanup br label %ehcleanup252 lpad248: ; preds = %invoke.cont247 - %78 = landingpad { ptr, i32 } + %77 = landingpad { ptr, i32 } cleanup br label %lpad248.body lpad248.body: ; preds = %lpad248, %lpad.i514 - %eh.lpad-body517 = phi { ptr, i32 } [ %78, %lpad248 ], [ %74, %lpad.i514 ] + %eh.lpad-body517 = phi { ptr, i32 } [ %77, %lpad248 ], [ %73, %lpad.i514 ] call void @_ZN6duckdb5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp245) #16 br label %ehcleanup252 ehcleanup252: ; preds = %lpad248.body, %lpad246 - %.pn298 = phi { ptr, i32 } [ %eh.lpad-body517, %lpad248.body ], [ %77, %lpad246 ] + %.pn298 = phi { ptr, i32 } [ %eh.lpad-body517, %lpad248.body ], [ %76, %lpad246 ] call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %ref.tmp245) #16 br label %ehcleanup258 @@ -5031,27 +5030,27 @@ cleanup257.sink.split: ; preds = %invoke.cont240, %in br label %cleanup257 cleanup257: ; preds = %cleanup257.sink.split, %_ZNSt10unique_ptrIN6duckdb23BoundConstantExpressionESt14default_deleteIS1_EED2Ev.exit535.invoke - %79 = load ptr, ptr %child_stats, align 8, !tbaa !186 + %78 = load ptr, ptr %child_stats, align 8, !tbaa !186 %_M_finish.i536 = getelementptr inbounds i8, ptr %child_stats, i64 8 - %80 = load ptr, ptr %_M_finish.i536, align 8, !tbaa !188 - %cmp.not3.i.i.i.i = icmp eq ptr %79, %80 + %79 = load ptr, ptr %_M_finish.i536, align 8, !tbaa !188 + %cmp.not3.i.i.i.i = icmp eq ptr %78, %79 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %cleanup257, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i - %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i ], [ %79, %cleanup257 ] - %81 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !3 - %cmp.not.i.i.i.i.i.i537 = icmp eq ptr %81, null + %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i ], [ %78, %cleanup257 ] + %80 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !3 + %cmp.not.i.i.i.i.i.i537 = icmp eq ptr %80, null br i1 %cmp.not.i.i.i.i.i.i537, label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i, label %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i _ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %81) #16 - call void @_ZdlPv(ptr noundef nonnull %81) #19 + call void @_ZN6duckdb14BaseStatisticsD1Ev(ptr noundef nonnull align 8 dereferenceable(88) %80) #16 + call void @_ZdlPv(ptr noundef nonnull %80) #19 br label %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i _ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN6duckdb14BaseStatisticsEEclEPS1_.exit.i.i.i.i.i.i, %for.body.i.i.i.i store ptr null, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !3 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %80 + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %79 br i1 %cmp.not.i.i.i.i, label %invoke.contthread-pre-split.i, label %for.body.i.i.i.i, !llvm.loop !205 invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEEEvPT_.exit.i.i.i.i @@ -5059,12 +5058,12 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN6duc br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %cleanup257 - %82 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %79, %cleanup257 ] - %tobool.not.i.i.i538 = icmp eq ptr %82, null + %81 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %78, %cleanup257 ] + %tobool.not.i.i.i538 = icmp eq ptr %81, null br i1 %tobool.not.i.i.i538, label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef nonnull %82) #19 + call void @_ZdlPv(ptr noundef nonnull %81) #19 br label %_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit _ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont.i @@ -5072,7 +5071,7 @@ _ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb ret void ehcleanup258: ; preds = %ehcleanup252, %ehcleanup231, %ehcleanup209, %ehcleanup188, %lpad153, %lpad25, %ehcleanup, %lpad - %.pn306.pn = phi { ptr, i32 } [ %.pn306, %ehcleanup ], [ %3, %lpad ], [ %.pn298, %ehcleanup252 ], [ %.pn, %ehcleanup231 ], [ %.pn302, %ehcleanup209 ], [ %.pn300, %ehcleanup188 ], [ %57, %lpad153 ], [ %41, %lpad25 ] + %.pn306.pn = phi { ptr, i32 } [ %.pn306, %ehcleanup ], [ %2, %lpad ], [ %.pn298, %ehcleanup252 ], [ %.pn, %ehcleanup231 ], [ %.pn302, %ehcleanup209 ], [ %.pn300, %ehcleanup188 ], [ %56, %lpad153 ], [ %40, %lpad25 ] call void @_ZNSt6vectorIN6duckdb10unique_ptrINS0_14BaseStatisticsESt14default_deleteIS2_ELb1EEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %child_stats) #16 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %child_stats) #16 resume { ptr, i32 } %.pn306.pn 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/gromacs/optimized/selectionoptionmanager.cpp.ll b/bench/gromacs/optimized/selectionoptionmanager.cpp.ll index 2eba780e515..7029df6edf2 100644 --- a/bench/gromacs/optimized/selectionoptionmanager.cpp.ll +++ b/bench/gromacs/optimized/selectionoptionmanager.cpp.ll @@ -1300,14 +1300,13 @@ define void @_ZN3gmx22SelectionOptionManager11initOptionsEPNS_17IOptionsContaine br i1 %.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !25 ._crit_edge.loopexit: ; preds = %.lr.ph - %14 = and i8 %spec.select, 1 - %15 = zext nneg i8 %14 to i32 + %14 = zext nneg i8 %spec.select to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %2 - %.0.lcssa = phi i32 [ 1, %2 ], [ %15, %._crit_edge.loopexit ] - %16 = load ptr, ptr %4, align 8 - tail call void @_ZN3gmx19SelectionCollection11initOptionsEPNS_17IOptionsContainerENS0_19SelectionTypeOptionE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %1, i32 noundef %.0.lcssa) + %.0.lcssa = phi i32 [ 1, %2 ], [ %14, %._crit_edge.loopexit ] + %15 = load ptr, ptr %4, align 8 + tail call void @_ZN3gmx19SelectionCollection11initOptionsEPNS_17IOptionsContainerENS0_19SelectionTypeOptionE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %1, i32 noundef %.0.lcssa) ret void } 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/image-rs/optimized/8143hfqbwzfmz2f.ll b/bench/image-rs/optimized/8143hfqbwzfmz2f.ll index 66e5295cc78..02eaa3901ac 100644 --- a/bench/image-rs/optimized/8143hfqbwzfmz2f.ll +++ b/bench/image-rs/optimized/8143hfqbwzfmz2f.ll @@ -30157,8 +30157,8 @@ _ZN5image6codecs3dxt16alpha_table_dxt517hf828886a08bcc26fE.exit.i.i: ; preds = % %89 = zext i8 %.val1.i.i.i.i.i.i.i.i.i.i to i32 %90 = sub nsw i32 %89, %84 %91 = mul nsw i32 %90, %90 - %switch.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp sgt i32 %.sroa.043.0.i.i.i.i.i, %91 - %.sroa.043.0.copyload44.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.smin.i32(i32 %.sroa.043.0.i.i.i.i.i, i32 %91) + %switch.i.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp samesign ugt i32 %.sroa.043.0.i.i.i.i.i, %91 + %.sroa.043.0.copyload44.sroa.speculated.i.i.i.i.i = tail call i32 @llvm.umin.i32(i32 %.sroa.043.0.i.i.i.i.i, i32 %91) %.sroa.847.0.copyload48.sroa.speculated.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 %.sroa.2.0.i.i.i.i.i.i.i.i.i, i64 %.sroa.847.0.i.i.i.i.i %.sroa.10.0.copyload49.sroa.speculated.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i.i.i.i.i.i.i.i.i, i32 %91, i32 %.sroa.10.0.i.i.i.i.i %92 = icmp eq i64 %.sroa.2.0.i.i.i.i.i.i.i.i.i, 7 @@ -30325,8 +30325,8 @@ _ZN5image6codecs3dxt16alpha_table_dxt517hf828886a08bcc26fE.exit.i84.i: ; preds = %148 = zext i8 %.val1.i.i.i.i.i.i.i.i.i95.i to i32 %149 = sub nsw i32 %148, %143 %150 = mul nsw i32 %149, %149 - %switch.i.i.i.i.i.i.i.i.i.i.i.i.i96.i = icmp sgt i32 %.sroa.043.0.i.i.i.i90.i, %150 - %.sroa.043.0.copyload44.sroa.speculated.i.i.i.i97.i = tail call i32 @llvm.smin.i32(i32 %.sroa.043.0.i.i.i.i90.i, i32 %150) + %switch.i.i.i.i.i.i.i.i.i.i.i.i.i96.i = icmp samesign ugt i32 %.sroa.043.0.i.i.i.i90.i, %150 + %.sroa.043.0.copyload44.sroa.speculated.i.i.i.i97.i = tail call i32 @llvm.umin.i32(i32 %.sroa.043.0.i.i.i.i90.i, i32 %150) %.sroa.847.0.copyload48.sroa.speculated.i.i.i.i98.i = select i1 %switch.i.i.i.i.i.i.i.i.i.i.i.i.i96.i, i64 %.sroa.2.0.i.i.i.i.i.i.i.i94.i, i64 %.sroa.847.0.i.i.i.i91.i %.sroa.10.0.copyload49.sroa.speculated.i.i.i.i99.i = select i1 %switch.i.i.i.i.i.i.i.i.i.i.i.i.i96.i, i32 %150, i32 %.sroa.10.0.i.i.i.i92.i %151 = icmp eq i64 %.sroa.2.0.i.i.i.i.i.i.i.i94.i, 7 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/netconsole.ll b/bench/linux/optimized/netconsole.ll index 300713d9189..39059a6fdac 100644 --- a/bench/linux/optimized/netconsole.ll +++ b/bench/linux/optimized/netconsole.ll @@ -145,12 +145,12 @@ define internal i32 @init_netconsole() #0 section ".init.text" align 16 { store ptr @config, ptr %1, align 8 %2 = load i8, ptr @config, align 16 %3 = icmp eq i8 %2, 0 - br i1 %3, label %74, label %4 + br i1 %3, label %73, label %4 4: ; preds = %0 %5 = call ptr @strsep(ptr noundef nonnull %1, ptr noundef nonnull @.str.9) #11 %6 = icmp eq ptr %5, null - br i1 %6, label %74, label %.preheader8 + br i1 %6, label %73, label %.preheader8 .preheader8: ; preds = %4, %57 %7 = phi ptr [ %69, %57 ], [ %5, %4 ] @@ -236,7 +236,7 @@ define internal i32 @init_netconsole() #0 section ".init.text" align 16 { 54: ; preds = %51 %55 = ptrtoint ptr %52 to i64 %56 = trunc i64 %55 to i32 - br label %82 + br label %81 57: ; preds = %51 %58 = getelementptr inbounds i8, ptr %52, i64 17 @@ -261,55 +261,54 @@ define internal i32 @init_netconsole() #0 section ".init.text" align 16 { br i1 %70, label %71, label %.preheader8, !llvm.loop !10 71: ; preds = %57 - %72 = and i8 %62, 1 - %73 = icmp eq i8 %72, 0 - br label %74 + %72 = icmp eq i8 %62, 0 + br label %73 -74: ; preds = %71, %4, %0 - %75 = phi i1 [ true, %0 ], [ true, %4 ], [ %73, %71 ] - %76 = call i32 @register_netdevice_notifier(ptr noundef nonnull @netconsole_netdev_notifier) #11 - %77 = icmp eq i32 %76, 0 - br i1 %77, label %78, label %82 +73: ; preds = %71, %4, %0 + %74 = phi i1 [ true, %0 ], [ true, %4 ], [ %72, %71 ] + %75 = call i32 @register_netdevice_notifier(ptr noundef nonnull @netconsole_netdev_notifier) #11 + %76 = icmp eq i32 %75, 0 + br i1 %76, label %77, label %81 -78: ; preds = %74 - br i1 %75, label %80, label %79 +77: ; preds = %73 + br i1 %74, label %79, label %78 -79: ; preds = %78 +78: ; preds = %77 call void @register_console(ptr noundef nonnull @netconsole_ext) #11 - br label %80 + br label %79 -80: ; preds = %79, %78 +79: ; preds = %78, %77 call void @register_console(ptr noundef nonnull @netconsole) #11 - %81 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.10) #13 + %80 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.10) #13 br label %.loopexit -82: ; preds = %74, %54 - %83 = phi i32 [ %56, %54 ], [ %76, %74 ] - %84 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.11) #13 - %85 = load ptr, ptr @target_list, align 8 - %86 = icmp eq ptr %85, @target_list - br i1 %86, label %.loopexit, label %.preheader - -.preheader: ; preds = %82, %.preheader - %87 = phi ptr [ %88, %.preheader ], [ %85, %82 ] - %88 = load ptr, ptr %87, align 8 - %89 = getelementptr inbounds i8, ptr %87, i64 8 - %90 = load ptr, ptr %89, align 8 - %91 = getelementptr inbounds i8, ptr %88, i64 8 - store ptr %90, ptr %91, align 8 - store volatile ptr %88, ptr %90, align 8 - store ptr inttoptr (i64 -2401263026318606080 to ptr), ptr %87, align 8 - store ptr inttoptr (i64 -2401263026318606046 to ptr), ptr %89, align 8 - %92 = getelementptr inbounds i8, ptr %87, i64 24 - call void @netpoll_cleanup(ptr noundef %92) #11 - call void @kfree(ptr noundef %87) #11 - %93 = icmp eq ptr %88, @target_list - br i1 %93, label %.loopexit, label %.preheader, !llvm.loop !11 - -.loopexit: ; preds = %.preheader, %82, %80 - %94 = phi i32 [ 0, %80 ], [ %83, %82 ], [ %83, %.preheader ] +81: ; preds = %73, %54 + %82 = phi i32 [ %56, %54 ], [ %75, %73 ] + %83 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.11) #13 + %84 = load ptr, ptr @target_list, align 8 + %85 = icmp eq ptr %84, @target_list + br i1 %85, label %.loopexit, label %.preheader + +.preheader: ; preds = %81, %.preheader + %86 = phi ptr [ %87, %.preheader ], [ %84, %81 ] + %87 = load ptr, ptr %86, align 8 + %88 = getelementptr inbounds i8, ptr %86, i64 8 + %89 = load ptr, ptr %88, align 8 + %90 = getelementptr inbounds i8, ptr %87, i64 8 + store ptr %89, ptr %90, align 8 + store volatile ptr %87, ptr %89, align 8 + store ptr inttoptr (i64 -2401263026318606080 to ptr), ptr %86, align 8 + store ptr inttoptr (i64 -2401263026318606046 to ptr), ptr %88, align 8 + %91 = getelementptr inbounds i8, ptr %86, i64 24 + call void @netpoll_cleanup(ptr noundef %91) #11 + call void @kfree(ptr noundef %86) #11 + %92 = icmp eq ptr %87, @target_list + br i1 %92, label %.loopexit, label %.preheader, !llvm.loop !11 + +.loopexit: ; preds = %.preheader, %81, %79 + %93 = phi i32 [ 0, %79 ], [ %82, %81 ], [ %82, %.preheader ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #11 - ret i32 %94 + ret i32 %93 } ; Function Attrs: null_pointer_is_valid 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/filesys.cpp.ll b/bench/minetest/optimized/filesys.cpp.ll index 14d19db76d8..8cc96d81c88 100644 --- a/bench/minetest/optimized/filesys.cpp.ll +++ b/bench/minetest/optimized/filesys.cpp.ll @@ -5038,27 +5038,26 @@ for.body.lr.ph: ; preds = %if.end for.cond.cleanup: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit166 %.pre = load ptr, ptr %content, align 8, !tbaa !35 %.pre248 = load ptr, ptr %_M_finish.i, align 8, !tbaa !32 - %8 = and i8 %spec.select59, 1 - %9 = icmp ne i8 %8, 0 + %8 = icmp ne i8 %spec.select59, 0 %cmp.not3.i.i.i.i = icmp eq ptr %.pre, %.pre248 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.cond.cleanup, %_ZSt8_DestroyIN2fs11DirListNodeEEvPT_.exit.i.i.i.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN2fs11DirListNodeEEvPT_.exit.i.i.i.i ], [ %.pre, %for.cond.cleanup ] - %10 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !4 - %11 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 16 - %cmp.i.i.i.i.i.i.i.i.i = icmp eq ptr %10, %11 + %9 = load ptr, ptr %__first.addr.04.i.i.i.i, align 8, !tbaa !4 + %10 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 16 + %cmp.i.i.i.i.i.i.i.i.i = icmp eq ptr %9, %10 br i1 %cmp.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, label %if.then.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: ; preds = %for.body.i.i.i.i %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i, i64 8 - %12 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8, !tbaa !12 - %cmp3.i.i.i.i.i.i.i.i.i = icmp ult i64 %12, 16 + %11 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8, !tbaa !12 + %cmp3.i.i.i.i.i.i.i.i.i = icmp ult i64 %11, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i) br label %_ZSt8_DestroyIN2fs11DirListNodeEEvPT_.exit.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i - call void @_ZdlPv(ptr noundef %10) #34 + call void @_ZdlPv(ptr noundef %9) #34 br label %_ZSt8_DestroyIN2fs11DirListNodeEEvPT_.exit.i.i.i.i _ZSt8_DestroyIN2fs11DirListNodeEEvPT_.exit.i.i.i.i: ; preds = %if.then.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 @@ -5071,13 +5070,13 @@ invoke.contthread-pre-split.i: ; preds = %_ZSt8_DestroyIN2fs1 br label %invoke.cont.i invoke.cont.i: ; preds = %invoke.contthread-pre-split.i, %for.cond.cleanup, %if.end - %retval4.0.lcssa251 = phi i1 [ %9, %invoke.contthread-pre-split.i ], [ %9, %for.cond.cleanup ], [ true, %if.end ] - %13 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %.pre248, %for.cond.cleanup ], [ %2, %if.end ] - %tobool.not.i.i.i = icmp eq ptr %13, null + %retval4.0.lcssa251 = phi i1 [ %8, %invoke.contthread-pre-split.i ], [ %8, %for.cond.cleanup ], [ true, %if.end ] + %12 = phi ptr [ %.pr.i, %invoke.contthread-pre-split.i ], [ %.pre248, %for.cond.cleanup ], [ %2, %if.end ] + %tobool.not.i.i.i = icmp eq ptr %12, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIN2fs11DirListNodeESaIS1_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef nonnull %13) #34 + call void @_ZdlPv(ptr noundef nonnull %12) #34 br label %_ZNSt6vectorIN2fs11DirListNodeESaIS1_EED2Ev.exit _ZNSt6vectorIN2fs11DirListNodeESaIS1_EED2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont.i @@ -5091,11 +5090,11 @@ for.body: ; preds = %_ZNSt7__cxx1112basi call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp) #32 call void @llvm.experimental.noalias.scope.decl(metadata !127) store ptr %4, ptr %ref.tmp, align 8, !tbaa !11, !alias.scope !127 - %14 = load ptr, ptr %source, align 8, !tbaa !4, !noalias !127 - %15 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !12, !noalias !127 + %13 = load ptr, ptr %source, align 8, !tbaa !4, !noalias !127 + %14 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !12, !noalias !127 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__dnew.i.i.i) #32, !noalias !127 - store i64 %15, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 - %cmp.i.i.i = icmp ugt i64 %15, 15 + store i64 %14, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 + %cmp.i.i.i = icmp ugt i64 %14, 15 br i1 %cmp.i.i.i, label %if.then.i.i.i65, label %if.end.i.i.i if.then.i.i.i65: ; preds = %for.body @@ -5104,35 +5103,35 @@ if.then.i.i.i65: ; preds = %for.body call2.i12.i.i.noexc: ; preds = %if.then.i.i.i65 store ptr %call2.i12.i.i66, ptr %ref.tmp, align 8, !tbaa !4, !alias.scope !127 - %16 = load i64, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 - store i64 %16, ptr %4, align 8, !tbaa !13, !alias.scope !127 + %15 = load i64, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 + store i64 %15, ptr %4, align 8, !tbaa !13, !alias.scope !127 br label %if.end.i.i.i if.end.i.i.i: ; preds = %call2.i12.i.i.noexc, %for.body - %17 = phi ptr [ %call2.i12.i.i66, %call2.i12.i.i.noexc ], [ %4, %for.body ] - switch i64 %15, label %if.end.i.i.i.i.i.i [ + %16 = phi ptr [ %call2.i12.i.i66, %call2.i12.i.i.noexc ], [ %4, %for.body ] + switch i64 %14, label %if.end.i.i.i.i.i.i [ i64 1, label %if.then.i.i.i.i.i i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i ] if.then.i.i.i.i.i: ; preds = %if.end.i.i.i - %18 = load i8, ptr %14, align 1, !tbaa !13 - store i8 %18, ptr %17, align 1, !tbaa !13 + %17 = load i8, ptr %13, align 1, !tbaa !13 + store i8 %17, ptr %16, align 1, !tbaa !13 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i if.end.i.i.i.i.i.i: ; preds = %if.end.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %17, ptr align 1 %14, i64 %15, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %16, ptr align 1 %13, i64 %14, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i: ; preds = %if.end.i.i.i.i.i.i, %if.then.i.i.i.i.i, %if.end.i.i.i - %19 = load i64, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 - store i64 %19, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 - %20 = load ptr, ptr %ref.tmp, align 8, !tbaa !4, !alias.scope !127 - %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %20, i64 %19 + %18 = load i64, ptr %__dnew.i.i.i, align 8, !tbaa !20, !noalias !127 + store i64 %18, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 + %19 = load ptr, ptr %ref.tmp, align 8, !tbaa !4, !alias.scope !127 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %19, i64 %18 store i8 0, ptr %arrayidx.i.i.i.i, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__dnew.i.i.i) #32, !noalias !127 - %21 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 - %cmp.i.i2.i = icmp eq i64 %21, 4611686018427387903 + %20 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 + %cmp.i.i2.i = icmp eq i64 %20, 4611686018427387903 br i1 %cmp.i.i2.i, label %if.then.i.i3.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i if.then.i.i3.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i @@ -5158,27 +5157,27 @@ lpad.i.loopexit.split-lp: ; preds = %if.then.i.i3.i lpad.i: ; preds = %lpad.i.loopexit.split-lp, %lpad.i.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad.i.loopexit ], [ %lpad.loopexit.split-lp, %lpad.i.loopexit.split-lp ] - %22 = load ptr, ptr %ref.tmp, align 8, !tbaa !4, !alias.scope !127 - %cmp.i.i.i.i = icmp eq ptr %22, %4 + %21 = load ptr, ptr %ref.tmp, align 8, !tbaa !4, !alias.scope !127 + %cmp.i.i.i.i = icmp eq ptr %21, %4 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i5.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %lpad.i - %23 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 - %cmp3.i.i.i.i = icmp ult i64 %23, 16 + %22 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !alias.scope !127 + %cmp3.i.i.i.i = icmp ult i64 %22, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %ehcleanup if.then.i.i5.i: ; preds = %lpad.i - call void @_ZdlPv(ptr noundef %22) #34 + call void @_ZdlPv(ptr noundef %21) #34 br label %ehcleanup invoke.cont: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i call void @llvm.experimental.noalias.scope.decl(metadata !130) %_M_string_length.i.i.i67 = getelementptr inbounds i8, ptr %__begin2.sroa.0.0246, i64 8 - %24 = load i64, ptr %_M_string_length.i.i.i67, align 8, !tbaa !12, !noalias !130 - %25 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !noalias !130 - %sub3.i.i.i.i = sub i64 4611686018427387903, %25 - %cmp.i.i.i.i69 = icmp ult i64 %sub3.i.i.i.i, %24 + %23 = load i64, ptr %_M_string_length.i.i.i67, align 8, !tbaa !12, !noalias !130 + %24 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12, !noalias !130 + %sub3.i.i.i.i = sub i64 4611686018427387903, %24 + %cmp.i.i.i.i69 = icmp ult i64 %sub3.i.i.i.i, %23 br i1 %cmp.i.i.i.i69, label %if.then.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i if.then.i.i.i.i: ; preds = %invoke.cont @@ -5189,53 +5188,53 @@ if.then.i.i.i.i: ; preds = %invoke.cont unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i: ; preds = %invoke.cont - %26 = load ptr, ptr %__begin2.sroa.0.0246, align 8, !tbaa !4, !noalias !130 - %call.i.i.i7072 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef %26, i64 noundef %24) + %25 = load ptr, ptr %__begin2.sroa.0.0246, align 8, !tbaa !4, !noalias !130 + %call.i.i.i7072 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef %25, i64 noundef %23) to label %call.i.i.i70.noexc unwind label %lpad10.loopexit call.i.i.i70.noexc: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i store ptr %5, ptr %sourcechild, align 8, !tbaa !11, !alias.scope !130 - %27 = load ptr, ptr %call.i.i.i7072, align 8, !tbaa !4 - %28 = getelementptr inbounds i8, ptr %call.i.i.i7072, i64 16 - %cmp.i.i.i71 = icmp eq ptr %27, %28 + %26 = load ptr, ptr %call.i.i.i7072, align 8, !tbaa !4 + %27 = getelementptr inbounds i8, ptr %call.i.i.i7072, i64 16 + %cmp.i.i.i71 = icmp eq ptr %26, %27 br i1 %cmp.i.i.i71, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %call.i.i.i70.noexc %_M_string_length.i.i1.i = getelementptr inbounds i8, ptr %call.i.i.i7072, i64 8 - %29 = load i64, ptr %_M_string_length.i.i1.i, align 8, !tbaa !12 - %cmp3.i.i.i = icmp ult i64 %29, 16 + %28 = load i64, ptr %_M_string_length.i.i1.i, align 8, !tbaa !12 + %cmp3.i.i.i = icmp ult i64 %28, 16 call void @llvm.assume(i1 %cmp3.i.i.i) - %add.i.i = add nuw nsw i64 %29, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 8 dereferenceable(1) %27, i64 %add.i.i, i1 false) + %add.i.i = add nuw nsw i64 %28, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %5, ptr noundef nonnull align 8 dereferenceable(1) %26, i64 %add.i.i, i1 false) br label %invoke.cont11 if.else.i.i: ; preds = %call.i.i.i70.noexc - store ptr %27, ptr %sourcechild, align 8, !tbaa !4, !alias.scope !130 - %30 = load i64, ptr %28, align 8, !tbaa !13 - store i64 %30, ptr %5, align 8, !tbaa !13, !alias.scope !130 + store ptr %26, ptr %sourcechild, align 8, !tbaa !4, !alias.scope !130 + %29 = load i64, ptr %27, align 8, !tbaa !13 + store i64 %29, ptr %5, align 8, !tbaa !13, !alias.scope !130 %_M_string_length.i27.i.phi.trans.insert.i = getelementptr inbounds i8, ptr %call.i.i.i7072, i64 8 %.pre.i = load i64, ptr %_M_string_length.i27.i.phi.trans.insert.i, align 8, !tbaa !12 br label %invoke.cont11 invoke.cont11: ; preds = %if.else.i.i, %if.then.i.i - %31 = phi i64 [ %29, %if.then.i.i ], [ %.pre.i, %if.else.i.i ] + %30 = phi i64 [ %28, %if.then.i.i ], [ %.pre.i, %if.else.i.i ] %_M_string_length.i27.i.i = getelementptr inbounds i8, ptr %call.i.i.i7072, i64 8 - store i64 %31, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12, !alias.scope !130 - store ptr %28, ptr %call.i.i.i7072, align 8, !tbaa !4 + store i64 %30, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12, !alias.scope !130 + store ptr %27, ptr %call.i.i.i7072, align 8, !tbaa !4 store i64 0, ptr %_M_string_length.i27.i.i, align 8, !tbaa !12 - store i8 0, ptr %28, align 8, !tbaa !13 - %32 = load ptr, ptr %ref.tmp, align 8, !tbaa !4 - %cmp.i.i.i73 = icmp eq ptr %32, %4 + store i8 0, ptr %27, align 8, !tbaa !13 + %31 = load ptr, ptr %ref.tmp, align 8, !tbaa !4 + %cmp.i.i.i73 = icmp eq ptr %31, %4 br i1 %cmp.i.i.i73, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i74 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %invoke.cont11 - %33 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12 - %cmp3.i.i.i77 = icmp ult i64 %33, 16 + %32 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12 + %cmp3.i.i.i77 = icmp ult i64 %32, 16 call void @llvm.assume(i1 %cmp3.i.i.i77) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit if.then.i.i74: ; preds = %invoke.cont11 - call void @_ZdlPv(ptr noundef %32) #34 + call void @_ZdlPv(ptr noundef %31) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.then.i.i74, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i @@ -5244,11 +5243,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.th call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp12) #32 call void @llvm.experimental.noalias.scope.decl(metadata !133) store ptr %6, ptr %ref.tmp12, align 8, !tbaa !11, !alias.scope !133 - %34 = load ptr, ptr %target, align 8, !tbaa !4, !noalias !133 - %35 = load i64, ptr %_M_string_length.i.i.i79, align 8, !tbaa !12, !noalias !133 + %33 = load ptr, ptr %target, align 8, !tbaa !4, !noalias !133 + %34 = load i64, ptr %_M_string_length.i.i.i79, align 8, !tbaa !12, !noalias !133 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__dnew.i.i.i78) #32, !noalias !133 - store i64 %35, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 - %cmp.i.i.i80 = icmp ugt i64 %35, 15 + store i64 %34, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 + %cmp.i.i.i80 = icmp ugt i64 %34, 15 br i1 %cmp.i.i.i80, label %if.then.i.i.i100, label %if.end.i.i.i81 if.then.i.i.i100: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit @@ -5257,35 +5256,35 @@ if.then.i.i.i100: ; preds = %_ZNSt7__cxx1112basi call2.i12.i.i.noexc101: ; preds = %if.then.i.i.i100 store ptr %call2.i12.i.i102, ptr %ref.tmp12, align 8, !tbaa !4, !alias.scope !133 - %36 = load i64, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 - store i64 %36, ptr %6, align 8, !tbaa !13, !alias.scope !133 + %35 = load i64, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 + store i64 %35, ptr %6, align 8, !tbaa !13, !alias.scope !133 br label %if.end.i.i.i81 if.end.i.i.i81: ; preds = %call2.i12.i.i.noexc101, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %37 = phi ptr [ %call2.i12.i.i102, %call2.i12.i.i.noexc101 ], [ %6, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] - switch i64 %35, label %if.end.i.i.i.i.i.i99 [ + %36 = phi ptr [ %call2.i12.i.i102, %call2.i12.i.i.noexc101 ], [ %6, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ] + switch i64 %34, label %if.end.i.i.i.i.i.i99 [ i64 1, label %if.then.i.i.i.i.i98 i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i82 ] if.then.i.i.i.i.i98: ; preds = %if.end.i.i.i81 - %38 = load i8, ptr %34, align 1, !tbaa !13 - store i8 %38, ptr %37, align 1, !tbaa !13 + %37 = load i8, ptr %33, align 1, !tbaa !13 + store i8 %37, ptr %36, align 1, !tbaa !13 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i82 if.end.i.i.i.i.i.i99: ; preds = %if.end.i.i.i81 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr align 1 %34, i64 %35, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %36, ptr align 1 %33, i64 %34, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i82 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i82: ; preds = %if.end.i.i.i.i.i.i99, %if.then.i.i.i.i.i98, %if.end.i.i.i81 - %39 = load i64, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 - store i64 %39, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 - %40 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4, !alias.scope !133 - %arrayidx.i.i.i.i84 = getelementptr inbounds i8, ptr %40, i64 %39 + %38 = load i64, ptr %__dnew.i.i.i78, align 8, !tbaa !20, !noalias !133 + store i64 %38, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 + %39 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4, !alias.scope !133 + %arrayidx.i.i.i.i84 = getelementptr inbounds i8, ptr %39, i64 %38 store i8 0, ptr %arrayidx.i.i.i.i84, align 1, !tbaa !13 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__dnew.i.i.i78) #32, !noalias !133 - %41 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 - %cmp.i.i2.i87 = icmp eq i64 %41, 4611686018427387903 + %40 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 + %cmp.i.i2.i87 = icmp eq i64 %40, 4611686018427387903 br i1 %cmp.i.i2.i87, label %if.then.i.i3.i96, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i88 if.then.i.i3.i96: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_.exit.i82 @@ -5311,26 +5310,26 @@ lpad.i90.loopexit.split-lp: ; preds = %if.then.i.i3.i96 lpad.i90: ; preds = %lpad.i90.loopexit.split-lp, %lpad.i90.loopexit %lpad.phi181 = phi { ptr, i32 } [ %lpad.loopexit179, %lpad.i90.loopexit ], [ %lpad.loopexit.split-lp180, %lpad.i90.loopexit.split-lp ] - %42 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4, !alias.scope !133 - %cmp.i.i.i.i91 = icmp eq ptr %42, %6 + %41 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4, !alias.scope !133 + %cmp.i.i.i.i91 = icmp eq ptr %41, %6 br i1 %cmp.i.i.i.i91, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i94, label %if.then.i.i5.i92 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i94: ; preds = %lpad.i90 - %43 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 - %cmp3.i.i.i.i95 = icmp ult i64 %43, 16 + %42 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !alias.scope !133 + %cmp3.i.i.i.i95 = icmp ult i64 %42, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i95) br label %ehcleanup19 if.then.i.i5.i92: ; preds = %lpad.i90 - call void @_ZdlPv(ptr noundef %42) #34 + call void @_ZdlPv(ptr noundef %41) #34 br label %ehcleanup19 invoke.cont14: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i88 call void @llvm.experimental.noalias.scope.decl(metadata !136) - %44 = load i64, ptr %_M_string_length.i.i.i67, align 8, !tbaa !12, !noalias !136 - %45 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !noalias !136 - %sub3.i.i.i.i107 = sub i64 4611686018427387903, %45 - %cmp.i.i.i.i108 = icmp ult i64 %sub3.i.i.i.i107, %44 + %43 = load i64, ptr %_M_string_length.i.i.i67, align 8, !tbaa !12, !noalias !136 + %44 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12, !noalias !136 + %sub3.i.i.i.i107 = sub i64 4611686018427387903, %44 + %cmp.i.i.i.i108 = icmp ult i64 %sub3.i.i.i.i107, %43 br i1 %cmp.i.i.i.i108, label %if.then.i.i.i.i121, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i109 if.then.i.i.i.i121: ; preds = %invoke.cont14 @@ -5341,60 +5340,60 @@ if.then.i.i.i.i121: ; preds = %invoke.cont14 unreachable _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i109: ; preds = %invoke.cont14 - %46 = load ptr, ptr %__begin2.sroa.0.0246, align 8, !tbaa !4, !noalias !136 - %call.i.i.i110123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp12, ptr noundef %46, i64 noundef %44) + %45 = load ptr, ptr %__begin2.sroa.0.0246, align 8, !tbaa !4, !noalias !136 + %call.i.i.i110123 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp12, ptr noundef %45, i64 noundef %43) to label %call.i.i.i110.noexc unwind label %lpad16.loopexit call.i.i.i110.noexc: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i109 store ptr %7, ptr %targetchild, align 8, !tbaa !11, !alias.scope !136 - %47 = load ptr, ptr %call.i.i.i110123, align 8, !tbaa !4 - %48 = getelementptr inbounds i8, ptr %call.i.i.i110123, i64 16 - %cmp.i.i.i111 = icmp eq ptr %47, %48 + %46 = load ptr, ptr %call.i.i.i110123, align 8, !tbaa !4 + %47 = getelementptr inbounds i8, ptr %call.i.i.i110123, i64 16 + %cmp.i.i.i111 = icmp eq ptr %46, %47 br i1 %cmp.i.i.i111, label %if.then.i.i117, label %if.else.i.i112 if.then.i.i117: ; preds = %call.i.i.i110.noexc %_M_string_length.i.i1.i118 = getelementptr inbounds i8, ptr %call.i.i.i110123, i64 8 - %49 = load i64, ptr %_M_string_length.i.i1.i118, align 8, !tbaa !12 - %cmp3.i.i.i119 = icmp ult i64 %49, 16 + %48 = load i64, ptr %_M_string_length.i.i1.i118, align 8, !tbaa !12 + %cmp3.i.i.i119 = icmp ult i64 %48, 16 call void @llvm.assume(i1 %cmp3.i.i.i119) - %add.i.i120 = add nuw nsw i64 %49, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, ptr noundef nonnull align 8 dereferenceable(1) %47, i64 %add.i.i120, i1 false) + %add.i.i120 = add nuw nsw i64 %48, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %7, ptr noundef nonnull align 8 dereferenceable(1) %46, i64 %add.i.i120, i1 false) br label %invoke.cont17 if.else.i.i112: ; preds = %call.i.i.i110.noexc - store ptr %47, ptr %targetchild, align 8, !tbaa !4, !alias.scope !136 - %50 = load i64, ptr %48, align 8, !tbaa !13 - store i64 %50, ptr %7, align 8, !tbaa !13, !alias.scope !136 + store ptr %46, ptr %targetchild, align 8, !tbaa !4, !alias.scope !136 + %49 = load i64, ptr %47, align 8, !tbaa !13 + store i64 %49, ptr %7, align 8, !tbaa !13, !alias.scope !136 %_M_string_length.i27.i.phi.trans.insert.i113 = getelementptr inbounds i8, ptr %call.i.i.i110123, i64 8 %.pre.i114 = load i64, ptr %_M_string_length.i27.i.phi.trans.insert.i113, align 8, !tbaa !12 br label %invoke.cont17 invoke.cont17: ; preds = %if.else.i.i112, %if.then.i.i117 - %51 = phi i64 [ %49, %if.then.i.i117 ], [ %.pre.i114, %if.else.i.i112 ] + %50 = phi i64 [ %48, %if.then.i.i117 ], [ %.pre.i114, %if.else.i.i112 ] %_M_string_length.i27.i.i115 = getelementptr inbounds i8, ptr %call.i.i.i110123, i64 8 - store i64 %51, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12, !alias.scope !136 - store ptr %48, ptr %call.i.i.i110123, align 8, !tbaa !4 + store i64 %50, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12, !alias.scope !136 + store ptr %47, ptr %call.i.i.i110123, align 8, !tbaa !4 store i64 0, ptr %_M_string_length.i27.i.i115, align 8, !tbaa !12 - store i8 0, ptr %48, align 8, !tbaa !13 - %52 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4 - %cmp.i.i.i125 = icmp eq ptr %52, %6 + store i8 0, ptr %47, align 8, !tbaa !13 + %51 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4 + %cmp.i.i.i125 = icmp eq ptr %51, %6 br i1 %cmp.i.i.i125, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i128, label %if.then.i.i126 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i128: ; preds = %invoke.cont17 - %53 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12 - %cmp3.i.i.i130 = icmp ult i64 %53, 16 + %52 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12 + %cmp3.i.i.i130 = icmp ult i64 %52, 16 call void @llvm.assume(i1 %cmp3.i.i.i130) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit131 if.then.i.i126: ; preds = %invoke.cont17 - call void @_ZdlPv(ptr noundef %52) #34 + call void @_ZdlPv(ptr noundef %51) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit131 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit131: ; preds = %if.then.i.i126, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i128 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp12) #32 %dir = getelementptr inbounds i8, ptr %__begin2.sroa.0.0246, i64 32 - %54 = load i8, ptr %dir, align 8, !tbaa !24, !range !30, !noundef !31 - %tobool.not = icmp eq i8 %54, 0 + %53 = load i8, ptr %dir, align 8, !tbaa !24, !range !30, !noundef !31 + %tobool.not = icmp eq i8 %53, 0 br i1 %tobool.not, label %if.else, label %if.then20 if.then20: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit131 @@ -5402,7 +5401,7 @@ if.then20: ; preds = %_ZNSt7__cxx1112basi to label %if.end30 unwind label %lpad21 lpad: ; preds = %if.then.i.i.i65 - %55 = landingpad { ptr, i32 } + %54 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -5418,27 +5417,27 @@ lpad10.loopexit.split-lp: ; preds = %if.then.i.i.i.i lpad10: ; preds = %lpad10.loopexit.split-lp, %lpad10.loopexit %lpad.phi178 = phi { ptr, i32 } [ %lpad.loopexit176, %lpad10.loopexit ], [ %lpad.loopexit.split-lp177, %lpad10.loopexit.split-lp ] - %56 = load ptr, ptr %ref.tmp, align 8, !tbaa !4 - %cmp.i.i.i132 = icmp eq ptr %56, %4 + %55 = load ptr, ptr %ref.tmp, align 8, !tbaa !4 + %cmp.i.i.i132 = icmp eq ptr %55, %4 br i1 %cmp.i.i.i132, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i135, label %if.then.i.i133 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i135: ; preds = %lpad10 - %57 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12 - %cmp3.i.i.i137 = icmp ult i64 %57, 16 + %56 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !12 + %cmp3.i.i.i137 = icmp ult i64 %56, 16 call void @llvm.assume(i1 %cmp3.i.i.i137) br label %ehcleanup if.then.i.i133: ; preds = %lpad10 - call void @_ZdlPv(ptr noundef %56) #34 + call void @_ZdlPv(ptr noundef %55) #34 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i133, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i135, %lpad, %if.then.i.i5.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %.pn = phi { ptr, i32 } [ %55, %lpad ], [ %lpad.phi, %if.then.i.i5.i ], [ %lpad.phi, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %lpad.phi178, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i135 ], [ %lpad.phi178, %if.then.i.i133 ] + %.pn = phi { ptr, i32 } [ %54, %lpad ], [ %lpad.phi, %if.then.i.i5.i ], [ %lpad.phi, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %lpad.phi178, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i135 ], [ %lpad.phi178, %if.then.i.i133 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #32 br label %ehcleanup34 lpad13: ; preds = %if.then.i.i.i100 - %58 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } cleanup br label %ehcleanup19 @@ -5454,40 +5453,40 @@ lpad16.loopexit.split-lp: ; preds = %if.then.i.i.i.i121 lpad16: ; preds = %lpad16.loopexit.split-lp, %lpad16.loopexit %lpad.phi184 = phi { ptr, i32 } [ %lpad.loopexit182, %lpad16.loopexit ], [ %lpad.loopexit.split-lp183, %lpad16.loopexit.split-lp ] - %59 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4 - %cmp.i.i.i139 = icmp eq ptr %59, %6 + %58 = load ptr, ptr %ref.tmp12, align 8, !tbaa !4 + %cmp.i.i.i139 = icmp eq ptr %58, %6 br i1 %cmp.i.i.i139, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i142, label %if.then.i.i140 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i142: ; preds = %lpad16 - %60 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12 - %cmp3.i.i.i144 = icmp ult i64 %60, 16 + %59 = load i64, ptr %_M_string_length.i.i.i.i.i83, align 8, !tbaa !12 + %cmp3.i.i.i144 = icmp ult i64 %59, 16 call void @llvm.assume(i1 %cmp3.i.i.i144) br label %ehcleanup19 if.then.i.i140: ; preds = %lpad16 - call void @_ZdlPv(ptr noundef %59) #34 + call void @_ZdlPv(ptr noundef %58) #34 br label %ehcleanup19 ehcleanup19: ; preds = %if.then.i.i140, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i142, %lpad13, %if.then.i.i5.i92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i94 - %.pn54 = phi { ptr, i32 } [ %58, %lpad13 ], [ %lpad.phi181, %if.then.i.i5.i92 ], [ %lpad.phi181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i94 ], [ %lpad.phi184, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i142 ], [ %lpad.phi184, %if.then.i.i140 ] + %.pn54 = phi { ptr, i32 } [ %57, %lpad13 ], [ %lpad.phi181, %if.then.i.i5.i92 ], [ %lpad.phi181, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i94 ], [ %lpad.phi184, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i142 ], [ %lpad.phi184, %if.then.i.i140 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp12) #32 br label %ehcleanup32 lpad21: ; preds = %if.else, %if.then20 - %61 = landingpad { ptr, i32 } + %60 = landingpad { ptr, i32 } cleanup - %62 = load ptr, ptr %targetchild, align 8, !tbaa !4 - %cmp.i.i.i146 = icmp eq ptr %62, %7 + %61 = load ptr, ptr %targetchild, align 8, !tbaa !4 + %cmp.i.i.i146 = icmp eq ptr %61, %7 br i1 %cmp.i.i.i146, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i149, label %if.then.i.i147 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i149: ; preds = %lpad21 - %63 = load i64, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12 - %cmp3.i.i.i151 = icmp ult i64 %63, 16 + %62 = load i64, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12 + %cmp3.i.i.i151 = icmp ult i64 %62, 16 call void @llvm.assume(i1 %cmp3.i.i.i151) br label %ehcleanup32 if.then.i.i147: ; preds = %lpad21 - call void @_ZdlPv(ptr noundef %62) #34 + call void @_ZdlPv(ptr noundef %61) #34 br label %ehcleanup32 if.else: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit131 @@ -5497,34 +5496,34 @@ if.else: ; preds = %_ZNSt7__cxx1112basi if.end30: ; preds = %if.else, %if.then20 %call27.sink = phi i1 [ %call23, %if.then20 ], [ %call27, %if.else ] %spec.select59 = select i1 %call27.sink, i8 %retval4.0247, i8 0 - %64 = load ptr, ptr %targetchild, align 8, !tbaa !4 - %cmp.i.i.i153 = icmp eq ptr %64, %7 + %63 = load ptr, ptr %targetchild, align 8, !tbaa !4 + %cmp.i.i.i153 = icmp eq ptr %63, %7 br i1 %cmp.i.i.i153, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i156, label %if.then.i.i154 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i156: ; preds = %if.end30 - %65 = load i64, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12 - %cmp3.i.i.i158 = icmp ult i64 %65, 16 + %64 = load i64, ptr %_M_string_length.i28.i.i116, align 8, !tbaa !12 + %cmp3.i.i.i158 = icmp ult i64 %64, 16 call void @llvm.assume(i1 %cmp3.i.i.i158) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit159 if.then.i.i154: ; preds = %if.end30 - call void @_ZdlPv(ptr noundef %64) #34 + call void @_ZdlPv(ptr noundef %63) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit159 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit159: ; preds = %if.then.i.i154, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i156 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %targetchild) #32 - %66 = load ptr, ptr %sourcechild, align 8, !tbaa !4 - %cmp.i.i.i160 = icmp eq ptr %66, %5 + %65 = load ptr, ptr %sourcechild, align 8, !tbaa !4 + %cmp.i.i.i160 = icmp eq ptr %65, %5 br i1 %cmp.i.i.i160, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i163, label %if.then.i.i161 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i163: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit159 - %67 = load i64, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12 - %cmp3.i.i.i165 = icmp ult i64 %67, 16 + %66 = load i64, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12 + %cmp3.i.i.i165 = icmp ult i64 %66, 16 call void @llvm.assume(i1 %cmp3.i.i.i165) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit166 if.then.i.i161: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit159 - call void @_ZdlPv(ptr noundef %66) #34 + call void @_ZdlPv(ptr noundef %65) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit166 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit166: ; preds = %if.then.i.i161, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i163 @@ -5534,20 +5533,20 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit166: ; preds = %if br i1 %cmp.i63.not, label %for.cond.cleanup, label %for.body ehcleanup32: ; preds = %if.then.i.i147, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i149, %ehcleanup19 - %.pn56 = phi { ptr, i32 } [ %.pn54, %ehcleanup19 ], [ %61, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i149 ], [ %61, %if.then.i.i147 ] + %.pn56 = phi { ptr, i32 } [ %.pn54, %ehcleanup19 ], [ %60, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i149 ], [ %60, %if.then.i.i147 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %targetchild) #32 - %68 = load ptr, ptr %sourcechild, align 8, !tbaa !4 - %cmp.i.i.i167 = icmp eq ptr %68, %5 + %67 = load ptr, ptr %sourcechild, align 8, !tbaa !4 + %cmp.i.i.i167 = icmp eq ptr %67, %5 br i1 %cmp.i.i.i167, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i170, label %if.then.i.i168 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i170: ; preds = %ehcleanup32 - %69 = load i64, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12 - %cmp3.i.i.i172 = icmp ult i64 %69, 16 + %68 = load i64, ptr %_M_string_length.i28.i.i, align 8, !tbaa !12 + %cmp3.i.i.i172 = icmp ult i64 %68, 16 call void @llvm.assume(i1 %cmp3.i.i.i172) br label %ehcleanup34 if.then.i.i168: ; preds = %ehcleanup32 - call void @_ZdlPv(ptr noundef %68) #34 + call void @_ZdlPv(ptr noundef %67) #34 br label %ehcleanup34 ehcleanup34: ; preds = %if.then.i.i168, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i170, %ehcleanup 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/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/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/edge_drawing.cpp.ll b/bench/opencv/optimized/edge_drawing.cpp.ll index e2a1f9c4c10..ada2ec3cf38 100644 --- a/bench/opencv/optimized/edge_drawing.cpp.ll +++ b/bench/opencv/optimized/edge_drawing.cpp.ll @@ -5570,10 +5570,10 @@ define hidden void @_ZN2cv8ximgproc15EdgeDrawingImpl11TestSegmentEiii(ptr nocapt %34 = getelementptr inbounds i16, ptr %23, i64 %33 %35 = load i16, ptr %34, align 2 %36 = zext i16 %35 to i32 - %37 = icmp sgt i32 %.081, %36 + %37 = icmp samesign ugt i32 %.081, %36 %38 = trunc nsw i64 %indvars.iv to i32 %spec.select = select i1 %37, i32 %38, i32 %.05880 - %spec.select70 = tail call i32 @llvm.smin.i32(i32 %.081, i32 %36) + %spec.select70 = tail call i32 @llvm.umin.i32(i32 %.081, i32 %36) %indvars.iv.next = add nsw i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond.not = icmp eq i32 %17, %lftr.wideiv @@ -24807,6 +24807,9 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #36 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #36 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.umin.i32(i32, i32) #34 + attributes #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,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { 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,+sse3,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } 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/openjdk/optimized/mlib_ImageConvKernelConvert.ll b/bench/openjdk/optimized/mlib_ImageConvKernelConvert.ll index 434217edec4..111f0566869 100644 --- a/bench/openjdk/optimized/mlib_ImageConvKernelConvert.ll +++ b/bench/openjdk/optimized/mlib_ImageConvKernelConvert.ll @@ -213,8 +213,8 @@ define range(i32 0, 2) i32 @j2d_mlib_ImageConvKernelConvert(ptr noundef %0, ptr br i1 %exitcond354.not, label %select.unfold.loopexit, label %80, !llvm.loop !12 select.unfold.loopexit: ; preds = %80 - %84 = icmp eq i32 %spec.select253, 1 - br i1 %84, label %.preheader, label %.preheader254 + %.not = icmp eq i32 %spec.select253, 0 + br i1 %.not, label %.preheader254, label %.preheader .preheader254: ; preds = %select.unfold.loopexit, %71 br i1 %60, label %.lr.ph309.preheader, label %.loopexit @@ -232,94 +232,94 @@ select.unfold.loopexit: ; preds = %80 .lr.ph311: ; preds = %.lr.ph311.preheader, %.lr.ph311 %indvars.iv360 = phi i64 [ 0, %.lr.ph311.preheader ], [ %indvars.iv.next361, %.lr.ph311 ] - %85 = getelementptr inbounds double, ptr %2, i64 %indvars.iv360 - %86 = load double, ptr %85, align 8 - %87 = fmul double %86, %58 - %88 = fptosi double %87 to i32 - %89 = shl i32 %88, %.0207 - %90 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv360 - store i32 %89, ptr %90, align 4 + %84 = getelementptr inbounds double, ptr %2, i64 %indvars.iv360 + %85 = load double, ptr %84, align 8 + %86 = fmul double %85, %58 + %87 = fptosi double %86 to i32 + %88 = shl i32 %87, %.0207 + %89 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv360 + store i32 %88, ptr %89, align 4 %indvars.iv.next361 = add nuw nsw i64 %indvars.iv360, 1 %exitcond364.not = icmp eq i64 %indvars.iv.next361, %wide.trip.count363 br i1 %exitcond364.not, label %.loopexit, label %.lr.ph311, !llvm.loop !13 .lr.ph309: ; preds = %.lr.ph309.preheader, %.lr.ph309 %indvars.iv355 = phi i64 [ 0, %.lr.ph309.preheader ], [ %indvars.iv.next356, %.lr.ph309 ] - %91 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv355 - %92 = load i32, ptr %91, align 4 - %93 = shl i32 %92, %.0207 - store i32 %93, ptr %91, align 4 + %90 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv355 + %91 = load i32, ptr %90, align 4 + %92 = shl i32 %91, %.0207 + store i32 %92, ptr %90, align 4 %indvars.iv.next356 = add nuw nsw i64 %indvars.iv355, 1 %exitcond359.not = icmp eq i64 %indvars.iv.next356, %wide.trip.count358 br i1 %exitcond359.not, label %.loopexit, label %.lr.ph309, !llvm.loop !14 .lr.ph.preheader: ; preds = %12, %12 - %94 = mul nuw nsw i32 %4, %3 - %wide.trip.count = zext nneg i32 %94 to i64 + %93 = mul nuw nsw i32 %4, %3 + %wide.trip.count = zext nneg i32 %93 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %.1221261 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %99, %.lr.ph ] - %95 = getelementptr inbounds double, ptr %2, i64 %indvars.iv - %96 = load double, ptr %95, align 8 - %97 = tail call double @llvm.fabs.f64(double %96) - %98 = fcmp ogt double %.1221261, %97 - %99 = select i1 %98, double %.1221261, double %97 + %.1221261 = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %98, %.lr.ph ] + %94 = getelementptr inbounds double, ptr %2, i64 %indvars.iv + %95 = load double, ptr %94, align 8 + %96 = tail call double @llvm.fabs.f64(double %95) + %97 = fcmp ogt double %.1221261, %96 + %98 = select i1 %97, double %.1221261, double %96 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !15 ._crit_edge: ; preds = %.lr.ph - %100 = tail call i32 @mlib_ilogb(double noundef %99) #4 - %101 = icmp sgt i32 %100, 29 - br i1 %101, label %.loopexit, label %102 - -102: ; preds = %._crit_edge - %spec.store.select16 = tail call i32 @llvm.smax.i32(i32 %100, i32 -100) - %103 = sub nsw i32 29, %spec.store.select16 - store i32 %103, ptr %1, align 4 - %104 = icmp slt i32 %100, -1 - br i1 %104, label %.lr.ph267, label %._crit_edge268 - -.lr.ph267: ; preds = %102, %.lr.ph267 - %.1209265 = phi i32 [ %106, %.lr.ph267 ], [ %103, %102 ] - %.0222264 = phi double [ %105, %.lr.ph267 ], [ 1.000000e+00, %102 ] - %105 = fmul double %.0222264, 0x41D0000000000000 - %106 = add nsw i32 %.1209265, -30 - %107 = icmp ugt i32 %.1209265, 60 - br i1 %107, label %.lr.ph267, label %._crit_edge268, !llvm.loop !16 - -._crit_edge268: ; preds = %.lr.ph267, %102 - %.0222.lcssa = phi double [ 1.000000e+00, %102 ], [ %105, %.lr.ph267 ] - %.1209.lcssa = phi i32 [ %103, %102 ], [ %106, %.lr.ph267 ] - %108 = shl nuw nsw i32 1, %.1209.lcssa - %109 = uitofp nneg i32 %108 to double - %110 = fmul double %.0222.lcssa, %109 - %wide.trip.count323 = zext nneg i32 %94 to i64 + %99 = tail call i32 @mlib_ilogb(double noundef %98) #4 + %100 = icmp sgt i32 %99, 29 + br i1 %100, label %.loopexit, label %101 + +101: ; preds = %._crit_edge + %spec.store.select16 = tail call i32 @llvm.smax.i32(i32 %99, i32 -100) + %102 = sub nsw i32 29, %spec.store.select16 + store i32 %102, ptr %1, align 4 + %103 = icmp slt i32 %99, -1 + br i1 %103, label %.lr.ph267, label %._crit_edge268 + +.lr.ph267: ; preds = %101, %.lr.ph267 + %.1209265 = phi i32 [ %105, %.lr.ph267 ], [ %102, %101 ] + %.0222264 = phi double [ %104, %.lr.ph267 ], [ 1.000000e+00, %101 ] + %104 = fmul double %.0222264, 0x41D0000000000000 + %105 = add nsw i32 %.1209265, -30 + %106 = icmp ugt i32 %.1209265, 60 + br i1 %106, label %.lr.ph267, label %._crit_edge268, !llvm.loop !16 + +._crit_edge268: ; preds = %.lr.ph267, %101 + %.0222.lcssa = phi double [ 1.000000e+00, %101 ], [ %104, %.lr.ph267 ] + %.1209.lcssa = phi i32 [ %102, %101 ], [ %105, %.lr.ph267 ] + %107 = shl nuw nsw i32 1, %.1209.lcssa + %108 = uitofp nneg i32 %107 to double + %109 = fmul double %.0222.lcssa, %108 + %wide.trip.count323 = zext nneg i32 %93 to i64 br label %.lr.ph273 .lr.ph273: ; preds = %._crit_edge268, %.lr.ph273 %indvars.iv320 = phi i64 [ 0, %._crit_edge268 ], [ %indvars.iv.next321, %.lr.ph273 ] - %111 = getelementptr inbounds double, ptr %2, i64 %indvars.iv320 - %112 = load double, ptr %111, align 8 - %113 = fcmp ogt double %112, 0.000000e+00 - %114 = tail call double @llvm.fmuladd.f64(double %112, double %110, double 5.000000e-01) - %115 = tail call double @llvm.fmuladd.f64(double %112, double %110, double -5.000000e-01) - %.sink377 = select i1 %113, double %114, double %115 - %116 = fcmp ogt double %.sink377, 0x41DFFFFFFFC00000 - %.0202 = select i1 %116, double 0x41DFFFFFFFC00000, double %.sink377 - %117 = fcmp olt double %.0202, 0xC1E0000000000000 - %.1203 = select i1 %117, double 0xC1E0000000000000, double %.0202 + %110 = getelementptr inbounds double, ptr %2, i64 %indvars.iv320 + %111 = load double, ptr %110, align 8 + %112 = fcmp ogt double %111, 0.000000e+00 + %113 = tail call double @llvm.fmuladd.f64(double %111, double %109, double 5.000000e-01) + %114 = tail call double @llvm.fmuladd.f64(double %111, double %109, double -5.000000e-01) + %.sink377 = select i1 %112, double %113, double %114 + %115 = fcmp ogt double %.sink377, 0x41DFFFFFFFC00000 + %.0202 = select i1 %115, double 0x41DFFFFFFFC00000, double %.sink377 + %116 = fcmp olt double %.0202, 0xC1E0000000000000 + %.1203 = select i1 %116, double 0xC1E0000000000000, double %.0202 %.sink365 = fptosi double %.1203 to i32 - %118 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv320 - store i32 %.sink365, ptr %118, align 4 + %117 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv320 + store i32 %.sink365, ptr %117, align 4 %indvars.iv.next321 = add nuw nsw i64 %indvars.iv320, 1 %exitcond324.not = icmp eq i64 %indvars.iv.next321, %wide.trip.count323 br i1 %exitcond324.not, label %.loopexit, label %.lr.ph273, !llvm.loop !17 -.loopexit: ; preds = %.lr.ph273, %.lr.ph291, %.lr.ph309, %.lr.ph311, %75, %41, %.preheader254, %.preheader, %12, %._crit_edge, %36, %6 - %.0206 = phi i32 [ 1, %6 ], [ 1, %36 ], [ 1, %._crit_edge ], [ 1, %12 ], [ 0, %.preheader ], [ 0, %.preheader254 ], [ 0, %41 ], [ 0, %75 ], [ 0, %.lr.ph311 ], [ 0, %.lr.ph309 ], [ 0, %.lr.ph291 ], [ 0, %.lr.ph273 ] +.loopexit: ; preds = %.lr.ph273, %.lr.ph291, %.lr.ph311, %.lr.ph309, %75, %41, %.preheader254, %.preheader, %12, %._crit_edge, %36, %6 + %.0206 = phi i32 [ 1, %6 ], [ 1, %36 ], [ 1, %._crit_edge ], [ 1, %12 ], [ 0, %.preheader ], [ 0, %.preheader254 ], [ 0, %41 ], [ 0, %75 ], [ 0, %.lr.ph309 ], [ 0, %.lr.ph311 ], [ 0, %.lr.ph291 ], [ 0, %.lr.ph273 ] ret i32 %.0206 } 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/openexr-c.c.ll b/bench/openusd/optimized/openexr-c.c.ll index 557058b72e6..06bd8407a83 100644 --- a/bench/openusd/optimized/openexr-c.c.ll +++ b/bench/openusd/optimized/openexr-c.c.ll @@ -17578,8 +17578,8 @@ define internal fastcc i32 @internal_exr_compute_tile_information(ptr noundef %0 %4 = getelementptr inbounds nuw i8, ptr %1, i64 4 %5 = load i32, ptr %4, align 4 switch i32 %5, label %6 [ - i32 0, label %169 - i32 2, label %169 + i32 0, label %166 + i32 2, label %166 ] 6: ; preds = %3 @@ -17590,13 +17590,13 @@ define internal fastcc i32 @internal_exr_compute_tile_information(ptr noundef %0 %8 = getelementptr inbounds nuw i8, ptr %1, i64 48 %9 = load ptr, ptr %8, align 8 %.not122 = icmp eq ptr %9, null - br i1 %.not122, label %169, label %10 + br i1 %.not122, label %166, label %10 10: ; preds = %7 %11 = getelementptr inbounds nuw i8, ptr %1, i64 96 %12 = load ptr, ptr %11, align 8 %.not123 = icmp eq ptr %12, null - br i1 %.not123, label %169, label %.thread + br i1 %.not123, label %166, label %.thread 13: ; preds = %6 %14 = getelementptr inbounds nuw i8, ptr %1, i64 96 @@ -17608,7 +17608,7 @@ define internal fastcc i32 @internal_exr_compute_tile_information(ptr noundef %0 %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 %18 = load ptr, ptr %17, align 8 %19 = tail call i32 %18(ptr noundef %0, i32 noundef 13) #50 - br label %169 + br label %166 .thread: ; preds = %10 %20 = getelementptr inbounds nuw i8, ptr %1, i64 200 @@ -17627,7 +17627,7 @@ define internal fastcc i32 @internal_exr_compute_tile_information(ptr noundef %0 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %1, i64 200 %.pre = load ptr, ptr %.phi.trans.insert, align 8 %26 = icmp eq ptr %.pre, null - br i1 %26, label %.thread184, label %169 + br i1 %26, label %.thread184, label %166 .thread184: ; preds = %22, %.thread, %25 %27 = phi ptr [ %14, %25 ], [ %11, %.thread ], [ %11, %22 ] @@ -17665,7 +17665,7 @@ define internal fastcc i32 @internal_exr_compute_tile_information(ptr noundef %0 %48 = getelementptr inbounds nuw i8, ptr %0, i64 56 %49 = load ptr, ptr %48, align 8 %50 = tail call i32 %49(ptr noundef %0, i32 noundef 14) #50 - br label %169 + br label %166 51: ; preds = %43 %52 = getelementptr inbounds nuw i8, ptr %32, i64 8 @@ -17714,8 +17714,8 @@ floor_log2.exit.loopexit: ; preds = %.lr.ph.i br i1 %68, label %.lr.ph.i126, label %._crit_edge.loopexit.i, !llvm.loop !83 ._crit_edge.loopexit.i: ; preds = %.lr.ph.i126 - %69 = add nuw i32 %.069.i, 2 - %70 = add i32 %69, %spec.select.i + %69 = add nuw nsw i32 %.069.i, 2 + %70 = add nuw nsw i32 %69, %spec.select.i br label %ceil_log2.exit 71: ; preds = %51 @@ -17771,8 +17771,8 @@ floor_log2.exit136.loopexit: ; preds = %.lr.ph.i133 br i1 %88, label %.lr.ph.i137, label %._crit_edge.loopexit.i143, !llvm.loop !83 ._crit_edge.loopexit.i143: ; preds = %.lr.ph.i137 - %89 = add nuw i32 %.069.i139, 2 - %90 = add i32 %89, %spec.select.i142 + %89 = add nuw nsw i32 %.069.i139, 2 + %90 = add nuw nsw i32 %89, %spec.select.i142 br label %ceil_log2.exit144 ceil_log2.exit144: ; preds = %84, %._crit_edge.loopexit.i143 @@ -17793,15 +17793,15 @@ ceil_log2.exit144: ; preds = %84, %._crit_edge.lo br i1 %96, label %.lr.ph.i145, label %._crit_edge.loopexit.i151, !llvm.loop !83 ._crit_edge.loopexit.i151: ; preds = %.lr.ph.i145 - %97 = add nuw i32 %.069.i147, 2 - %98 = add i32 %97, %spec.select.i150 + %97 = add nuw nsw i32 %.069.i147, 2 + %98 = add nuw nsw i32 %97, %spec.select.i150 br label %ceil_log2.exit 99: ; preds = %51 %100 = getelementptr inbounds nuw i8, ptr %0, i64 56 %101 = load ptr, ptr %100, align 8 %102 = tail call i32 %101(ptr noundef %0, i32 noundef 14) #50 - br label %169 + br label %166 ceil_log2.exit: ; preds = %floor_log2.exit131, %floor_log2.exit136.loopexit, %59, %floor_log2.exit.loopexit, %._crit_edge.loopexit.i151, %ceil_log2.exit144, %._crit_edge.loopexit.i, %64, %51 %.0116 = phi i32 [ 1, %51 ], [ 1, %64 ], [ %70, %._crit_edge.loopexit.i ], [ 1, %ceil_log2.exit144 ], [ %98, %._crit_edge.loopexit.i151 ], [ 1, %59 ], [ %63, %floor_log2.exit.loopexit ], [ 1, %floor_log2.exit131 ], [ %83, %floor_log2.exit136.loopexit ] @@ -17817,125 +17817,117 @@ ceil_log2.exit: ; preds = %floor_log2.exit131, %109 = shl nsw i64 %108, 3 %110 = tail call ptr %106(i64 noundef %109) #50 %111 = icmp eq ptr %110, null - br i1 %111, label %112, label %116 + br i1 %111, label %112, label %.lr.ph.preheader 112: ; preds = %ceil_log2.exit %113 = getelementptr inbounds nuw i8, ptr %0, i64 56 %114 = load ptr, ptr %113, align 8 %115 = tail call i32 %114(ptr noundef nonnull %0, i32 noundef 1) #50 - br label %169 + br label %166 -116: ; preds = %ceil_log2.exit - %117 = sext i32 %.0114 to i64 - %118 = getelementptr inbounds i32, ptr %110, i64 %117 - %119 = getelementptr inbounds i32, ptr %118, i64 %117 - %120 = sext i32 %.0116 to i64 - %121 = getelementptr inbounds i32, ptr %119, i64 %120 - %122 = icmp sgt i32 %.0114, 0 - br i1 %122, label %.lr.ph.preheader, label %.preheader - -.lr.ph.preheader: ; preds = %116 - %wide.trip.count = zext nneg i32 %.0114 to i64 +.lr.ph.preheader: ; preds = %ceil_log2.exit + %116 = sext i32 %.0114 to i64 + %117 = getelementptr inbounds i32, ptr %110, i64 %116 + %118 = getelementptr inbounds i32, ptr %117, i64 %116 + %119 = sext i32 %.0116 to i64 + %120 = getelementptr inbounds i32, ptr %118, i64 %119 + %wide.trip.count = zext i32 %.0114 to i64 br label %.lr.ph -.preheader: ; preds = %135, %116 - %123 = icmp sgt i32 %.0116, 0 - br i1 %123, label %.lr.ph170.preheader, label %._crit_edge - -.lr.ph170.preheader: ; preds = %.preheader - %wide.trip.count181 = zext nneg i32 %.0116 to i64 +.lr.ph170.preheader: ; preds = %132 + %wide.trip.count181 = zext i32 %.0116 to i64 br label %.lr.ph170 -.lr.ph: ; preds = %.lr.ph.preheader, %135 - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %135 ] - %124 = load i8, ptr %52, align 1 - %125 = shl nuw i64 1, %indvars.iv - %126 = sdiv i64 %36, %125 - %.mask160 = and i8 %124, -16 - %127 = icmp eq i8 %.mask160, 16 - %128 = shl i64 %126, %indvars.iv - %.not.i153 = icmp sle i64 %128, %35 - %or.cond.not.i = select i1 %127, i1 %.not.i153, i1 false - %129 = zext i1 %or.cond.not.i to i64 - %.0.i = add nsw i64 %126, %129 +.lr.ph: ; preds = %.lr.ph.preheader, %132 + %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %132 ] + %121 = load i8, ptr %52, align 1 + %122 = shl nuw i64 1, %indvars.iv + %123 = sdiv i64 %36, %122 + %.mask160 = and i8 %121, -16 + %124 = icmp eq i8 %.mask160, 16 + %125 = shl i64 %123, %indvars.iv + %.not.i153 = icmp sle i64 %125, %35 + %or.cond.not.i = select i1 %124, i1 %.not.i153, i1 false + %126 = zext i1 %or.cond.not.i to i64 + %.0.i = add nsw i64 %123, %126 %spec.store.select.i = tail call range(i64 1, 4294967298) i64 @llvm.smax.i64(i64 %.0.i, i64 1) %or.cond = icmp sgt i64 %.0.i, 2147483647 - br i1 %or.cond, label %130, label %135 + br i1 %or.cond, label %127, label %132 -130: ; preds = %.lr.ph - %131 = trunc nuw nsw i64 %indvars.iv to i32 - %132 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %133 = load ptr, ptr %132, align 8 - %134 = tail call i32 (ptr, i32, ptr, ...) %133(ptr noundef %0, i32 noundef 14, ptr noundef nonnull @.str.172, i32 noundef %.sroa.0.0.copyload, i32 noundef %.sroa.7.0.copyload, i64 noundef %spec.store.select.i, i32 noundef %131) #50 - br label %169 +127: ; preds = %.lr.ph + %128 = trunc nuw nsw i64 %indvars.iv to i32 + %129 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %130 = load ptr, ptr %129, align 8 + %131 = tail call i32 (ptr, i32, ptr, ...) %130(ptr noundef %0, i32 noundef 14, ptr noundef nonnull @.str.172, i32 noundef %.sroa.0.0.copyload, i32 noundef %.sroa.7.0.copyload, i64 noundef %spec.store.select.i, i32 noundef %128) #50 + br label %166 -135: ; preds = %.lr.ph - %136 = load i32, ptr %32, align 1 - %137 = zext i32 %136 to i64 - %138 = add nsw i64 %spec.store.select.i, -1 - %139 = add nuw nsw i64 %138, %137 - %140 = udiv i64 %139, %137 - %141 = trunc i64 %140 to i32 - %142 = getelementptr inbounds i32, ptr %110, i64 %indvars.iv - store i32 %141, ptr %142, align 4 - %143 = trunc nuw nsw i64 %spec.store.select.i to i32 - %144 = getelementptr inbounds i32, ptr %118, i64 %indvars.iv - store i32 %143, ptr %144, align 4 +132: ; preds = %.lr.ph + %133 = load i32, ptr %32, align 1 + %134 = zext i32 %133 to i64 + %135 = add nsw i64 %spec.store.select.i, -1 + %136 = add nuw nsw i64 %135, %134 + %137 = udiv i64 %136, %134 + %138 = trunc i64 %137 to i32 + %139 = getelementptr inbounds i32, ptr %110, i64 %indvars.iv + store i32 %138, ptr %139, align 4 + %140 = trunc nuw nsw i64 %spec.store.select.i to i32 + %141 = getelementptr inbounds i32, ptr %117, i64 %indvars.iv + store i32 %140, ptr %141, 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 %.preheader, label %.lr.ph, !llvm.loop !84 - -.lr.ph170: ; preds = %.lr.ph170.preheader, %156 - %indvars.iv178 = phi i64 [ 0, %.lr.ph170.preheader ], [ %indvars.iv.next179, %156 ] - %145 = load i8, ptr %52, align 1 - %146 = shl nuw i64 1, %indvars.iv178 - %147 = sdiv i64 %40, %146 - %.mask = and i8 %145, -16 - %148 = icmp eq i8 %.mask, 16 - %149 = shl i64 %147, %indvars.iv178 - %.not.i154 = icmp sle i64 %149, %39 - %or.cond.not.i155 = select i1 %148, i1 %.not.i154, i1 false - %150 = zext i1 %or.cond.not.i155 to i64 - %.0.i156 = add nsw i64 %147, %150 + br i1 %exitcond.not, label %.lr.ph170.preheader, label %.lr.ph, !llvm.loop !84 + +.lr.ph170: ; preds = %.lr.ph170.preheader, %153 + %indvars.iv178 = phi i64 [ 0, %.lr.ph170.preheader ], [ %indvars.iv.next179, %153 ] + %142 = load i8, ptr %52, align 1 + %143 = shl nuw i64 1, %indvars.iv178 + %144 = sdiv i64 %40, %143 + %.mask = and i8 %142, -16 + %145 = icmp eq i8 %.mask, 16 + %146 = shl i64 %144, %indvars.iv178 + %.not.i154 = icmp sle i64 %146, %39 + %or.cond.not.i155 = select i1 %145, i1 %.not.i154, i1 false + %147 = zext i1 %or.cond.not.i155 to i64 + %.0.i156 = add nsw i64 %144, %147 %spec.store.select.i157 = tail call range(i64 1, 4294967298) i64 @llvm.smax.i64(i64 %.0.i156, i64 1) %or.cond3 = icmp sgt i64 %.0.i156, 2147483647 - br i1 %or.cond3, label %151, label %156 + br i1 %or.cond3, label %148, label %153 -151: ; preds = %.lr.ph170 - %152 = trunc nuw nsw i64 %indvars.iv178 to i32 - %153 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %154 = load ptr, ptr %153, align 8 - %155 = tail call i32 (ptr, i32, ptr, ...) %154(ptr noundef %0, i32 noundef 14, ptr noundef nonnull @.str.173, i32 noundef %.sroa.4.0.copyload, i32 noundef %.sroa.10.0.copyload, i64 noundef %spec.store.select.i157, i32 noundef %152) #50 - br label %169 +148: ; preds = %.lr.ph170 + %149 = trunc nuw nsw i64 %indvars.iv178 to i32 + %150 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %151 = load ptr, ptr %150, align 8 + %152 = tail call i32 (ptr, i32, ptr, ...) %151(ptr noundef %0, i32 noundef 14, ptr noundef nonnull @.str.173, i32 noundef %.sroa.4.0.copyload, i32 noundef %.sroa.10.0.copyload, i64 noundef %spec.store.select.i157, i32 noundef %149) #50 + br label %166 -156: ; preds = %.lr.ph170 - %157 = load i32, ptr %44, align 1 - %158 = zext i32 %157 to i64 - %159 = add nsw i64 %spec.store.select.i157, -1 - %160 = add nuw nsw i64 %159, %158 - %161 = udiv i64 %160, %158 - %162 = trunc i64 %161 to i32 - %163 = getelementptr inbounds i32, ptr %119, i64 %indvars.iv178 - store i32 %162, ptr %163, align 4 - %164 = trunc nuw nsw i64 %spec.store.select.i157 to i32 - %165 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv178 - store i32 %164, ptr %165, align 4 +153: ; preds = %.lr.ph170 + %154 = load i32, ptr %44, align 1 + %155 = zext i32 %154 to i64 + %156 = add nsw i64 %spec.store.select.i157, -1 + %157 = add nuw nsw i64 %156, %155 + %158 = udiv i64 %157, %155 + %159 = trunc i64 %158 to i32 + %160 = getelementptr inbounds i32, ptr %118, i64 %indvars.iv178 + store i32 %159, ptr %160, align 4 + %161 = trunc nuw nsw i64 %spec.store.select.i157 to i32 + %162 = getelementptr inbounds i32, ptr %120, i64 %indvars.iv178 + store i32 %161, ptr %162, align 4 %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, label %.lr.ph170, !llvm.loop !85 -._crit_edge: ; preds = %156, %.preheader +._crit_edge: ; preds = %153 store ptr %110, ptr %28, align 8 - %166 = getelementptr inbounds nuw i8, ptr %1, i64 208 - store ptr %119, ptr %166, align 8 - %167 = getelementptr inbounds nuw i8, ptr %1, i64 216 - store ptr %118, ptr %167, align 8 - %168 = getelementptr inbounds nuw i8, ptr %1, i64 224 - store ptr %121, ptr %168, align 8 - br label %169 + %163 = getelementptr inbounds nuw i8, ptr %1, i64 208 + store ptr %118, ptr %163, align 8 + %164 = getelementptr inbounds nuw i8, ptr %1, i64 216 + store ptr %117, ptr %164, align 8 + %165 = getelementptr inbounds nuw i8, ptr %1, i64 224 + store ptr %120, ptr %165, align 8 + br label %166 -169: ; preds = %25, %._crit_edge, %7, %10, %3, %3, %151, %130, %112, %99, %47, %16 - %.0 = phi i32 [ %50, %47 ], [ %102, %99 ], [ %115, %112 ], [ %134, %130 ], [ %155, %151 ], [ %19, %16 ], [ 0, %3 ], [ 0, %3 ], [ 0, %10 ], [ 0, %7 ], [ 0, %._crit_edge ], [ 0, %25 ] +166: ; preds = %25, %._crit_edge, %7, %10, %3, %3, %148, %127, %112, %99, %47, %16 + %.0 = phi i32 [ %50, %47 ], [ %102, %99 ], [ %115, %112 ], [ %131, %127 ], [ %152, %148 ], [ %19, %16 ], [ 0, %3 ], [ 0, %3 ], [ 0, %10 ], [ 0, %7 ], [ 0, %._crit_edge ], [ 0, %25 ] ret i32 %.0 } 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/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/regex-rs/optimized/1pxsmct4oxs5dlep.ll b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll index f5d2260f6c7..fe98c303bd1 100644 --- a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll +++ b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll @@ -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" @@ -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 @@ -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" @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 0770f3ae2ce..ec064aa9e95 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -289543,12 +289543,12 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In br label %138 138: ; preds = %sqlite3VdbeJumpHere.exit, %sqlite3VdbeAddOp3.exit119 - %.0264 = phi i32 [ 0, %sqlite3VdbeJumpHere.exit ], [ %285, %sqlite3VdbeAddOp3.exit119 ] - %139 = add nsw i32 %.0264, %18 + %.0263 = phi i32 [ 0, %sqlite3VdbeJumpHere.exit ], [ %285, %sqlite3VdbeAddOp3.exit119 ] + %139 = add nsw i32 %.0263, %18 %140 = load i32, ptr %38, align 8 %141 = load i32, ptr %39, align 4 - %.not.i116263 = icmp sgt i32 %141, %140 - br i1 %.not.i116263, label %.tailrecurse.i115._crit_edge_crit_edge, label %.lr.ph + %.not.i116262 = icmp sgt i32 %141, %140 + br i1 %.not.i116262, label %.tailrecurse.i115._crit_edge_crit_edge, label %.lr.ph .tailrecurse.i115._crit_edge_crit_edge: ; preds = %138 %.pre = load ptr, ptr %137, align 8 @@ -289557,10 +289557,10 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In .lr.ph: ; preds = %138, %growOpArray.exit %142 = phi i32 [ %273, %growOpArray.exit ], [ %141, %138 ] %143 = load ptr, ptr %136, align 8 - %.not.i138 = icmp eq i32 %142, 0 + %.not.i137 = icmp eq i32 %142, 0 %144 = sext i32 %142 to i64 %145 = shl nsw i64 %144, 1 - %146 = select i1 %.not.i138, i64 42, i64 %145 + %146 = select i1 %.not.i137, i64 42, i64 %145 %147 = load ptr, ptr %143, align 8 %148 = getelementptr inbounds i8, ptr %147, i64 156 %149 = load i32, ptr %148, align 4 @@ -289601,8 +289601,8 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In store i16 0, ptr %170, align 4 %171 = getelementptr inbounds i8, ptr %147, i64 344 %172 = load ptr, ptr %171, align 8 - %.not.i.i141 = icmp eq ptr %172, null - br i1 %.not.i.i141, label %sqlite3VdbeAddOp3.exit119, label %173 + %.not.i.i140 = icmp eq ptr %172, null + br i1 %.not.i.i140, label %sqlite3VdbeAddOp3.exit119, label %173 173: ; preds = %166 tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %172, ptr noundef nonnull @.str.115) #60 @@ -289616,7 +289616,7 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In br i1 %.not1619.i.i, label %sqlite3VdbeAddOp3.exit119, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %173, %.lr.ph.i.i - %.020.i.i = phi ptr [ %.0.i.i142, %.lr.ph.i.i ], [ %.018.i.i, %173 ] + %.020.i.i = phi ptr [ %.0.i.i141, %.lr.ph.i.i ], [ %.018.i.i, %173 ] %177 = getelementptr inbounds i8, ptr %.020.i.i, i64 48 %178 = load i32, ptr %177, align 8 %179 = add nsw i32 %178, 1 @@ -289624,8 +289624,8 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In %180 = getelementptr inbounds i8, ptr %.020.i.i, i64 24 store i32 7, ptr %180, align 8 %.0.in.i.i = getelementptr inbounds i8, ptr %.020.i.i, i64 264 - %.0.i.i142 = load ptr, ptr %.0.in.i.i, align 8 - %.not16.i.i = icmp eq ptr %.0.i.i142, null + %.0.i.i141 = load ptr, ptr %.0.in.i.i, align 8 + %.not16.i.i = icmp eq ptr %.0.i.i141, null br i1 %.not16.i.i, label %sqlite3VdbeAddOp3.exit119, label %.lr.ph.i.i, !llvm.loop !62 181: ; preds = %.lr.ph @@ -289643,12 +289643,12 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In 189: ; preds = %185 %190 = getelementptr inbounds i8, ptr %147, i64 472 %191 = load ptr, ptr %190, align 8 - %.not.i164 = icmp ult ptr %182, %191 - br i1 %.not.i164, label %194, label %192 + %.not.i163 = icmp ult ptr %182, %191 + br i1 %.not.i163, label %194, label %192 192: ; preds = %189 %193 = icmp ult i64 %183, 129 - br i1 %193, label %sqlite3DbRealloc.exit.thread191, label %201 + br i1 %193, label %sqlite3DbRealloc.exit.thread190, label %201 194: ; preds = %189 %195 = getelementptr inbounds i8, ptr %147, i64 480 @@ -289660,8 +289660,8 @@ sqlite3VdbeJumpHere.exit: ; preds = %sqlite3VdbeAddOp4In %198 = getelementptr inbounds i8, ptr %147, i64 414 %199 = load i16, ptr %198, align 2 %200 = zext i16 %199 to i64 - %.not20.i165 = icmp ugt i64 %183, %200 - br i1 %.not20.i165, label %201, label %sqlite3DbRealloc.exit.thread191 + %.not20.i164 = icmp ugt i64 %183, %200 + br i1 %.not20.i164, label %201, label %sqlite3DbRealloc.exit.thread190 201: ; preds = %197, %194, %192, %185 %202 = getelementptr inbounds i8, ptr %147, i64 103 @@ -289702,12 +289702,12 @@ sqlite3DbFree.exit.i: ; preds = %216, %212 %220 = phi i64 [ %219, %216 ], [ 128, %212 ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %211, ptr nonnull align 1 %182, i64 %220, i1 false) tail call fastcc void @sqlite3DbFreeNN(ptr noundef nonnull %147, ptr noundef nonnull %182) - br label %sqlite3DbRealloc.exit.thread191 + br label %sqlite3DbRealloc.exit.thread190 isLookaside.exit.thread.i: ; preds = %isLookaside.exit.i, %205 %221 = tail call fastcc ptr @sqlite3Realloc(ptr noundef nonnull %182, i64 noundef %183) %.not19.i.i = icmp eq ptr %221, null - br i1 %.not19.i.i, label %222, label %sqlite3DbRealloc.exit.thread191 + br i1 %.not19.i.i, label %222, label %sqlite3DbRealloc.exit.thread190 222: ; preds = %isLookaside.exit.thread.i %223 = getelementptr inbounds i8, ptr %147, i64 103 @@ -289764,38 +289764,38 @@ isLookaside.exit.thread.i: ; preds = %isLookaside.exit.i, store i32 %249, ptr %247, align 8 %250 = getelementptr inbounds i8, ptr %.0.i2230.i, i64 24 store i32 7, ptr %250, align 8 - %.0.in.i.i162 = getelementptr inbounds i8, ptr %.0.i2230.i, i64 264 - %.0.i22.i = load ptr, ptr %.0.in.i.i162, align 8 - %.not16.i.i163 = icmp eq ptr %.0.i22.i, null - br i1 %.not16.i.i163, label %sqlite3VdbeAddOp3.exit119, label %.lr.ph.i, !llvm.loop !62 + %.0.in.i.i161 = getelementptr inbounds i8, ptr %.0.i2230.i, i64 264 + %.0.i22.i = load ptr, ptr %.0.in.i.i161, align 8 + %.not16.i.i162 = icmp eq ptr %.0.i22.i, null + br i1 %.not16.i.i162, label %sqlite3VdbeAddOp3.exit119, label %.lr.ph.i, !llvm.loop !62 sqlite3DbRealloc.exit: ; preds = %181 %251 = tail call fastcc ptr @sqlite3DbMallocRawNN(ptr noundef nonnull %147, i64 noundef %183) #60 - %.not21.i139 = icmp eq ptr %251, null - br i1 %.not21.i139, label %sqlite3VdbeAddOp3.exit119, label %sqlite3DbRealloc.exit.thread191 + %.not21.i138 = icmp eq ptr %251, null + br i1 %.not21.i138, label %sqlite3VdbeAddOp3.exit119, label %sqlite3DbRealloc.exit.thread190 -sqlite3DbRealloc.exit.thread191: ; preds = %isLookaside.exit.thread.i, %sqlite3DbFree.exit.i, %197, %192, %sqlite3DbRealloc.exit - %.0.i161194 = phi ptr [ %251, %sqlite3DbRealloc.exit ], [ %221, %isLookaside.exit.thread.i ], [ %211, %sqlite3DbFree.exit.i ], [ %182, %197 ], [ %182, %192 ] +sqlite3DbRealloc.exit.thread190: ; preds = %isLookaside.exit.thread.i, %sqlite3DbFree.exit.i, %197, %192, %sqlite3DbRealloc.exit + %.0.i160193 = phi ptr [ %251, %sqlite3DbRealloc.exit ], [ %221, %isLookaside.exit.thread.i ], [ %211, %sqlite3DbFree.exit.i ], [ %182, %197 ], [ %182, %192 ] %252 = load ptr, ptr %143, align 8 %.not.i22.i = icmp eq ptr %252, null br i1 %.not.i22.i, label %267, label %253 -253: ; preds = %sqlite3DbRealloc.exit.thread191 +253: ; preds = %sqlite3DbRealloc.exit.thread190 %254 = getelementptr inbounds i8, ptr %252, i64 496 %255 = load ptr, ptr %254, align 8 - %256 = icmp ult ptr %.0.i161194, %255 + %256 = icmp ult ptr %.0.i160193, %255 br i1 %256, label %257, label %267 257: ; preds = %253 %258 = getelementptr inbounds i8, ptr %252, i64 472 %259 = load ptr, ptr %258, align 8 - %.not11.i.i = icmp ult ptr %.0.i161194, %259 + %.not11.i.i = icmp ult ptr %.0.i160193, %259 br i1 %.not11.i.i, label %260, label %growOpArray.exit 260: ; preds = %257 %261 = getelementptr inbounds i8, ptr %252, i64 480 %262 = load ptr, ptr %261, align 8 - %.not12.i.i = icmp ult ptr %.0.i161194, %262 + %.not12.i.i = icmp ult ptr %.0.i160193, %262 br i1 %.not12.i.i, label %267, label %263 263: ; preds = %260 @@ -289804,9 +289804,9 @@ sqlite3DbRealloc.exit.thread191: ; preds = %isLookaside.exit.th %266 = zext i16 %265 to i32 br label %growOpArray.exit -267: ; preds = %260, %253, %sqlite3DbRealloc.exit.thread191 +267: ; preds = %260, %253, %sqlite3DbRealloc.exit.thread190 %268 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 56), align 8 - %269 = tail call i32 %268(ptr noundef nonnull %.0.i161194) #57 + %269 = tail call i32 %268(ptr noundef nonnull %.0.i160193) #57 br label %growOpArray.exit growOpArray.exit: ; preds = %257, %263, %267 @@ -289817,17 +289817,17 @@ growOpArray.exit: ; preds = %257, %263, %267 %272 = udiv i64 %271, 24 %273 = trunc i64 %272 to i32 store i32 %273, ptr %39, align 4 - store ptr %.0.i161194, ptr %137, align 8 + store ptr %.0.i160193, ptr %137, align 8 %274 = load i32, ptr %38, align 8 %.not.i116 = icmp slt i32 %274, %273 br i1 %.not.i116, label %tailrecurse.i115._crit_edge, label %.lr.ph tailrecurse.i115._crit_edge: ; preds = %growOpArray.exit, %.tailrecurse.i115._crit_edge_crit_edge - %275 = phi ptr [ %.pre, %.tailrecurse.i115._crit_edge_crit_edge ], [ %.0.i161194, %growOpArray.exit ] - %.lcssa247 = phi i32 [ %140, %.tailrecurse.i115._crit_edge_crit_edge ], [ %274, %growOpArray.exit ] - %276 = add nsw i32 %.lcssa247, 1 + %275 = phi ptr [ %.pre, %.tailrecurse.i115._crit_edge_crit_edge ], [ %.0.i160193, %growOpArray.exit ] + %.lcssa246 = phi i32 [ %140, %.tailrecurse.i115._crit_edge_crit_edge ], [ %274, %growOpArray.exit ] + %276 = add nsw i32 %.lcssa246, 1 store i32 %276, ptr %38, align 8 - %277 = sext i32 %.lcssa247 to i64 + %277 = sext i32 %.lcssa246 to i64 %278 = getelementptr inbounds %struct.VdbeOp, ptr %275, i64 %277 store i8 94, ptr %278, align 8 %279 = getelementptr inbounds i8, ptr %278, i64 2 @@ -289835,7 +289835,7 @@ tailrecurse.i115._crit_edge: ; preds = %growOpArray.exit, % %280 = getelementptr inbounds i8, ptr %278, i64 4 store i32 %35, ptr %280, align 4 %281 = getelementptr inbounds i8, ptr %278, i64 8 - store i32 %.0264, ptr %281, align 8 + store i32 %.0263, ptr %281, align 8 %282 = getelementptr inbounds i8, ptr %278, i64 12 store i32 %139, ptr %282, align 4 %283 = getelementptr inbounds i8, ptr %278, i64 16 @@ -289845,15 +289845,15 @@ tailrecurse.i115._crit_edge: ; preds = %growOpArray.exit, % br label %sqlite3VdbeAddOp3.exit119 sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3DbRealloc.exit, %.lr.ph.i, %.lr.ph.i.i, %243, %236, %226, %222, %173, %166, %156, %152, %tailrecurse.i115._crit_edge - %285 = add nuw nsw i32 %.0264, 1 + %285 = add nuw nsw i32 %.0263, 1 %exitcond.not = icmp eq i32 %285, %umax br i1 %exitcond.not, label %.loopexit, label %138, !llvm.loop !1190 .loopexit: ; preds = %sqlite3VdbeAddOp3.exit119, %sqlite3DbStrDup.exit %286 = icmp ult i16 %13, %11 - br i1 %286, label %.lr.ph272, label %._crit_edge + br i1 %286, label %.lr.ph271, label %._crit_edge -.lr.ph272: ; preds = %.loopexit +.lr.ph271: ; preds = %.loopexit %287 = getelementptr inbounds i8, ptr %9, i64 64 %288 = icmp eq i32 %20, 1 %289 = getelementptr inbounds i8, ptr %7, i64 144 @@ -289869,14 +289869,14 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 %wide.trip.count = zext i16 %11 to i64 br label %299 -299: ; preds = %.lr.ph272, %sqlite3ExprNeedsNoAffinityChange.exit.thread - %indvars.iv = phi i64 [ %298, %.lr.ph272 ], [ %indvars.iv.next, %sqlite3ExprNeedsNoAffinityChange.exit.thread ] - %.090270 = phi i32 [ %18, %.lr.ph272 ], [ %.191, %sqlite3ExprNeedsNoAffinityChange.exit.thread ] +299: ; preds = %.lr.ph271, %sqlite3ExprNeedsNoAffinityChange.exit.thread + %indvars.iv = phi i64 [ %298, %.lr.ph271 ], [ %indvars.iv.next, %sqlite3ExprNeedsNoAffinityChange.exit.thread ] + %.090269 = phi i32 [ %18, %.lr.ph271 ], [ %.191, %sqlite3ExprNeedsNoAffinityChange.exit.thread ] %300 = load ptr, ptr %287, align 8 %301 = getelementptr inbounds ptr, ptr %300, i64 %indvars.iv %302 = load ptr, ptr %301, align 8 %303 = trunc nuw nsw i64 %indvars.iv to i32 - %304 = add nsw i32 %.090270, %303 + %304 = add nsw i32 %.090269, %303 %305 = tail call fastcc i32 @codeEqualityTerm(ptr noundef nonnull %0, ptr noundef %302, ptr noundef %1, i32 noundef %303, i32 noundef %2, i32 noundef %304) %.not97 = icmp eq i32 %305, %304 br i1 %.not97, label %sqlite3ReleaseTempReg.exit, label %306 @@ -289885,7 +289885,7 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 br i1 %288, label %307, label %315 307: ; preds = %306 - %.not.i120 = icmp eq i32 %.090270, 0 + %.not.i120 = icmp eq i32 %.090269, 0 br i1 %.not.i120, label %sqlite3ReleaseTempReg.exit, label %308 308: ; preds = %307 @@ -289898,26 +289898,26 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 store i8 %312, ptr %293, align 1 %313 = zext nneg i8 %309 to i64 %314 = getelementptr inbounds [8 x i32], ptr %294, i64 0, i64 %313 - store i32 %.090270, ptr %314, align 4 + store i32 %.090269, ptr %314, align 4 br label %sqlite3ReleaseTempReg.exit 315: ; preds = %306 %316 = load i32, ptr %289, align 8 %317 = load i32, ptr %290, align 4 - %.not.i.i122267 = icmp sgt i32 %317, %316 - br i1 %.not.i.i122267, label %.tailrecurse.i.i121._crit_edge_crit_edge, label %.lr.ph268 + %.not.i.i122266 = icmp sgt i32 %317, %316 + br i1 %.not.i.i122266, label %.tailrecurse.i.i121._crit_edge_crit_edge, label %.lr.ph267 .tailrecurse.i.i121._crit_edge_crit_edge: ; preds = %315 - %.pre309 = load ptr, ptr %292, align 8 + %.pre308 = load ptr, ptr %292, align 8 br label %tailrecurse.i.i121._crit_edge -.lr.ph268: ; preds = %315, %growOpArray.exit160 - %318 = phi i32 [ %449, %growOpArray.exit160 ], [ %317, %315 ] +.lr.ph267: ; preds = %315, %growOpArray.exit159 + %318 = phi i32 [ %449, %growOpArray.exit159 ], [ %317, %315 ] %319 = load ptr, ptr %291, align 8 - %.not.i143 = icmp eq i32 %318, 0 + %.not.i142 = icmp eq i32 %318, 0 %320 = sext i32 %318 to i64 %321 = shl nsw i64 %320, 1 - %322 = select i1 %.not.i143, i64 42, i64 %321 + %322 = select i1 %.not.i142, i64 42, i64 %321 %323 = load ptr, ptr %319, align 8 %324 = getelementptr inbounds i8, ptr %323, i64 156 %325 = load i32, ptr %324, align 4 @@ -289925,7 +289925,7 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 %327 = icmp sgt i64 %322, %326 br i1 %327, label %328, label %357 -328: ; preds = %.lr.ph268 +328: ; preds = %.lr.ph267 %329 = getelementptr inbounds i8, ptr %323, i64 103 %330 = load i8, ptr %329, align 1 %331 = icmp eq i8 %330, 0 @@ -289958,8 +289958,8 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 store i16 0, ptr %346, align 4 %347 = getelementptr inbounds i8, ptr %323, i64 344 %348 = load ptr, ptr %347, align 8 - %.not.i.i151 = icmp eq ptr %348, null - br i1 %.not.i.i151, label %sqlite3ReleaseTempReg.exit, label %349 + %.not.i.i150 = icmp eq ptr %348, null + br i1 %.not.i.i150, label %sqlite3ReleaseTempReg.exit, label %349 349: ; preds = %342 tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %348, ptr noundef nonnull @.str.115) #60 @@ -289967,29 +289967,29 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 %351 = getelementptr inbounds i8, ptr %350, i64 24 store i32 7, ptr %351, align 8 %352 = load ptr, ptr %347, align 8 - %.0.in17.i.i152 = getelementptr inbounds i8, ptr %352, i64 264 - %.018.i.i153 = load ptr, ptr %.0.in17.i.i152, align 8 - %.not1619.i.i154 = icmp eq ptr %.018.i.i153, null - br i1 %.not1619.i.i154, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i.i155 - -.lr.ph.i.i155: ; preds = %349, %.lr.ph.i.i155 - %.020.i.i156 = phi ptr [ %.0.i.i158, %.lr.ph.i.i155 ], [ %.018.i.i153, %349 ] - %353 = getelementptr inbounds i8, ptr %.020.i.i156, i64 48 + %.0.in17.i.i151 = getelementptr inbounds i8, ptr %352, i64 264 + %.018.i.i152 = load ptr, ptr %.0.in17.i.i151, align 8 + %.not1619.i.i153 = icmp eq ptr %.018.i.i152, null + br i1 %.not1619.i.i153, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i.i154 + +.lr.ph.i.i154: ; preds = %349, %.lr.ph.i.i154 + %.020.i.i155 = phi ptr [ %.0.i.i157, %.lr.ph.i.i154 ], [ %.018.i.i152, %349 ] + %353 = getelementptr inbounds i8, ptr %.020.i.i155, i64 48 %354 = load i32, ptr %353, align 8 %355 = add nsw i32 %354, 1 store i32 %355, ptr %353, align 8 - %356 = getelementptr inbounds i8, ptr %.020.i.i156, i64 24 + %356 = getelementptr inbounds i8, ptr %.020.i.i155, i64 24 store i32 7, ptr %356, align 8 - %.0.in.i.i157 = getelementptr inbounds i8, ptr %.020.i.i156, i64 264 - %.0.i.i158 = load ptr, ptr %.0.in.i.i157, align 8 - %.not16.i.i159 = icmp eq ptr %.0.i.i158, null - br i1 %.not16.i.i159, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i.i155, !llvm.loop !62 + %.0.in.i.i156 = getelementptr inbounds i8, ptr %.020.i.i155, i64 264 + %.0.i.i157 = load ptr, ptr %.0.in.i.i156, align 8 + %.not16.i.i158 = icmp eq ptr %.0.i.i157, null + br i1 %.not16.i.i158, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i.i154, !llvm.loop !62 -357: ; preds = %.lr.ph268 +357: ; preds = %.lr.ph267 %358 = load ptr, ptr %292, align 8 %359 = mul nsw i64 %322, 24 %360 = icmp eq ptr %358, null - br i1 %360, label %sqlite3DbRealloc.exit186, label %361 + br i1 %360, label %sqlite3DbRealloc.exit185, label %361 361: ; preds = %357 %362 = getelementptr inbounds i8, ptr %323, i64 488 @@ -290000,25 +290000,25 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 365: ; preds = %361 %366 = getelementptr inbounds i8, ptr %323, i64 472 %367 = load ptr, ptr %366, align 8 - %.not.i183 = icmp ult ptr %358, %367 - br i1 %.not.i183, label %370, label %368 + %.not.i182 = icmp ult ptr %358, %367 + br i1 %.not.i182, label %370, label %368 368: ; preds = %365 %369 = icmp ult i64 %359, 129 - br i1 %369, label %sqlite3DbRealloc.exit186.thread201, label %377 + br i1 %369, label %sqlite3DbRealloc.exit185.thread200, label %377 370: ; preds = %365 %371 = getelementptr inbounds i8, ptr %323, i64 480 %372 = load ptr, ptr %371, align 8 - %.not19.i184 = icmp ult ptr %358, %372 - br i1 %.not19.i184, label %377, label %373 + %.not19.i183 = icmp ult ptr %358, %372 + br i1 %.not19.i183, label %377, label %373 373: ; preds = %370 %374 = getelementptr inbounds i8, ptr %323, i64 414 %375 = load i16, ptr %374, align 2 %376 = zext i16 %375 to i64 - %.not20.i185 = icmp ugt i64 %359, %376 - br i1 %.not20.i185, label %377, label %sqlite3DbRealloc.exit186.thread201 + %.not20.i184 = icmp ugt i64 %359, %376 + br i1 %.not20.i184, label %377, label %sqlite3DbRealloc.exit185.thread200 377: ; preds = %373, %370, %368, %361 %378 = getelementptr inbounds i8, ptr %323, i64 103 @@ -290029,44 +290029,44 @@ sqlite3VdbeAddOp3.exit119: ; preds = %201, %210, %sqlite3 381: ; preds = %377 %382 = getelementptr inbounds i8, ptr %323, i64 480 %383 = load ptr, ptr %382, align 8 - %.not.i24.i167 = icmp ult ptr %358, %383 - br i1 %.not.i24.i167, label %isLookaside.exit.thread.i170, label %isLookaside.exit.i168 + %.not.i24.i166 = icmp ult ptr %358, %383 + br i1 %.not.i24.i166, label %isLookaside.exit.thread.i169, label %isLookaside.exit.i167 -isLookaside.exit.i168: ; preds = %381 +isLookaside.exit.i167: ; preds = %381 %384 = getelementptr inbounds i8, ptr %323, i64 496 %385 = load ptr, ptr %384, align 8 - %.not26.i169 = icmp ult ptr %358, %385 - br i1 %.not26.i169, label %386, label %isLookaside.exit.thread.i170 + %.not26.i168 = icmp ult ptr %358, %385 + br i1 %.not26.i168, label %386, label %isLookaside.exit.thread.i169 -386: ; preds = %isLookaside.exit.i168 +386: ; preds = %isLookaside.exit.i167 %387 = tail call fastcc ptr @sqlite3DbMallocRawNN(ptr noundef nonnull %323, i64 noundef %359) #60 - %.not20.i.i181 = icmp eq ptr %387, null - br i1 %.not20.i.i181, label %sqlite3ReleaseTempReg.exit, label %388 + %.not20.i.i180 = icmp eq ptr %387, null + br i1 %.not20.i.i180, label %sqlite3ReleaseTempReg.exit, label %388 388: ; preds = %386 %389 = getelementptr inbounds i8, ptr %323, i64 472 %390 = load ptr, ptr %389, align 8 %391 = icmp ult ptr %358, %390 - br i1 %391, label %392, label %sqlite3DbFree.exit.i182 + br i1 %391, label %392, label %sqlite3DbFree.exit.i181 392: ; preds = %388 %393 = getelementptr inbounds i8, ptr %323, i64 414 %394 = load i16, ptr %393, align 2 %395 = zext i16 %394 to i64 - br label %sqlite3DbFree.exit.i182 + br label %sqlite3DbFree.exit.i181 -sqlite3DbFree.exit.i182: ; preds = %392, %388 +sqlite3DbFree.exit.i181: ; preds = %392, %388 %396 = phi i64 [ %395, %392 ], [ 128, %388 ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %387, ptr nonnull align 1 %358, i64 %396, i1 false) tail call fastcc void @sqlite3DbFreeNN(ptr noundef nonnull %323, ptr noundef nonnull %358) - br label %sqlite3DbRealloc.exit186.thread201 + br label %sqlite3DbRealloc.exit185.thread200 -isLookaside.exit.thread.i170: ; preds = %isLookaside.exit.i168, %381 +isLookaside.exit.thread.i169: ; preds = %isLookaside.exit.i167, %381 %397 = tail call fastcc ptr @sqlite3Realloc(ptr noundef nonnull %358, i64 noundef %359) - %.not19.i.i171 = icmp eq ptr %397, null - br i1 %.not19.i.i171, label %398, label %sqlite3DbRealloc.exit186.thread201 + %.not19.i.i170 = icmp eq ptr %397, null + br i1 %.not19.i.i170, label %398, label %sqlite3DbRealloc.exit185.thread200 -398: ; preds = %isLookaside.exit.thread.i170 +398: ; preds = %isLookaside.exit.thread.i169 %399 = getelementptr inbounds i8, ptr %323, i64 103 %400 = load i8, ptr %399, align 1 %401 = icmp eq i8 %400, 0 @@ -290099,8 +290099,8 @@ isLookaside.exit.thread.i170: ; preds = %isLookaside.exit.i1 store i16 0, ptr %416, align 4 %417 = getelementptr inbounds i8, ptr %323, i64 344 %418 = load ptr, ptr %417, align 8 - %.not.i21.i172 = icmp eq ptr %418, null - br i1 %.not.i21.i172, label %sqlite3ReleaseTempReg.exit, label %419 + %.not.i21.i171 = icmp eq ptr %418, null + br i1 %.not.i21.i171, label %sqlite3ReleaseTempReg.exit, label %419 419: ; preds = %412 tail call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %418, ptr noundef nonnull @.str.115) #60 @@ -290108,83 +290108,83 @@ isLookaside.exit.thread.i170: ; preds = %isLookaside.exit.i1 %421 = getelementptr inbounds i8, ptr %420, i64 24 store i32 7, ptr %421, align 8 %422 = load ptr, ptr %417, align 8 - %.0.in.i27.i173 = getelementptr inbounds i8, ptr %422, i64 264 - %.0.i2228.i174 = load ptr, ptr %.0.in.i27.i173, align 8 - %.not16.i29.i175 = icmp eq ptr %.0.i2228.i174, null - br i1 %.not16.i29.i175, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i176 - -.lr.ph.i176: ; preds = %419, %.lr.ph.i176 - %.0.i2230.i177 = phi ptr [ %.0.i22.i179, %.lr.ph.i176 ], [ %.0.i2228.i174, %419 ] - %423 = getelementptr inbounds i8, ptr %.0.i2230.i177, i64 48 + %.0.in.i27.i172 = getelementptr inbounds i8, ptr %422, i64 264 + %.0.i2228.i173 = load ptr, ptr %.0.in.i27.i172, align 8 + %.not16.i29.i174 = icmp eq ptr %.0.i2228.i173, null + br i1 %.not16.i29.i174, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i175 + +.lr.ph.i175: ; preds = %419, %.lr.ph.i175 + %.0.i2230.i176 = phi ptr [ %.0.i22.i178, %.lr.ph.i175 ], [ %.0.i2228.i173, %419 ] + %423 = getelementptr inbounds i8, ptr %.0.i2230.i176, i64 48 %424 = load i32, ptr %423, align 8 %425 = add nsw i32 %424, 1 store i32 %425, ptr %423, align 8 - %426 = getelementptr inbounds i8, ptr %.0.i2230.i177, i64 24 + %426 = getelementptr inbounds i8, ptr %.0.i2230.i176, i64 24 store i32 7, ptr %426, align 8 - %.0.in.i.i178 = getelementptr inbounds i8, ptr %.0.i2230.i177, i64 264 - %.0.i22.i179 = load ptr, ptr %.0.in.i.i178, align 8 - %.not16.i.i180 = icmp eq ptr %.0.i22.i179, null - br i1 %.not16.i.i180, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i176, !llvm.loop !62 + %.0.in.i.i177 = getelementptr inbounds i8, ptr %.0.i2230.i176, i64 264 + %.0.i22.i178 = load ptr, ptr %.0.in.i.i177, align 8 + %.not16.i.i179 = icmp eq ptr %.0.i22.i178, null + br i1 %.not16.i.i179, label %sqlite3ReleaseTempReg.exit, label %.lr.ph.i175, !llvm.loop !62 -sqlite3DbRealloc.exit186: ; preds = %357 +sqlite3DbRealloc.exit185: ; preds = %357 %427 = tail call fastcc ptr @sqlite3DbMallocRawNN(ptr noundef nonnull %323, i64 noundef %359) #60 - %.not21.i144 = icmp eq ptr %427, null - br i1 %.not21.i144, label %sqlite3ReleaseTempReg.exit, label %sqlite3DbRealloc.exit186.thread201 + %.not21.i143 = icmp eq ptr %427, null + br i1 %.not21.i143, label %sqlite3ReleaseTempReg.exit, label %sqlite3DbRealloc.exit185.thread200 -sqlite3DbRealloc.exit186.thread201: ; preds = %isLookaside.exit.thread.i170, %sqlite3DbFree.exit.i182, %373, %368, %sqlite3DbRealloc.exit186 - %.0.i166204 = phi ptr [ %427, %sqlite3DbRealloc.exit186 ], [ %397, %isLookaside.exit.thread.i170 ], [ %387, %sqlite3DbFree.exit.i182 ], [ %358, %373 ], [ %358, %368 ] +sqlite3DbRealloc.exit185.thread200: ; preds = %isLookaside.exit.thread.i169, %sqlite3DbFree.exit.i181, %373, %368, %sqlite3DbRealloc.exit185 + %.0.i165203 = phi ptr [ %427, %sqlite3DbRealloc.exit185 ], [ %397, %isLookaside.exit.thread.i169 ], [ %387, %sqlite3DbFree.exit.i181 ], [ %358, %373 ], [ %358, %368 ] %428 = load ptr, ptr %319, align 8 - %.not.i22.i145 = icmp eq ptr %428, null - br i1 %.not.i22.i145, label %443, label %429 + %.not.i22.i144 = icmp eq ptr %428, null + br i1 %.not.i22.i144, label %443, label %429 -429: ; preds = %sqlite3DbRealloc.exit186.thread201 +429: ; preds = %sqlite3DbRealloc.exit185.thread200 %430 = getelementptr inbounds i8, ptr %428, i64 496 %431 = load ptr, ptr %430, align 8 - %432 = icmp ult ptr %.0.i166204, %431 + %432 = icmp ult ptr %.0.i165203, %431 br i1 %432, label %433, label %443 433: ; preds = %429 %434 = getelementptr inbounds i8, ptr %428, i64 472 %435 = load ptr, ptr %434, align 8 - %.not11.i.i149 = icmp ult ptr %.0.i166204, %435 - br i1 %.not11.i.i149, label %436, label %growOpArray.exit160 + %.not11.i.i148 = icmp ult ptr %.0.i165203, %435 + br i1 %.not11.i.i148, label %436, label %growOpArray.exit159 436: ; preds = %433 %437 = getelementptr inbounds i8, ptr %428, i64 480 %438 = load ptr, ptr %437, align 8 - %.not12.i.i150 = icmp ult ptr %.0.i166204, %438 - br i1 %.not12.i.i150, label %443, label %439 + %.not12.i.i149 = icmp ult ptr %.0.i165203, %438 + br i1 %.not12.i.i149, label %443, label %439 439: ; preds = %436 %440 = getelementptr inbounds i8, ptr %428, i64 414 %441 = load i16, ptr %440, align 2 %442 = zext i16 %441 to i32 - br label %growOpArray.exit160 + br label %growOpArray.exit159 -443: ; preds = %436, %429, %sqlite3DbRealloc.exit186.thread201 +443: ; preds = %436, %429, %sqlite3DbRealloc.exit185.thread200 %444 = load ptr, ptr getelementptr inbounds (i8, ptr @sqlite3Config, i64 56), align 8 - %445 = tail call i32 %444(ptr noundef nonnull %.0.i166204) #57 - br label %growOpArray.exit160 + %445 = tail call i32 %444(ptr noundef nonnull %.0.i165203) #57 + br label %growOpArray.exit159 -growOpArray.exit160: ; preds = %433, %439, %443 - %.0.i23.i147 = phi i32 [ %442, %439 ], [ %445, %443 ], [ 128, %433 ] +growOpArray.exit159: ; preds = %433, %439, %443 + %.0.i23.i146 = phi i32 [ %442, %439 ], [ %445, %443 ], [ 128, %433 ] %446 = getelementptr inbounds i8, ptr %319, i64 60 - store i32 %.0.i23.i147, ptr %446, align 4 - %447 = sext i32 %.0.i23.i147 to i64 + store i32 %.0.i23.i146, ptr %446, align 4 + %447 = sext i32 %.0.i23.i146 to i64 %448 = udiv i64 %447, 24 %449 = trunc i64 %448 to i32 store i32 %449, ptr %290, align 4 - store ptr %.0.i166204, ptr %292, align 8 + store ptr %.0.i165203, ptr %292, align 8 %450 = load i32, ptr %289, align 8 %.not.i.i122 = icmp slt i32 %450, %449 - br i1 %.not.i.i122, label %tailrecurse.i.i121._crit_edge, label %.lr.ph268 + br i1 %.not.i.i122, label %tailrecurse.i.i121._crit_edge, label %.lr.ph267 -tailrecurse.i.i121._crit_edge: ; preds = %growOpArray.exit160, %.tailrecurse.i.i121._crit_edge_crit_edge - %451 = phi ptr [ %.pre309, %.tailrecurse.i.i121._crit_edge_crit_edge ], [ %.0.i166204, %growOpArray.exit160 ] - %.lcssa227 = phi i32 [ %316, %.tailrecurse.i.i121._crit_edge_crit_edge ], [ %450, %growOpArray.exit160 ] - %452 = add nsw i32 %.lcssa227, 1 +tailrecurse.i.i121._crit_edge: ; preds = %growOpArray.exit159, %.tailrecurse.i.i121._crit_edge_crit_edge + %451 = phi ptr [ %.pre308, %.tailrecurse.i.i121._crit_edge_crit_edge ], [ %.0.i165203, %growOpArray.exit159 ] + %.lcssa226 = phi i32 [ %316, %.tailrecurse.i.i121._crit_edge_crit_edge ], [ %450, %growOpArray.exit159 ] + %452 = add nsw i32 %.lcssa226, 1 store i32 %452, ptr %289, align 8 - %453 = sext i32 %.lcssa227 to i64 + %453 = sext i32 %.lcssa226 to i64 %454 = getelementptr inbounds %struct.VdbeOp, ptr %451, i64 %453 store i8 80, ptr %454, align 8 %455 = getelementptr inbounds i8, ptr %454, i64 2 @@ -290201,8 +290201,8 @@ tailrecurse.i.i121._crit_edge: ; preds = %growOpArray.exit160 store i8 0, ptr %460, align 1 br label %sqlite3ReleaseTempReg.exit -sqlite3ReleaseTempReg.exit: ; preds = %377, %386, %sqlite3DbRealloc.exit186, %.lr.ph.i176, %.lr.ph.i.i155, %419, %412, %402, %398, %349, %342, %332, %328, %tailrecurse.i.i121._crit_edge, %311, %308, %307, %299 - %.191 = phi i32 [ %.090270, %299 ], [ %305, %307 ], [ %305, %308 ], [ %305, %311 ], [ %.090270, %tailrecurse.i.i121._crit_edge ], [ %.090270, %328 ], [ %.090270, %332 ], [ %.090270, %342 ], [ %.090270, %349 ], [ %.090270, %398 ], [ %.090270, %402 ], [ %.090270, %412 ], [ %.090270, %419 ], [ %.090270, %.lr.ph.i.i155 ], [ %.090270, %.lr.ph.i176 ], [ %.090270, %sqlite3DbRealloc.exit186 ], [ %.090270, %386 ], [ %.090270, %377 ] +sqlite3ReleaseTempReg.exit: ; preds = %377, %386, %sqlite3DbRealloc.exit185, %.lr.ph.i175, %.lr.ph.i.i154, %419, %412, %402, %398, %349, %342, %332, %328, %tailrecurse.i.i121._crit_edge, %311, %308, %307, %299 + %.191 = phi i32 [ %.090269, %299 ], [ %305, %307 ], [ %305, %308 ], [ %305, %311 ], [ %.090269, %tailrecurse.i.i121._crit_edge ], [ %.090269, %328 ], [ %.090269, %332 ], [ %.090269, %342 ], [ %.090269, %349 ], [ %.090269, %398 ], [ %.090269, %402 ], [ %.090269, %412 ], [ %.090269, %419 ], [ %.090269, %.lr.ph.i.i154 ], [ %.090269, %.lr.ph.i175 ], [ %.090269, %sqlite3DbRealloc.exit185 ], [ %.090269, %386 ], [ %.090269, %377 ] %461 = getelementptr inbounds i8, ptr %302, i64 20 %462 = load i16, ptr %461, align 4 %463 = zext i16 %462 to i32 @@ -290260,7 +290260,7 @@ sqlite3ReleaseTempReg.exit: ; preds = %377, %386, %sqlite3 .loopexit.i: ; preds = %.preheader, %487 %.0.i125 = phi i8 [ %489, %487 ], [ %484, %.preheader ] - switch i8 %.0.i125, label %sqlite3ExprCanBeNull.exit.thread210 [ + switch i8 %.0.i125, label %sqlite3ExprCanBeNull.exit.thread209 [ i8 -101, label %sqlite3VdbeAddOp2.exit131 i8 117, label %sqlite3VdbeAddOp2.exit131 i8 -103, label %sqlite3VdbeAddOp2.exit131 @@ -290273,13 +290273,13 @@ sqlite3ReleaseTempReg.exit: ; preds = %377, %386, %sqlite3 %492 = load i32, ptr %491, align 4 %493 = and i32 %492, 2097152 %.not.i126 = icmp eq i32 %493, 0 - br i1 %.not.i126, label %494, label %sqlite3ExprCanBeNull.exit.thread210 + br i1 %.not.i126, label %494, label %sqlite3ExprCanBeNull.exit.thread209 494: ; preds = %490 %495 = getelementptr inbounds i8, ptr %.015.i, i64 64 %496 = load ptr, ptr %495, align 8 %497 = icmp eq ptr %496, null - br i1 %497, label %sqlite3ExprCanBeNull.exit.thread210, label %498 + br i1 %497, label %sqlite3ExprCanBeNull.exit.thread209, label %498 498: ; preds = %494 %499 = getelementptr inbounds i8, ptr %.015.i, i64 48 @@ -290304,15 +290304,15 @@ sqlite3ExprCanBeNull.exit: ; preds = %505 %510 = getelementptr inbounds %struct.Column, ptr %504, i64 %509, i32 1 %511 = load i8, ptr %510, align 8 %512 = and i8 %511, 15 - %.not222 = icmp eq i8 %512, 0 - br i1 %.not222, label %sqlite3ExprCanBeNull.exit.thread210, label %sqlite3VdbeAddOp2.exit131 + %.not221 = icmp eq i8 %512, 0 + br i1 %.not221, label %sqlite3ExprCanBeNull.exit.thread209, label %sqlite3VdbeAddOp2.exit131 -sqlite3ExprCanBeNull.exit.thread210: ; preds = %.loopexit.i, %490, %494, %sqlite3ExprCanBeNull.exit +sqlite3ExprCanBeNull.exit.thread209: ; preds = %.loopexit.i, %490, %494, %sqlite3ExprCanBeNull.exit %513 = add nsw i32 %.191, %303 %514 = load i32, ptr %296, align 4 br label %tailrecurse.i.i127 -tailrecurse.i.i127: ; preds = %517, %sqlite3ExprCanBeNull.exit.thread210 +tailrecurse.i.i127: ; preds = %517, %sqlite3ExprCanBeNull.exit.thread209 %515 = load i32, ptr %289, align 8 %516 = load i32, ptr %290, align 4 %.not.i.i128 = icmp sgt i32 %516, %515 @@ -290362,32 +290362,32 @@ sqlite3VdbeAddOp2.exit131: ; preds = %517, %498, %502, %5 539: ; preds = %532 %540 = icmp ult i8 %535, 67 %541 = icmp ult i8 %534, 67 - %or.cond5.i.not351 = and i1 %541, %540 - %or.cond347 = or i1 %or.cond5.i.not351, %538 - br i1 %or.cond347, label %sqlite3ExprNeedsNoAffinityChange.exit.thread219, label %.preheader.i.preheader + %or.cond5.i.not350 = and i1 %541, %540 + %or.cond346 = or i1 %or.cond5.i.not350, %538 + br i1 %or.cond346, label %sqlite3ExprNeedsNoAffinityChange.exit.thread218, label %.preheader.i.preheader sqlite3CompareAffinity.exit: ; preds = %532 %542 = icmp slt i8 %535, 65 %543 = select i1 %542, i8 %534, i8 %535 %544 = and i8 %543, -65 %545 = icmp eq i8 %544, 1 - %or.cond348 = select i1 %545, i1 true, i1 %538 - br i1 %or.cond348, label %sqlite3ExprNeedsNoAffinityChange.exit.thread219, label %.preheader.i.preheader + %or.cond347 = select i1 %545, i1 true, i1 %538 + br i1 %or.cond347, label %sqlite3ExprNeedsNoAffinityChange.exit.thread218, label %.preheader.i.preheader .preheader.i.preheader: ; preds = %sqlite3CompareAffinity.exit, %539 br label %.preheader.i -.preheader.i: ; preds = %.preheader.i.preheader, %.critedge.i137 - %.018.i = phi ptr [ %549, %.critedge.i137 ], [ %479, %.preheader.i.preheader ] - %.0.i133 = phi i32 [ %spec.select.i, %.critedge.i137 ], [ 0, %.preheader.i.preheader ] +.preheader.i: ; preds = %.preheader.i.preheader, %.critedge.i136 + %.018.i = phi ptr [ %549, %.critedge.i136 ], [ %479, %.preheader.i.preheader ] + %.0.i133 = phi i32 [ %spec.select.i, %.critedge.i136 ], [ 0, %.preheader.i.preheader ] %546 = load i8, ptr %.018.i, align 8 switch i8 %546, label %.loopexit.i134 [ - i8 -82, label %.critedge.i137 - i8 -83, label %.critedge.i137 + i8 -82, label %.critedge.i136 + i8 -83, label %.critedge.i136 i8 -80, label %550 ] -.critedge.i137: ; preds = %.preheader.i, %.preheader.i +.critedge.i136: ; preds = %.preheader.i, %.preheader.i %547 = icmp eq i8 %546, -83 %spec.select.i = select i1 %547, i32 1, i32 %.0.i133 %548 = getelementptr inbounds i8, ptr %.018.i, i64 16 @@ -290427,8 +290427,7 @@ sqlite3CompareAffinity.exit: ; preds = %532 br label %sqlite3ExprNeedsNoAffinityChange.exit 563: ; preds = %.loopexit.i134 - %.not.i136 = icmp eq i32 %.0.i133, 0 - %564 = zext i1 %.not.i136 to i32 + %564 = xor i32 %.0.i133, 1 br label %sqlite3ExprNeedsNoAffinityChange.exit 565: ; preds = %.loopexit.i134 @@ -290445,16 +290444,16 @@ sqlite3CompareAffinity.exit: ; preds = %532 sqlite3ExprNeedsNoAffinityChange.exit: ; preds = %553, %556, %559, %563, %567 %.017.i = phi i32 [ %564, %563 ], [ %562, %559 ], [ %558, %556 ], [ %555, %553 ], [ %570, %567 ] %.not100 = icmp eq i32 %.017.i, 0 - br i1 %.not100, label %sqlite3ExprNeedsNoAffinityChange.exit.thread, label %sqlite3ExprNeedsNoAffinityChange.exit.thread219 + br i1 %.not100, label %sqlite3ExprNeedsNoAffinityChange.exit.thread, label %sqlite3ExprNeedsNoAffinityChange.exit.thread218 -sqlite3ExprNeedsNoAffinityChange.exit.thread219: ; preds = %539, %sqlite3CompareAffinity.exit, %sqlite3ExprNeedsNoAffinityChange.exit +sqlite3ExprNeedsNoAffinityChange.exit.thread218: ; preds = %539, %sqlite3CompareAffinity.exit, %sqlite3ExprNeedsNoAffinityChange.exit store i8 65, ptr %533, align 1 br label %sqlite3ExprNeedsNoAffinityChange.exit.thread -sqlite3ExprNeedsNoAffinityChange.exit.thread: ; preds = %.loopexit.i134, %565, %471, %465, %sqlite3VdbeAddOp2.exit131, %sqlite3ExprNeedsNoAffinityChange.exit.thread219, %sqlite3ExprNeedsNoAffinityChange.exit, %473 +sqlite3ExprNeedsNoAffinityChange.exit.thread: ; preds = %.loopexit.i134, %565, %471, %465, %sqlite3VdbeAddOp2.exit131, %sqlite3ExprNeedsNoAffinityChange.exit.thread218, %sqlite3ExprNeedsNoAffinityChange.exit, %473 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond308.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond308.not, label %._crit_edge, label %299, !llvm.loop !1192 + %exitcond307.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond307.not, label %._crit_edge, label %299, !llvm.loop !1192 ._crit_edge: ; preds = %sqlite3ExprNeedsNoAffinityChange.exit.thread, %.loopexit %.090.lcssa = phi i32 [ %18, %.loopexit ], [ %.191, %sqlite3ExprNeedsNoAffinityChange.exit.thread ] @@ -290604,8 +290603,7 @@ sqlite3CompareAffinity.exit: ; preds = %sqlite3VectorFieldS br label %sqlite3ExprNeedsNoAffinityChange.exit 60: ; preds = %.loopexit.i - %.not.i = icmp eq i32 %.0.i13, 0 - %61 = zext i1 %.not.i to i32 + %61 = xor i32 %.0.i13, 1 br label %sqlite3ExprNeedsNoAffinityChange.exit 62: ; preds = %.loopexit.i @@ -336693,7 +336691,7 @@ define internal void @minmaxFunc(ptr nocapture noundef %0, i32 noundef %1, ptr n br i1 %.not19, label %33, label %sqlite3_result_value.exit 33: ; preds = %.lr.ph - %34 = sext i32 %.01721 to i64 + %34 = zext nneg i32 %.01721 to i64 %35 = getelementptr inbounds ptr, ptr %2, i64 %34 %36 = load ptr, ptr %35, align 8 %37 = tail call fastcc i32 @sqlite3MemCompare(ptr noundef %36, ptr noundef nonnull %26, ptr noundef %16) @@ -336706,7 +336704,7 @@ define internal void @minmaxFunc(ptr nocapture noundef %0, i32 noundef %1, ptr n br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !1315 ._crit_edge.loopexit: ; preds = %33 - %.phi.trans.insert = sext i32 %spec.select to i64 + %.phi.trans.insert = zext i32 %spec.select to i64 %.phi.trans.insert24 = getelementptr inbounds ptr, ptr %2, i64 %.phi.trans.insert %.pre = load ptr, ptr %.phi.trans.insert24, align 8 br label %._crit_edge 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/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