diff --git a/bench/abc/optimized/giaSwitch.c.ll b/bench/abc/optimized/giaSwitch.c.ll index 1a77e2bf789..416652f0d49 100644 --- a/bench/abc/optimized/giaSwitch.c.ll +++ b/bench/abc/optimized/giaSwitch.c.ll @@ -44,7 +44,7 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nounwind uwtable define noalias noundef ptr @Gia_ManSwiCreate(ptr noundef %0, ptr noundef %1) local_unnamed_addr #2 { %calloc = tail call dereferenceable_or_null(56) ptr @calloc(i64 1, i64 56) - %3 = tail call ptr @Gia_ManFront(ptr noundef %0) #16 + %3 = tail call ptr @Gia_ManFront(ptr noundef %0) #15 store ptr %3, ptr %calloc, align 8 %4 = getelementptr inbounds i8, ptr %calloc, i64 8 store ptr %1, ptr %4, align 8 @@ -56,7 +56,7 @@ define noalias noundef ptr @Gia_ManSwiCreate(ptr noundef %0, ptr noundef %1) loc %9 = mul nsw i32 %8, %5 %10 = sext i32 %9 to i64 %11 = shl nsw i64 %10, 2 - %12 = tail call noalias ptr @malloc(i64 noundef %11) #17 + %12 = tail call noalias ptr @malloc(i64 noundef %11) #16 %13 = getelementptr inbounds i8, ptr %calloc, i64 24 store ptr %12, ptr %13, align 8 %14 = getelementptr i8, ptr %3, i64 64 @@ -66,7 +66,7 @@ define noalias noundef ptr @Gia_ManSwiCreate(ptr noundef %0, ptr noundef %1) loc %16 = mul nsw i32 %.val.val, %5 %17 = sext i32 %16 to i64 %18 = shl nsw i64 %17, 2 - %19 = tail call noalias ptr @malloc(i64 noundef %18) #17 + %19 = tail call noalias ptr @malloc(i64 noundef %18) #16 %20 = getelementptr inbounds i8, ptr %calloc, i64 32 store ptr %19, ptr %20, align 8 %21 = getelementptr i8, ptr %3, i64 72 @@ -76,13 +76,13 @@ define noalias noundef ptr @Gia_ManSwiCreate(ptr noundef %0, ptr noundef %1) loc %23 = mul nsw i32 %.val19.val, %5 %24 = sext i32 %23 to i64 %25 = shl nsw i64 %24, 2 - %26 = tail call noalias ptr @malloc(i64 noundef %25) #17 + %26 = tail call noalias ptr @malloc(i64 noundef %25) #16 %27 = getelementptr inbounds i8, ptr %calloc, i64 40 store ptr %26, ptr %27, align 8 %28 = getelementptr i8, ptr %0, i64 24 %.val20 = load i32, ptr %28, align 8 %29 = sext i32 %.val20 to i64 - %30 = tail call noalias ptr @calloc(i64 noundef %29, i64 noundef 4) #18 + %30 = tail call noalias ptr @calloc(i64 noundef %29, i64 noundef 4) #17 %31 = getelementptr inbounds i8, ptr %calloc, i64 48 store ptr %30, ptr %31, align 8 ret ptr %calloc @@ -99,14 +99,14 @@ declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr ; Function Attrs: nounwind uwtable define void @Gia_ManSwiDelete(ptr nocapture noundef %0) local_unnamed_addr #2 { %2 = load ptr, ptr %0, align 8 - tail call void @Gia_ManStop(ptr noundef %2) #16 + tail call void @Gia_ManStop(ptr noundef %2) #15 %3 = getelementptr inbounds i8, ptr %0, i64 48 %4 = load ptr, ptr %3, align 8 %.not = icmp eq ptr %4, null br i1 %.not, label %6, label %5 5: ; preds = %1 - tail call void @free(ptr noundef nonnull %4) #16 + tail call void @free(ptr noundef nonnull %4) #15 store ptr null, ptr %3, align 8 br label %6 @@ -117,7 +117,7 @@ define void @Gia_ManSwiDelete(ptr nocapture noundef %0) local_unnamed_addr #2 { br i1 %.not18, label %10, label %9 9: ; preds = %6 - tail call void @free(ptr noundef nonnull %8) #16 + tail call void @free(ptr noundef nonnull %8) #15 store ptr null, ptr %7, align 8 br label %10 @@ -128,7 +128,7 @@ define void @Gia_ManSwiDelete(ptr nocapture noundef %0) local_unnamed_addr #2 { br i1 %.not19, label %14, label %13 13: ; preds = %10 - tail call void @free(ptr noundef nonnull %12) #16 + tail call void @free(ptr noundef nonnull %12) #15 store ptr null, ptr %11, align 8 br label %14 @@ -139,11 +139,11 @@ define void @Gia_ManSwiDelete(ptr nocapture noundef %0) local_unnamed_addr #2 { br i1 %.not20, label %18, label %17 17: ; preds = %14 - tail call void @free(ptr noundef nonnull %16) #16 + tail call void @free(ptr noundef nonnull %16) #15 br label %18 18: ; preds = %17, %14 - tail call void @free(ptr noundef nonnull %0) #16 + tail call void @free(ptr noundef nonnull %0) #15 ret void } @@ -182,7 +182,7 @@ define noalias noundef ptr @Gia_ManSwiSimulate(ptr noundef %0, ptr noundef %1) l %5 = alloca %struct.timespec, align 8 %6 = alloca %struct.timespec, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) - %7 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #16 + %7 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %6) #15 %8 = icmp slt i32 %7, 0 br i1 %8, label %Abc_Clock.exit, label %9 @@ -215,7 +215,7 @@ Abc_Clock.exit: ; preds = %2, %9 19: ; preds = %18, %15, %Abc_Clock.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - %20 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #16 + %20 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %5) #15 %21 = icmp slt i32 %20, 0 br i1 %21, label %Abc_Clock.exit127, label %22 @@ -232,7 +232,7 @@ Abc_Clock.exit127: ; preds = %19, %22 %.0.i126.neg = phi i64 [ %.neg209, %22 ], [ 1, %19 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) %calloc.i = call dereferenceable_or_null(56) ptr @calloc(i64 1, i64 56) - %26 = call ptr @Gia_ManFront(ptr noundef %0) #16 + %26 = call ptr @Gia_ManFront(ptr noundef %0) #15 store ptr %26, ptr %calloc.i, align 8 %27 = getelementptr inbounds i8, ptr %calloc.i, i64 8 store ptr %1, ptr %27, align 8 @@ -244,7 +244,7 @@ Abc_Clock.exit127: ; preds = %19, %22 %32 = mul nsw i32 %31, %28 %33 = sext i32 %32 to i64 %34 = shl nsw i64 %33, 2 - %35 = call noalias ptr @malloc(i64 noundef %34) #17 + %35 = call noalias ptr @malloc(i64 noundef %34) #16 %36 = getelementptr inbounds i8, ptr %calloc.i, i64 24 store ptr %35, ptr %36, align 8 %37 = getelementptr i8, ptr %26, i64 64 @@ -254,7 +254,7 @@ Abc_Clock.exit127: ; preds = %19, %22 %39 = mul nsw i32 %.val.val.i, %28 %40 = sext i32 %39 to i64 %41 = shl nsw i64 %40, 2 - %42 = call noalias ptr @malloc(i64 noundef %41) #17 + %42 = call noalias ptr @malloc(i64 noundef %41) #16 %43 = getelementptr inbounds i8, ptr %calloc.i, i64 32 store ptr %42, ptr %43, align 8 %44 = getelementptr i8, ptr %26, i64 72 @@ -264,13 +264,13 @@ Abc_Clock.exit127: ; preds = %19, %22 %46 = mul nsw i32 %.val19.val.i, %28 %47 = sext i32 %46 to i64 %48 = shl nsw i64 %47, 2 - %49 = call noalias ptr @malloc(i64 noundef %48) #17 + %49 = call noalias ptr @malloc(i64 noundef %48) #16 %50 = getelementptr inbounds i8, ptr %calloc.i, i64 40 store ptr %49, ptr %50, align 8 %51 = getelementptr i8, ptr %0, i64 24 %.val20.i = load i32, ptr %51, align 8 %52 = sext i32 %.val20.i to i64 - %53 = call noalias ptr @calloc(i64 noundef %52, i64 noundef 4) #18 + %53 = call noalias ptr @calloc(i64 noundef %52, i64 noundef 4) #17 %54 = getelementptr inbounds i8, ptr %calloc.i, i64 48 store ptr %53, ptr %54, align 8 %55 = getelementptr inbounds i8, ptr %1, i64 24 @@ -316,7 +316,7 @@ Abc_Clock.exit127: ; preds = %19, %22 %84 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, double noundef %71, double noundef %77, double noundef %83) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %85 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #16 + %85 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #15 %86 = icmp slt i32 %85, 0 br i1 %86, label %Abc_Clock.exit130, label %87 @@ -339,7 +339,7 @@ Abc_Clock.exit130: ; preds = %57, %87 br label %97 97: ; preds = %Abc_Clock.exit130, %Abc_Clock.exit127 - %98 = call i32 @Gia_ManRandom(i32 noundef 1) #16 + %98 = call i32 @Gia_ManRandom(i32 noundef 1) #15 %99 = getelementptr i8, ptr %26, i64 16 %.val1119.i = load i32, ptr %99, align 8 %.val1220.i = load ptr, ptr %37, align 8 @@ -358,12 +358,11 @@ Abc_Clock.exit130: ; preds = %57, %87 .lr.ph.split.us.i: ; preds = %.lr.ph.i %104 = sub nsw i32 %.val12.val21.i, %.val1119.i - %smax.i = call i32 @llvm.smax.i32(i32 %104, i32 1) br label %.preheader.i .preheader.i: ; preds = %Gia_ManSwiSimInfoRandom.exit.i, %.lr.ph.split.us.i, %97 %.val.val24.i = phi i32 [ %.val12.val21.i, %97 ], [ %.val12.val21.i, %.lr.ph.split.us.i ], [ %.val12.val.i.pre, %Gia_ManSwiSimInfoRandom.exit.i ] - %.0.lcssa.i = phi i32 [ 0, %97 ], [ %smax.i, %.lr.ph.split.us.i ], [ %115, %Gia_ManSwiSimInfoRandom.exit.i ] + %.0.lcssa.i = phi i32 [ 0, %97 ], [ %104, %.lr.ph.split.us.i ], [ %115, %Gia_ManSwiSimInfoRandom.exit.i ] %105 = icmp slt i32 %.0.lcssa.i, %.val.val24.i %106 = icmp sgt i32 %28, 0 %or.cond = and i1 %105, %106 @@ -384,7 +383,7 @@ Abc_Clock.exit130: ; preds = %57, %87 .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i %indvars.iv.i.i = phi i64 [ %103, %.lr.ph.preheader.i.i ], [ %indvars.iv.next.i.i, %.lr.ph.i.i ] %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %112 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %112 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %113 = getelementptr inbounds i32, ptr %111, i64 %indvars.iv.next.i.i store i32 %112, ptr %113, align 4 %114 = icmp samesign ugt i64 %indvars.iv.i.i, 1 @@ -761,13 +760,13 @@ Gia_ManSwiSimulateRound.exit: ; preds = %290, %Gia_ManSwiSim %indvars.iv287 = phi i64 [ 0, %.loopexit.i.us.i.preheader ], [ %indvars.iv.next288, %Gia_ManSwiSimInfoRandomShift.exit.us.i ] %306 = mul nsw i64 %indvars.iv287, %134 %307 = getelementptr inbounds i32, ptr %.val22.us.i, i64 %306 - %308 = call i32 @Gia_ManRandom(i32 noundef 0) #16 - %309 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %308 = call i32 @Gia_ManRandom(i32 noundef 0) #15 + %309 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %310 = and i32 %309, %308 - %311 = call i32 @Gia_ManRandom(i32 noundef 0) #16 - %312 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %311 = call i32 @Gia_ManRandom(i32 noundef 0) #15 + %312 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %313 = and i32 %312, %311 - %314 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %314 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %315 = and i32 %313, %314 %316 = or i32 %315, %310 br i1 %127, label %Gia_ManSwiSimInfoRandomShift.exit.us.i, label %.lr.ph21.i.us.i @@ -808,13 +807,13 @@ Gia_ManSwiSimInfoRandomShift.exit.us.i: ; preds = %.lr.ph21.i.us.i, %. %indvars.iv284 = phi i64 [ 0, %.lr.ph.split.split.us.i.preheader ], [ %indvars.iv.next285, %Gia_ManSwiSimInfoRandomShift.exit.us46.i ] %329 = mul nsw i64 %indvars.iv284, %134 %330 = getelementptr inbounds i32, ptr %.val22.us39.i, i64 %329 - %331 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %331 = call i32 @Gia_ManRandom(i32 noundef 0) #15 br i1 %.not.i.i, label %.loopexit.i.us40.i, label %.lr.ph.i.us.i .lr.ph.i.us.i: ; preds = %.lr.ph.split.split.us.i, %.lr.ph.i.us.i %.019.i.us.i = phi i32 [ %334, %.lr.ph.i.us.i ], [ 0, %.lr.ph.split.split.us.i ] %.118.i.us.i = phi i32 [ %333, %.lr.ph.i.us.i ], [ %331, %.lr.ph.split.split.us.i ] - %332 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %332 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %333 = and i32 %332, %.118.i.us.i %334 = add nuw nsw i32 %.019.i.us.i, 1 %exitcond.not.i.us.i = icmp eq i32 %334, %299 @@ -958,13 +957,13 @@ Gia_ManSwiSimInfoCopyShift.exit.i.loopexit: ; preds = %.lr.ph.i30.i %indvars.iv299 = phi i64 [ 0, %.lr.ph.split.us.i185.preheader ], [ %indvars.iv.next300, %Gia_ManSwiSimInfoRandom.exit.us.i ] %383 = mul nsw i64 %indvars.iv299, %134 %384 = getelementptr inbounds i32, ptr %.val22.us.i187, i64 %383 - %385 = call i32 @Gia_ManRandom(i32 noundef 0) #16 - %386 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %385 = call i32 @Gia_ManRandom(i32 noundef 0) #15 + %386 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %387 = and i32 %386, %385 - %388 = call i32 @Gia_ManRandom(i32 noundef 0) #16 - %389 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %388 = call i32 @Gia_ManRandom(i32 noundef 0) #15 + %389 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %390 = and i32 %389, %388 - %391 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %391 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %392 = and i32 %390, %391 %393 = or i32 %392, %387 br i1 %127, label %Gia_ManSwiSimInfoRandom.exit.us.i, label %.lr.ph34.i.us.i @@ -1001,13 +1000,13 @@ Gia_ManSwiSimInfoRandom.exit.us.i: ; preds = %.lr.ph34.i.us.i, %. .lr.ph.split.split.us.i183: ; preds = %.lr.ph.split.split.us.i183.preheader, %Gia_ManSwiSimInfoRandom.exit.us43.i %indvars.iv296 = phi i64 [ 0, %.lr.ph.split.split.us.i183.preheader ], [ %indvars.iv.next297, %Gia_ManSwiSimInfoRandom.exit.us43.i ] %403 = mul nsw i64 %indvars.iv296, %134 - %404 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %404 = call i32 @Gia_ManRandom(i32 noundef 0) #15 br label %405 405: ; preds = %405, %.lr.ph.split.split.us.i183 %.030.i.us.i = phi i32 [ 0, %.lr.ph.split.split.us.i183 ], [ %408, %405 ] %.02429.i.us.i = phi i32 [ %404, %.lr.ph.split.split.us.i183 ], [ %407, %405 ] - %406 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %406 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %407 = and i32 %406, %.02429.i.us.i %408 = add nuw nsw i32 %.030.i.us.i, 1 %exitcond.not.i.us.i184 = icmp eq i32 %408, %299 @@ -1043,7 +1042,6 @@ Gia_ManSwiSimInfoRandom.exit.us43.i: ; preds = %.lr.ph32.i.us.i, %4 .lr.ph.split.split.split.us.i168: ; preds = %.lr.ph.split.split.i167 %419 = sub nsw i32 %.val18.val.i156, %.val1936.i - %smax.i169 = call i32 @llvm.smax.i32(i32 %419, i32 1) br label %.preheader.i157 .lr.ph.split.split.split.i: ; preds = %.lr.ph.split.split.i167 @@ -1067,7 +1065,7 @@ Gia_ManSwiSimInfoRandom.exit.us43.i: ; preds = %.lr.ph32.i.us.i, %4 .preheader.i157: ; preds = %.preheader.i157.loopexit268, %.preheader.i157.loopexit267, %.preheader.i157.loopexit, %.lr.ph.split.split.split.us.i168, %380 %.val.val68.i = phi i32 [ %.val18.val.i156, %380 ], [ %.val18.val.i156, %.lr.ph.split.split.split.us.i168 ], [ %.val20.val.us.i190, %.preheader.i157.loopexit ], [ %.val20.val.us46.i, %.preheader.i157.loopexit267 ], [ %.val20.val.i175, %.preheader.i157.loopexit268 ] - %.0.lcssa.i158 = phi i32 [ 0, %380 ], [ %smax.i169, %.lr.ph.split.split.split.us.i168 ], [ %420, %.preheader.i157.loopexit ], [ %421, %.preheader.i157.loopexit267 ], [ %422, %.preheader.i157.loopexit268 ] + %.0.lcssa.i158 = phi i32 [ 0, %380 ], [ %419, %.lr.ph.split.split.split.us.i168 ], [ %420, %.preheader.i157.loopexit ], [ %421, %.preheader.i157.loopexit267 ], [ %422, %.preheader.i157.loopexit268 ] %423 = icmp sge i32 %.0.lcssa.i158, %.val.val68.i %brmerge207 = or i1 %127, %423 br i1 %brmerge207, label %Gia_ManSwiSimInfoTransferShift.exit, label %.lr.ph70.split.i.preheader @@ -1075,7 +1073,7 @@ Gia_ManSwiSimInfoRandom.exit.us43.i: ; preds = %.lr.ph32.i.us.i, %4 .lr.ph70.split.i.preheader: ; preds = %.preheader.i157 %.val24.i160 = load ptr, ptr %43, align 8 %.val26.i161 = load ptr, ptr %50, align 8 - %424 = zext nneg i32 %.0.lcssa.i158 to i64 + %424 = sext i32 %.0.lcssa.i158 to i64 %425 = sext i32 %302 to i64 br label %.lr.ph70.split.i @@ -1088,7 +1086,7 @@ Gia_ManSwiSimInfoRandom.exit.us43.i: ; preds = %.lr.ph32.i.us.i, %4 .lr.ph.i.i178: ; preds = %.lr.ph.i.i178, %.lr.ph.split.split.split.split.i %indvars.iv.i.i179 = phi i64 [ %128, %.lr.ph.split.split.split.split.i ], [ %indvars.iv.next.i.i180, %.lr.ph.i.i178 ] %indvars.iv.next.i.i180 = add nsw i64 %indvars.iv.i.i179, -1 - %428 = call i32 @Gia_ManRandom(i32 noundef 0) #16 + %428 = call i32 @Gia_ManRandom(i32 noundef 0) #15 %429 = getelementptr inbounds i32, ptr %427, i64 %indvars.iv.next.i.i180 store i32 %428, ptr %429, align 4 %430 = icmp samesign ugt i64 %indvars.iv.i.i179, 1 @@ -1107,7 +1105,7 @@ Gia_ManSwiSimInfoRandom.exit.i172: ; preds = %.lr.ph.i.i178 .lr.ph70.split.i: ; preds = %.lr.ph70.split.i.preheader, %Gia_ManSwiSimInfoCopy.exit.i.loopexit %indvars.iv303 = phi i64 [ %424, %.lr.ph70.split.i.preheader ], [ %indvars.iv.next304, %Gia_ManSwiSimInfoCopy.exit.i.loopexit ] - %435 = mul nuw nsw i64 %indvars.iv303, %134 + %435 = mul nsw i64 %indvars.iv303, %134 %436 = getelementptr inbounds i32, ptr %.val24.i160, i64 %435 %437 = add nsw i64 %indvars.iv303, %425 %438 = mul nsw i64 %437, %134 @@ -1150,7 +1148,7 @@ Gia_ManSwiSimulateRound.exit._crit_edge: ; preds = %Gia_ManSwiSimInfoTr %454 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %450, i32 noundef %453) call void (i32, ptr, ...) @Abc_Print(i32 poison, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.7) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %455 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #16 + %455 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #15 %456 = icmp slt i32 %455, 0 br i1 %456, label %Abc_Clock.exit192, label %457 @@ -1174,7 +1172,7 @@ Abc_Clock.exit192: ; preds = %452, %457 467: ; preds = %Abc_Clock.exit192, %Gia_ManSwiSimulateRound.exit._crit_edge %.val114 = load i32, ptr %51, align 8 - %468 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #17 + %468 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 %469 = add i32 %.val114, -1 %or.cond.i.i = icmp ult i32 %469, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.val114 @@ -1192,7 +1190,7 @@ Vec_IntAlloc.exit.thread.i: ; preds = %467 Vec_IntAlloc.exit.i: ; preds = %467 %472 = sext i32 %spec.store.select.i.i to i64 %473 = shl nsw i64 %472, 2 - %474 = call noalias ptr @malloc(i64 noundef %473) #17 + %474 = call noalias ptr @malloc(i64 noundef %473) #16 %475 = getelementptr inbounds i8, ptr %468, i64 8 store ptr %474, ptr %475, align 8 store i32 %.val114, ptr %470, align 4 @@ -1403,23 +1401,23 @@ define internal void @Abc_Print(i32 %0, ptr noundef %1, ...) unnamed_addr #2 { br i1 %.not, label %17, label %5 5: ; preds = %2 - %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #16 + %6 = tail call i32 (...) @Abc_FrameIsBridgeMode() #15 call void @llvm.va_start.p0(ptr nonnull %3) - %7 = call i32 (...) @Abc_FrameIsBridgeMode() #16 + %7 = call i32 (...) @Abc_FrameIsBridgeMode() #15 %.not9 = icmp eq i32 %7, 0 br i1 %.not9, label %14, label %8 8: ; preds = %5 - %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #16 + %9 = call ptr @vnsprintf(ptr noundef %1, ptr noundef nonnull %3) #15 %10 = load ptr, ptr @stdout, align 8 - %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #19 + %11 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %9) #18 %12 = trunc i64 %11 to i32 - %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef %9) #16 - call void @free(ptr noundef %9) #16 + %13 = call i32 @Gia_ManToBridgeText(ptr noundef %10, i32 noundef %12, ptr noundef %9) #15 + call void @free(ptr noundef %9) #15 br label %16 14: ; preds = %5 - %15 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #16 + %15 = call i32 @vprintf(ptr noundef %1, ptr noundef nonnull %3) #15 br label %16 16: ; preds = %14, %8 @@ -1442,13 +1440,13 @@ define noalias noundef ptr @Gia_ManComputeSwitchProbs(ptr noundef %0, i32 nounde %8 = getelementptr inbounds i8, ptr %5, i64 24 store i32 0, ptr %8, align 4 store i32 %1, ptr %6, align 4 - %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 + %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 %.not = icmp eq ptr %9, null br i1 %.not, label %13, label %10 10: ; preds = %4 - %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 - %12 = tail call i32 @atoi(ptr nocapture noundef %11) #19 + %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 + %12 = tail call i32 @atoi(ptr nocapture noundef %11) #18 store i32 %12, ptr %6, align 4 br label %13 @@ -1475,7 +1473,7 @@ declare i32 @atoi(ptr nocapture noundef) local_unnamed_addr #9 ; Function Attrs: nounwind uwtable define noalias noundef ptr @Saig_ManComputeSwitchProbs(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #2 { %5 = alloca %struct.Gia_ParSwi_t_, align 4 - %6 = tail call ptr @Gia_ManFromAigSwitch(ptr noundef %0) #16 + %6 = tail call ptr @Gia_ManFromAigSwitch(ptr noundef %0) #15 call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %5) store i32 10, ptr %5, align 4 %7 = getelementptr inbounds i8, ptr %5, i64 4 @@ -1484,13 +1482,13 @@ define noalias noundef ptr @Saig_ManComputeSwitchProbs(ptr noundef %0, i32 nound %9 = getelementptr inbounds i8, ptr %5, i64 24 store i32 0, ptr %9, align 4 store i32 %1, ptr %7, align 4 - %10 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 + %10 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 %.not.i = icmp eq ptr %10, null br i1 %.not.i, label %Gia_ManComputeSwitchProbs.exit, label %11 11: ; preds = %4 - %12 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 - %13 = tail call i32 @atoi(ptr nocapture noundef %12) #19 + %12 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 + %13 = tail call i32 @atoi(ptr nocapture noundef %12) #18 store i32 %13, ptr %7, align 4 br label %Gia_ManComputeSwitchProbs.exit @@ -1511,7 +1509,7 @@ Gia_ManComputeSwitchProbs.exit: ; preds = %4, %11 %.val20 = load ptr, ptr %18, align 8 %19 = getelementptr i8, ptr %.val20, i64 4 %.val20.val = load i32, ptr %19, align 4 - %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #17 + %20 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 %21 = add i32 %.val20.val, -1 %or.cond.i.i = icmp ult i32 %21, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.val20.val @@ -1529,7 +1527,7 @@ Vec_IntAlloc.exit.thread.i: ; preds = %Gia_ManComputeSwitc Vec_IntAlloc.exit.i: ; preds = %Gia_ManComputeSwitchProbs.exit %24 = sext i32 %spec.store.select.i.i to i64 %25 = shl nsw i64 %24, 2 - %26 = call noalias ptr @malloc(i64 noundef %25) #17 + %26 = call noalias ptr @malloc(i64 noundef %25) #16 %27 = getelementptr inbounds i8, ptr %20, i64 8 store ptr %26, ptr %27, align 8 store i32 %.val20.val, ptr %22, align 4 @@ -1585,12 +1583,12 @@ Vec_IntStart.exit: ; preds = %Vec_IntAlloc.exit.t br i1 %.not.i24, label %Vec_IntFree.exit, label %50 50: ; preds = %.critedge - call void @free(ptr noundef nonnull %49) #16 + call void @free(ptr noundef nonnull %49) #15 br label %Vec_IntFree.exit Vec_IntFree.exit: ; preds = %.critedge, %50 - call void @free(ptr noundef nonnull %17) #16 - call void @Gia_ManStop(ptr noundef %6) #16 + call void @free(ptr noundef nonnull %17) #15 + call void @Gia_ManStop(ptr noundef %6) #15 ret ptr %20 } @@ -1604,12 +1602,12 @@ define float @Gia_ManEvaluateSwitching(ptr noundef %0) local_unnamed_addr #2 { br i1 %.not, label %5, label %4 4: ; preds = %1 - tail call void @free(ptr noundef nonnull %3) #16 + tail call void @free(ptr noundef nonnull %3) #15 store ptr null, ptr %2, align 8 br label %5 5: ; preds = %1, %4 - tail call void @Gia_ManCreateRefs(ptr noundef nonnull %0) #16 + tail call void @Gia_ManCreateRefs(ptr noundef nonnull %0) #15 %6 = getelementptr inbounds i8, ptr %0, i64 24 %7 = load i32, ptr %6, align 8 %8 = icmp sgt i32 %7, 0 @@ -1663,13 +1661,13 @@ define float @Gia_ManComputeSwitching(ptr noundef %0, i32 noundef %1, i32 nounde %8 = getelementptr inbounds i8, ptr %5, i64 24 store i32 0, ptr %8, align 4 store i32 %1, ptr %6, align 4 - %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 + %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 %.not.i = icmp eq ptr %9, null br i1 %.not.i, label %Gia_ManComputeSwitchProbs.exit, label %10 10: ; preds = %4 - %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 - %12 = tail call i32 @atoi(ptr nocapture noundef %11) #19 + %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 + %12 = tail call i32 @atoi(ptr nocapture noundef %11) #18 store i32 %12, ptr %6, align 4 br label %Gia_ManComputeSwitchProbs.exit @@ -1800,18 +1798,18 @@ Gia_ManComputeSwitchProbs.exit: ; preds = %4, %10 br i1 %.not.i54, label %Vec_IntFree.exit, label %59 59: ; preds = %.critedge2 - call void @free(ptr noundef nonnull %.val45) #16 + call void @free(ptr noundef nonnull %.val45) #15 br label %Vec_IntFree.exit Vec_IntFree.exit: ; preds = %.critedge2, %59 - call void @free(ptr noundef nonnull %16) #16 + call void @free(ptr noundef nonnull %16) #15 ret float %.3 } ; Function Attrs: nounwind uwtable define noalias noundef ptr @Gia_ManPrintOutputProb(ptr noundef %0) local_unnamed_addr #2 { %2 = alloca %struct.Gia_ParSwi_t_, align 4 - %3 = tail call ptr @Gia_ManDup(ptr noundef %0) #16 + %3 = tail call ptr @Gia_ManDup(ptr noundef %0) #15 %4 = getelementptr i8, ptr %0, i64 16 %.val = load i32, ptr %4, align 8 %.not = icmp eq i32 %.val, 0 @@ -1824,13 +1822,13 @@ define noalias noundef ptr @Gia_ManPrintOutputProb(ptr noundef %0) local_unnamed %8 = getelementptr inbounds i8, ptr %2, i64 24 store i32 0, ptr %8, align 4 store i32 %5, ptr %6, align 4 - %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 + %9 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 %.not.i = icmp eq ptr %9, null br i1 %.not.i, label %Gia_ManComputeSwitchProbs.exit, label %10 10: ; preds = %1 - %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #16 - %12 = tail call i32 @atoi(ptr nocapture noundef %11) #19 + %11 = tail call ptr @Abc_FrameReadFlag(ptr noundef nonnull @.str.8) #15 + %12 = tail call i32 @atoi(ptr nocapture noundef %11) #18 store i32 %12, ptr %6, align 4 br label %Gia_ManComputeSwitchProbs.exit @@ -1843,7 +1841,7 @@ Gia_ManComputeSwitchProbs.exit: ; preds = %1, %10 store i32 0, ptr %13, align 4 %16 = call noalias noundef ptr @Gia_ManSwiSimulate(ptr noundef %3, ptr noundef nonnull %2) call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %2) - call void @Gia_ManStop(ptr noundef %3) #16 + call void @Gia_ManStop(ptr noundef %3) #15 ret ptr %16 } @@ -1873,14 +1871,11 @@ declare void @llvm.va_end.p0(ptr) #12 ; Function Attrs: nofree nounwind declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #13 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #14 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #14 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #14 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } @@ -1896,12 +1891,11 @@ attributes #10 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "sta attributes #11 = { 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 #12 = { mustprogress nocallback nofree nosync nounwind willreturn } attributes #13 = { nofree nounwind } -attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #15 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #16 = { nounwind } -attributes #17 = { nounwind allocsize(0) } -attributes #18 = { nounwind allocsize(0,1) } -attributes #19 = { nounwind willreturn memory(read) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #15 = { nounwind } +attributes #16 = { nounwind allocsize(0) } +attributes #17 = { nounwind allocsize(0,1) } +attributes #18 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/abc/optimized/sbdPath.c.ll b/bench/abc/optimized/sbdPath.c.ll index ed9a07b960a..1f000a29a9d 100644 --- a/bench/abc/optimized/sbdPath.c.ll +++ b/bench/abc/optimized/sbdPath.c.ll @@ -150,7 +150,7 @@ define void @Sbc_ManAddInternalToPath(ptr noundef %0, ptr nocapture noundef read br i1 %.not20, label %45, label %22 22: ; preds = %13 - tail call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #9 + tail call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #8 %.val2328 = load ptr, ptr %5, align 8 %23 = getelementptr i8, ptr %.val2328, i64 8 %.val23.val29 = load ptr, ptr %23, align 8 @@ -254,7 +254,7 @@ define void @Sbc_ManCriticalPath_rec(ptr noundef %0, ptr noundef %1, i32 noundef .lr.ph: ; preds = %.preheader %32 = add nsw i32 %3, -1 - br label %69 + br label %68 33: ; preds = %12 %34 = getelementptr inbounds i8, ptr %0, i64 736 @@ -266,13 +266,13 @@ define void @Sbc_ManCriticalPath_rec(ptr noundef %0, ptr noundef %1, i32 noundef %37 = lshr i64 %.val76, 32 %38 = trunc nuw i64 %37 to i32 %39 = and i32 %38, 536870911 - %40 = tail call i32 @Tim_ManBoxForCi(ptr noundef nonnull %35, i32 noundef %39) #9 + %40 = tail call i32 @Tim_ManBoxForCi(ptr noundef nonnull %35, i32 noundef %39) #8 %41 = icmp sgt i32 %40, -1 br i1 %41, label %42, label %.critedge 42: ; preds = %36 - %43 = tail call i32 @Tim_ManBoxInputFirst(ptr noundef nonnull %35, i32 noundef %40) #9 - %44 = tail call i32 @Tim_ManBoxInputNum(ptr noundef nonnull %35, i32 noundef %40) #9 + %43 = tail call i32 @Tim_ManBoxInputFirst(ptr noundef nonnull %35, i32 noundef %40) #8 + %44 = tail call i32 @Tim_ManBoxInputNum(ptr noundef nonnull %35, i32 noundef %40) #8 %45 = icmp sgt i32 %44, 0 br i1 %45, label %.lr.ph89, label %.critedge @@ -283,8 +283,8 @@ define void @Sbc_ManCriticalPath_rec(ptr noundef %0, ptr noundef %1, i32 noundef %wide.trip.count = zext nneg i32 %44 to i64 br label %49 -49: ; preds = %.lr.ph89, %68 - %indvars.iv92 = phi i64 [ 0, %.lr.ph89 ], [ %indvars.iv.next93, %68 ] +49: ; preds = %.lr.ph89, %67 + %indvars.iv92 = phi i64 [ 0, %.lr.ph89 ], [ %indvars.iv.next93, %67 ] %.val81 = load ptr, ptr %13, align 8 %.val82 = load ptr, ptr %46, align 8 %50 = getelementptr i8, ptr %.val82, i64 8 @@ -305,55 +305,53 @@ define void @Sbc_ManCriticalPath_rec(ptr noundef %0, ptr noundef %1, i32 noundef %63 = icmp sge i32 %62, %47 %64 = icmp ne i32 %53, %57 %or.cond = and i1 %63, %64 - br i1 %or.cond, label %65, label %68 + br i1 %or.cond, label %65, label %67 65: ; preds = %49 %66 = sub nsw i32 %62, %47 - %67 = tail call noundef range(i32 0, -2147483648) i32 @llvm.smax.i32(i32 %66, i32 0) - tail call void @Sbc_ManCriticalPath_rec(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %58, i32 noundef %61, ptr noundef %4, i32 noundef %67) - br label %68 + tail call void @Sbc_ManCriticalPath_rec(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %58, i32 noundef %61, ptr noundef %4, i32 noundef %66) + br label %67 -68: ; preds = %49, %65 +67: ; preds = %49, %65 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %exitcond.not = icmp eq i64 %indvars.iv.next93, %wide.trip.count br i1 %exitcond.not, label %.critedge, label %49, !llvm.loop !8 -69: ; preds = %.lr.ph, %81 - %.val7795 = phi ptr [ %.val7785, %.lr.ph ], [ %.val77, %81 ] - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %81 ] - %70 = phi ptr [ %29, %.lr.ph ], [ %86, %81 ] - %71 = getelementptr inbounds i8, ptr %70, i64 4 - %72 = getelementptr inbounds i32, ptr %71, i64 %indvars.iv - %73 = load i32, ptr %72, align 4 - %74 = sext i32 %73 to i64 - %75 = getelementptr inbounds i32, ptr %1, i64 %74 - %76 = load i32, ptr %75, align 4 - %77 = add nsw i32 %76, %5 - %.not70 = icmp slt i32 %77, %32 - br i1 %.not70, label %81, label %78 - -78: ; preds = %69 - %79 = sub nsw i32 %77, %32 - %80 = tail call noundef range(i32 0, -2147483648) i32 @llvm.smax.i32(i32 %79, i32 0) - tail call void @Sbc_ManCriticalPath_rec(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %73, i32 noundef %76, ptr noundef %4, i32 noundef %80) +68: ; preds = %.lr.ph, %79 + %.val7795 = phi ptr [ %.val7785, %.lr.ph ], [ %.val77, %79 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %79 ] + %69 = phi ptr [ %29, %.lr.ph ], [ %84, %79 ] + %70 = getelementptr inbounds i8, ptr %69, i64 4 + %71 = getelementptr inbounds i32, ptr %70, i64 %indvars.iv + %72 = load i32, ptr %71, align 4 + %73 = sext i32 %72 to i64 + %74 = getelementptr inbounds i32, ptr %1, i64 %73 + %75 = load i32, ptr %74, align 4 + %76 = add nsw i32 %75, %5 + %.not70 = icmp slt i32 %76, %32 + br i1 %.not70, label %79, label %77 + +77: ; preds = %68 + %78 = sub nsw i32 %76, %32 + tail call void @Sbc_ManCriticalPath_rec(ptr noundef nonnull %0, ptr noundef nonnull %1, i32 noundef %72, i32 noundef %75, ptr noundef %4, i32 noundef %78) %.val77.pre = load ptr, ptr %24, align 8 - br label %81 + br label %79 -81: ; preds = %69, %78 - %.val77 = phi ptr [ %.val7795, %69 ], [ %.val77.pre, %78 ] +79: ; preds = %68, %77 + %.val77 = phi ptr [ %.val7795, %68 ], [ %.val77.pre, %77 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %82 = getelementptr i8, ptr %.val77, i64 8 - %.val77.val = load ptr, ptr %82, align 8 - %83 = getelementptr inbounds i32, ptr %.val77.val, i64 %9 - %84 = load i32, ptr %83, align 4 - %85 = sext i32 %84 to i64 - %86 = getelementptr inbounds i32, ptr %.val77.val, i64 %85 - %87 = load i32, ptr %86, align 4 - %88 = sext i32 %87 to i64 - %89 = icmp slt i64 %indvars.iv.next, %88 - br i1 %89, label %69, label %.critedge, !llvm.loop !9 - -.critedge: ; preds = %81, %68, %.preheader, %42, %33, %36, %6 + %80 = getelementptr i8, ptr %.val77, i64 8 + %.val77.val = load ptr, ptr %80, align 8 + %81 = getelementptr inbounds i32, ptr %.val77.val, i64 %9 + %82 = load i32, ptr %81, align 4 + %83 = sext i32 %82 to i64 + %84 = getelementptr inbounds i32, ptr %.val77.val, i64 %83 + %85 = load i32, ptr %84, align 4 + %86 = sext i32 %85 to i64 + %87 = icmp slt i64 %indvars.iv.next, %86 + br i1 %87, label %68, label %.critedge, !llvm.loop !9 + +.critedge: ; preds = %79, %67, %.preheader, %42, %33, %36, %6 ret void } @@ -373,11 +371,11 @@ define noundef ptr @Sbc_ManCriticalPath(ptr noundef %0) local_unnamed_addr #1 { br i1 %.not, label %7, label %5 5: ; preds = %1 - %6 = tail call i32 @Gia_ManLutLevelWithBoxes(ptr noundef nonnull %0) #9 + %6 = tail call i32 @Gia_ManLutLevelWithBoxes(ptr noundef nonnull %0) #8 br label %9 7: ; preds = %1 - %8 = call i32 @Gia_ManLutLevel(ptr noundef nonnull %0, ptr noundef nonnull %2) #9 + %8 = call i32 @Gia_ManLutLevel(ptr noundef nonnull %0, ptr noundef nonnull %2) #8 br label %9 9: ; preds = %7, %5 @@ -389,7 +387,7 @@ define noundef ptr @Sbc_ManCriticalPath(ptr noundef %0) local_unnamed_addr #1 { %14 = icmp ne i32 %13, 0 %15 = zext i1 %14 to i32 %16 = add nsw i32 %12, %15 - %17 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #10 + %17 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #9 %18 = shl nsw i32 %16, 5 store i32 %18, ptr %17, align 8 %.not.i.i = icmp eq i32 %16, 0 @@ -398,7 +396,7 @@ define noundef ptr @Sbc_ManCriticalPath(ptr noundef %0) local_unnamed_addr #1 { 19: ; preds = %9 %20 = sext i32 %16 to i64 %21 = shl nsw i64 %20, 2 - %22 = call noalias ptr @malloc(i64 noundef %21) #10 + %22 = call noalias ptr @malloc(i64 noundef %21) #9 br label %Vec_BitStart.exit Vec_BitStart.exit: ; preds = %9, %19 @@ -422,7 +420,7 @@ Vec_BitStart.exit: ; preds = %9, %19 br label %31 31: ; preds = %27, %Vec_BitStart.exit - call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #9 + call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #8 %32 = getelementptr inbounds i8, ptr %0, i64 72 %33 = load ptr, ptr %32, align 8 %34 = getelementptr i8, ptr %33, i64 4 @@ -480,7 +478,7 @@ Vec_BitStart.exit: ; preds = %9, %19 br i1 %or.cond3, label %63, label %64 63: ; preds = %.critedge - call void @free(ptr noundef nonnull %61) #9 + call void @free(ptr noundef nonnull %61) #8 store ptr null, ptr %2, align 8 br label %64 @@ -520,7 +518,7 @@ Vec_BitStart.exit: ; preds = %9, %19 br i1 %.not20.i, label %105, label %82 82: ; preds = %73 - call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #9 + call void @Gia_ManIncrementTravId(ptr noundef nonnull %0) #8 %.val2328.i = load ptr, ptr %66, align 8 %83 = getelementptr i8, ptr %.val2328.i, i64 8 %.val23.val29.i = load ptr, ptr %83, align 8 @@ -598,7 +596,7 @@ define void @Sbc_ManDelayTrace(ptr noundef %0) local_unnamed_addr #1 { 9: ; preds = %1 %10 = sext i32 %8 to i64 %11 = shl nsw i64 %10, 2 - %12 = tail call noalias ptr @malloc(i64 noundef %11) #10 + %12 = tail call noalias ptr @malloc(i64 noundef %11) #9 br label %Vec_BitStart.exit Vec_BitStart.exit: ; preds = %1, %9 @@ -615,7 +613,7 @@ Vec_BitStart.exit: ; preds = %1, %9 br label %143 16: ; preds = %Vec_BitStart.exit - %17 = call i32 @Gia_ManLutLevel(ptr noundef nonnull %0, ptr noundef nonnull %2) #9 + %17 = call i32 @Gia_ManLutLevel(ptr noundef nonnull %0, ptr noundef nonnull %2) #8 %18 = getelementptr inbounds i8, ptr %0, i64 72 %19 = load ptr, ptr %18, align 8 %20 = getelementptr i8, ptr %19, i64 4 @@ -840,7 +838,7 @@ Vec_BitStart.exit: ; preds = %1, %9 br i1 %.not74, label %131, label %130 130: ; preds = %._crit_edge - call void @free(ptr noundef nonnull %129) #9 + call void @free(ptr noundef nonnull %129) #8 store ptr null, ptr %2, align 8 br label %131 @@ -849,7 +847,7 @@ Vec_BitStart.exit: ; preds = %1, %9 br i1 %.not.i, label %Vec_BitFree.exit, label %132 132: ; preds = %131 - call void @free(ptr noundef nonnull %13) #9 + call void @free(ptr noundef nonnull %13) #8 br label %Vec_BitFree.exit Vec_BitFree.exit: ; preds = %131, %132 @@ -880,11 +878,8 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 ; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #7 - ; Function Attrs: nofree nounwind -declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #8 +declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #7 attributes #0 = { nofree nosync nounwind 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" } @@ -893,10 +888,9 @@ attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argm attributes #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #6 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nofree nounwind } -attributes #9 = { nounwind } -attributes #10 = { nounwind allocsize(0) } +attributes #7 = { nofree nounwind } +attributes #8 = { nounwind } +attributes #9 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/arrow/optimized/basic_decimal.cc.ll b/bench/arrow/optimized/basic_decimal.cc.ll index 6d9c8186525..7e7725d2c9a 100644 --- a/bench/arrow/optimized/basic_decimal.cc.ll +++ b/bench/arrow/optimized/basic_decimal.cc.ll @@ -3104,12 +3104,12 @@ _ZN5arrowL15ShiftArrayRightEPjll.exit.i: ; preds = %for.end.i145.i, %fo call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %result_array.i152.i) %sub1.i.i.i = add i64 %sub.i, -9 %cmp18.i.i.i = icmp sgt i64 %sub1.i.i.i, -1 - br i1 %cmp18.i.i.i, label %for.body.i.i159.i, label %for.end.i.i153.i + br i1 %cmp18.i.i.i, label %for.body.i.i159.i, label %for.body8.preheader.i.i.i for.cond.i.i.i: ; preds = %for.body.i.i159.i %dec.i.i161.i = add nsw i64 %i.019.i.i.i, -1 %cmp.i.i162.i = icmp sgt i64 %i.019.i.i.i, 0 - br i1 %cmp.i.i162.i, label %for.body.i.i159.i, label %for.end.i.i153.i, !llvm.loop !24 + br i1 %cmp.i.i162.i, label %for.body.i.i159.i, label %for.body8.preheader.i.i.i, !llvm.loop !24 for.body.i.i159.i: ; preds = %_ZN5arrowL15ShiftArrayRightEPjll.exit.i, %for.cond.i.i.i %i.019.i.i.i = phi i64 [ %dec.i.i161.i, %for.cond.i.i.i ], [ %sub1.i.i.i, %_ZN5arrowL15ShiftArrayRightEPjll.exit.i ] @@ -3118,10 +3118,7 @@ for.body.i.i159.i: ; preds = %_ZN5arrowL15ShiftAr %cmp2.not.i.i160.i = icmp eq i32 %45, 0 br i1 %cmp2.not.i.i160.i, label %for.cond.i.i.i, label %_ZN5arrowL14BuildFromArrayEPNS_15BasicDecimal256EPKjl.exit.i -for.end.i.i153.i: ; preds = %for.cond.i.i.i, %_ZN5arrowL15ShiftArrayRightEPjll.exit.i - br i1 %cmp23243.i, label %for.body8.preheader.i.i.i, label %for.body20.preheader.i.i.i - -for.body8.preheader.i.i.i: ; preds = %for.end.i.i153.i +for.body8.preheader.i.i.i: ; preds = %for.cond.i.i.i, %_ZN5arrowL15ShiftArrayRightEPjll.exit.i %sub3.i.i.i = add nsw i64 %sub.i, -1 br label %for.body8.i.i.i @@ -3130,9 +3127,8 @@ for.cond18.preheader.i.i.i: ; preds = %cond.end.i.i.i, %co %cmp1923.i.i.i = icmp samesign ult i64 %i4.0.lcssa.i.i.i, 4 br i1 %cmp1923.i.i.i, label %for.body20.preheader.i.i.i, label %if.end133.i -for.body20.preheader.i.i.i: ; preds = %for.cond18.preheader.i.i.i, %for.end.i.i153.i - %i4.0.lcssa28.i.i.i = phi i64 [ %i4.0.lcssa.i.i.i, %for.cond18.preheader.i.i.i ], [ 0, %for.end.i.i153.i ] - %46 = shl nuw nsw i64 %i4.0.lcssa28.i.i.i, 3 +for.body20.preheader.i.i.i: ; preds = %for.cond18.preheader.i.i.i + %46 = shl nuw nsw i64 %i4.0.lcssa.i.i.i, 3 %scevgep.i.i.i = getelementptr i8, ptr %result_array.i152.i, i64 %46 %47 = sub nuw nsw i64 32, %46 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.i.i.i, i8 0, i64 %47, i1 false) diff --git a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll index 9f99f98b727..a3740dc3e83 100644 --- a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll @@ -58984,7 +58984,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit107: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool95.not, label %if.end102, label %if.then96 ehcleanup86: ; preds = %cleanup.done79, %lpad51 - %.merged40 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done79 ], [ %41, %lpad51 ] + %.merged41 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done79 ], [ %41, %lpad51 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume @@ -59191,7 +59191,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit158: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool154.not, label %if.end161, label %if.then155 ehcleanup145: ; preds = %cleanup.done138, %lpad110 - %.merged39 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] + %.merged40 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg89) #22 br label %eh.resume @@ -59365,12 +59365,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit200: ; preds = %clea ret i64 4 ehcleanup204: ; preds = %cleanup.done197, %lpad169 - %.merged41 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] + %.merged39 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg148) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup204, %ehcleanup145, %ehcleanup86, %ehcleanup35 - %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged41, %ehcleanup204 ], [ %.merged39, %ehcleanup145 ], [ %.merged40, %ehcleanup86 ], [ %.merged, %ehcleanup35 ] + %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup204 ], [ %.merged40, %ehcleanup145 ], [ %.merged41, %ehcleanup86 ], [ %.merged, %ehcleanup35 ] resume { ptr, i32 } %lpad.val208.merged terminate.lpad: ; preds = %cleanup.done197, %cleanup.done138, %cleanup.done79, %cleanup.done32 @@ -59946,7 +59946,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit55: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool43.not, label %if.end50, label %if.then44 ehcleanup35: ; preds = %cleanup.done32, %lpad12 - %.merged = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] + %.merged40 = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -60153,7 +60153,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit106: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool102.not, label %if.end109, label %if.then103 ehcleanup93: ; preds = %cleanup.done86, %lpad58 - %.merged40 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done86 ], [ %42, %lpad58 ] + %.merged = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done86 ], [ %42, %lpad58 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume @@ -60360,7 +60360,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit160: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool161.not, label %if.end168, label %if.then162 ehcleanup152: ; preds = %cleanup.done145, %lpad117 - %.merged41 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done145 ], [ %72, %lpad117 ] + %.merged39 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done145 ], [ %72, %lpad117 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg96) #22 br label %eh.resume @@ -60527,12 +60527,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit200: ; preds = %clea ret i64 4 ehcleanup204: ; preds = %cleanup.done197, %lpad169 - %.merged39 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] + %.merged41 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg155) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup204, %ehcleanup152, %ehcleanup93, %ehcleanup35 - %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup204 ], [ %.merged41, %ehcleanup152 ], [ %.merged40, %ehcleanup93 ], [ %.merged, %ehcleanup35 ] + %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged41, %ehcleanup204 ], [ %.merged39, %ehcleanup152 ], [ %.merged, %ehcleanup93 ], [ %.merged40, %ehcleanup35 ] resume { ptr, i32 } %lpad.val208.merged terminate.lpad: ; preds = %cleanup.done197, %cleanup.done145, %cleanup.done86, %cleanup.done32 @@ -61324,7 +61324,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit44: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged30 = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged29 = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -61531,7 +61531,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit98: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool109.not, label %if.end116, label %if.then110 ehcleanup100: ; preds = %cleanup.done93, %lpad65 - %.merged = phi { ptr, i32 } [ %.pn21.pn147, %cleanup.done93 ], [ %43, %lpad65 ] + %.merged30 = phi { ptr, i32 } [ %.pn21.pn147, %cleanup.done93 ], [ %43, %lpad65 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg44) #22 br label %eh.resume @@ -61698,12 +61698,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit137: ; preds = %clea ret i64 3 ehcleanup152: ; preds = %cleanup.done145, %lpad117 - %.merged29 = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] + %.merged = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg103) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup152, %ehcleanup100, %ehcleanup42 - %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup152 ], [ %.merged, %ehcleanup100 ], [ %.merged30, %ehcleanup42 ] + %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup152 ], [ %.merged30, %ehcleanup100 ], [ %.merged29, %ehcleanup42 ] resume { ptr, i32 } %lpad.val156.merged terminate.lpad: ; preds = %cleanup.done145, %cleanup.done93, %cleanup.done39 @@ -65354,7 +65354,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit47: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged33 = phi { ptr, i32 } [ %.pn.pn201, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn201, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -65764,7 +65764,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit195: ; preds = %clea ret i64 3 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup36 - %lpad.val145.merged = phi { ptr, i32 } [ %.pn30198, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged33, %ehcleanup36 ] + %lpad.val145.merged = phi { ptr, i32 } [ %.pn30198, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val145.merged terminate.lpad: ; preds = %cleanup.done33 @@ -66635,7 +66635,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 6 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -66709,12 +66709,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -67112,7 +67112,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 6 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -67186,12 +67186,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -69608,7 +69608,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit35: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged20 = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -69770,12 +69770,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit72: ; preds = %clean ret i64 3 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup78, %ehcleanup32 - %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup78 ], [ %.merged20, %ehcleanup32 ] + %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val82.merged terminate.lpad: ; preds = %cleanup.done71, %cleanup.done29 @@ -70453,7 +70453,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit90: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged29 = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -70604,7 +70604,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit125: ; preds = %invo ret i64 3 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged29 = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged30 = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -70678,12 +70678,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged30 = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup108 ], [ %.merged30, %ehcleanup68 ], [ %.merged29, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -73047,7 +73047,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool.not, label %if.end75, label %cleanup108 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged48 = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged50 = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -73121,7 +73121,7 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged50 = phi { ptr, i32 } [ %.pn33.pn251, %cleanup.done61 ], [ %54, %lpad33 ] + %.merged49 = phi { ptr, i32 } [ %.pn33.pn251, %cleanup.done61 ], [ %54, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -73424,7 +73424,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit203: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont157 unwind label %lpad156 ehcleanup111: ; preds = %cleanup.done104, %lpad76 - %.merged49 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] + %.merged47 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume @@ -73575,7 +73575,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit239: ; preds = %invo ret i64 5 ehcleanup151: ; preds = %cleanup.done144, %lpad116 - %.merged47 = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] + %.merged48 = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg114) #22 br label %eh.resume @@ -73654,7 +73654,7 @@ ehcleanup191: ; preds = %cleanup.done184, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup191, %ehcleanup151, %ehcleanup111, %ehcleanup68, %ehcleanup29 - %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup191 ], [ %.merged47, %ehcleanup151 ], [ %.merged49, %ehcleanup111 ], [ %.merged50, %ehcleanup68 ], [ %.merged48, %ehcleanup29 ] + %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup191 ], [ %.merged48, %ehcleanup151 ], [ %.merged47, %ehcleanup111 ], [ %.merged49, %ehcleanup68 ], [ %.merged50, %ehcleanup29 ] resume { ptr, i32 } %lpad.val195.merged terminate.lpad: ; preds = %cleanup.done184, %cleanup.done144, %cleanup.done104, %cleanup.done61, %cleanup.done26 @@ -73956,7 +73956,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit36: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -74123,12 +74123,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit76: ; preds = %clean ret i64 2 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -74491,7 +74491,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 4 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -74565,12 +74565,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -74893,7 +74893,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit55: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged39 = phi { ptr, i32 } [ %.pn.pn191, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn191, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -75421,12 +75421,12 @@ cleanup.done151: ; preds = %cleanup.action150, to label %ehcleanup158 unwind label %terminate.lpad ehcleanup158: ; preds = %cleanup.done151, %lpad123 - %.merged = phi { ptr, i32 } [ %.pn33.pn203, %cleanup.done151 ], [ %102, %lpad123 ] + %.merged39 = phi { ptr, i32 } [ %.pn33.pn203, %cleanup.done151 ], [ %102, %lpad123 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg121) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup158, %ehcleanup118, %ehcleanup78, %ehcleanup32 - %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup158 ], [ %.merged40, %ehcleanup118 ], [ %.merged38, %ehcleanup78 ], [ %.merged39, %ehcleanup32 ] + %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup158 ], [ %.merged40, %ehcleanup118 ], [ %.merged38, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val162.merged terminate.lpad: ; preds = %cleanup.done151, %cleanup.done111, %cleanup.done71, %cleanup.done29 @@ -75883,7 +75883,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged47 = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged50 = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -76066,7 +76066,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit157: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont114 unwind label %lpad113 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged48 = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -76249,7 +76249,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit204: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont154 unwind label %lpad153 ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged49 = phi { ptr, i32 } [ %.pn36.pn256, %cleanup.done101 ], [ %78, %lpad73 ] + %.merged48 = phi { ptr, i32 } [ %.pn36.pn256, %cleanup.done101 ], [ %78, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume @@ -76400,7 +76400,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit240: ; preds = %invo ret i64 5 ehcleanup148: ; preds = %cleanup.done141, %lpad113 - %.merged = phi { ptr, i32 } [ %.pn39.pn260, %cleanup.done141 ], [ %104, %lpad113 ] + %.merged49 = phi { ptr, i32 } [ %.pn39.pn260, %cleanup.done141 ], [ %104, %lpad113 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg111) #22 br label %eh.resume @@ -76474,12 +76474,12 @@ cleanup.done181: ; preds = %cleanup.action180, to label %ehcleanup188 unwind label %terminate.lpad ehcleanup188: ; preds = %cleanup.done181, %lpad153 - %.merged50 = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] + %.merged47 = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup188, %ehcleanup148, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged50, %ehcleanup188 ], [ %.merged, %ehcleanup148 ], [ %.merged49, %ehcleanup108 ], [ %.merged48, %ehcleanup68 ], [ %.merged47, %ehcleanup29 ] + %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged47, %ehcleanup188 ], [ %.merged49, %ehcleanup148 ], [ %.merged48, %ehcleanup108 ], [ %.merged, %ehcleanup68 ], [ %.merged50, %ehcleanup29 ] resume { ptr, i32 } %lpad.val192.merged terminate.lpad: ; preds = %cleanup.done181, %cleanup.done141, %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -77767,7 +77767,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged22 = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -77934,12 +77934,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit77: ; preds = %clean ret i64 6 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged22 = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -78975,7 +78975,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit33: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged = phi { ptr, i32 } [ %.pn.pn79, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged19 = phi { ptr, i32 } [ %.pn.pn79, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -79142,12 +79142,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit73: ; preds = %clean ret i64 2 ehcleanup93: ; preds = %cleanup.done86, %lpad58 - %.merged19 = phi { ptr, i32 } [ %.pn14.pn83, %cleanup.done86 ], [ %42, %lpad58 ] + %.merged = phi { ptr, i32 } [ %.pn14.pn83, %cleanup.done86 ], [ %42, %lpad58 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg44) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup93, %ehcleanup42 - %lpad.val97.merged = phi { ptr, i32 } [ %.pn1776, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged19, %ehcleanup93 ], [ %.merged, %ehcleanup42 ] + %lpad.val97.merged = phi { ptr, i32 } [ %.pn1776, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup93 ], [ %.merged19, %ehcleanup42 ] resume { ptr, i32 } %lpad.val97.merged terminate.lpad: ; preds = %cleanup.done86, %cleanup.done39 @@ -79500,7 +79500,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -79667,12 +79667,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit76: ; preds = %clean ret i64 9 ehcleanup95: ; preds = %cleanup.done88, %lpad60 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done88 ], [ %42, %lpad60 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done88 ], [ %42, %lpad60 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup95, %ehcleanup43 - %lpad.val99.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup95 ], [ %.merged, %ehcleanup43 ] + %lpad.val99.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup95 ], [ %.merged22, %ehcleanup43 ] resume { ptr, i32 } %lpad.val99.merged terminate.lpad: ; preds = %cleanup.done88, %cleanup.done40 @@ -79976,7 +79976,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit45: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged30 = phi { ptr, i32 } [ %.pn.pn136, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn136, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -80171,7 +80171,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit94: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool87.not, label %if.end89, label %cleanup122 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged29 = phi { ptr, i32 } [ %.pn21.pn140, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged30 = phi { ptr, i32 } [ %.pn21.pn140, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume @@ -80333,12 +80333,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit130: ; preds = %clea ret i64 12 ehcleanup125: ; preds = %cleanup.done118, %lpad90 - %.merged = phi { ptr, i32 } [ %.pn24.pn144, %cleanup.done118 ], [ %67, %lpad90 ] + %.merged29 = phi { ptr, i32 } [ %.pn24.pn144, %cleanup.done118 ], [ %67, %lpad90 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg81) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup125, %ehcleanup78, %ehcleanup32 - %lpad.val129.merged = phi { ptr, i32 } [ %.pn27133, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup125 ], [ %.merged29, %ehcleanup78 ], [ %.merged30, %ehcleanup32 ] + %lpad.val129.merged = phi { ptr, i32 } [ %.pn27133, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup125 ], [ %.merged30, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val129.merged terminate.lpad: ; preds = %cleanup.done118, %cleanup.done71, %cleanup.done29 @@ -81242,7 +81242,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit70: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged55 = phi { ptr, i32 } [ %.pn.pn274, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged54 = phi { ptr, i32 } [ %.pn.pn274, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -81442,7 +81442,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit123: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged52 = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume @@ -81642,7 +81642,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit176: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged52 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] + %.merged53 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #22 br label %eh.resume @@ -81842,7 +81842,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit229: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool203.not, label %if.end211, label %if.then204 ehcleanup194: ; preds = %cleanup.done187, %lpad159 - %.merged53 = phi { ptr, i32 } [ %.pn44.pn286, %cleanup.done187 ], [ %99, %lpad159 ] + %.merged55 = phi { ptr, i32 } [ %.pn44.pn286, %cleanup.done187 ], [ %99, %lpad159 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg144) #22 br label %eh.resume @@ -82016,12 +82016,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit268: ; preds = %clea ret i64 8 ehcleanup254: ; preds = %cleanup.done247, %lpad219 - %.merged54 = phi { ptr, i32 } [ %.pn47.pn290, %cleanup.done247 ], [ %129, %lpad219 ] + %.merged = phi { ptr, i32 } [ %.pn47.pn290, %cleanup.done247 ], [ %129, %lpad219 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg197) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup254, %ehcleanup194, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup254 ], [ %.merged53, %ehcleanup194 ], [ %.merged52, %ehcleanup141 ], [ %.merged, %ehcleanup88 ], [ %.merged55, %ehcleanup36 ] + %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup254 ], [ %.merged55, %ehcleanup194 ], [ %.merged53, %ehcleanup141 ], [ %.merged52, %ehcleanup88 ], [ %.merged54, %ehcleanup36 ] resume { ptr, i32 } %lpad.val258.merged terminate.lpad: ; preds = %cleanup.done247, %cleanup.done187, %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -82360,7 +82360,7 @@ cleanup.done26: ; preds = %cleanup.action25, % to label %ehcleanup29 unwind label %terminate.lpad ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -82552,7 +82552,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit70: ; preds = %clean ret i64 4 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup29 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup29 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done26 @@ -84378,7 +84378,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit67: ; preds = %invok ret i64 2 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -84452,12 +84452,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 diff --git a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll index 93949ec2903..8ffda1981d5 100644 --- a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll @@ -2369,7 +2369,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit91: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged29 = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -2520,7 +2520,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit127: ; preds = %invo ret i64 4 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged30 = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged29 = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume @@ -2594,12 +2594,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged30 = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup108 ], [ %.merged30, %ehcleanup68 ], [ %.merged29, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -2930,7 +2930,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit65: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn252, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged47 = phi { ptr, i32 } [ %.pn.pn252, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -3126,7 +3126,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit114: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool87.not, label %if.end89, label %cleanup122 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged48 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] + %.merged50 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume @@ -3322,7 +3322,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit162: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool134.not, label %if.end136, label %cleanup169 ehcleanup125: ; preds = %cleanup.done118, %lpad90 - %.merged50 = phi { ptr, i32 } [ %.pn36.pn260, %cleanup.done118 ], [ %69, %lpad90 ] + %.merged49 = phi { ptr, i32 } [ %.pn36.pn260, %cleanup.done118 ], [ %69, %lpad90 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg81) #18 br label %eh.resume @@ -3518,7 +3518,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit210: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool181.not, label %if.end183, label %cleanup216 ehcleanup172: ; preds = %cleanup.done165, %lpad137 - %.merged47 = phi { ptr, i32 } [ %.pn39.pn264, %cleanup.done165 ], [ %98, %lpad137 ] + %.merged48 = phi { ptr, i32 } [ %.pn39.pn264, %cleanup.done165 ], [ %98, %lpad137 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg128) #18 br label %eh.resume @@ -3681,12 +3681,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit246: ; preds = %clea ret i64 %inc176 ehcleanup219: ; preds = %cleanup.done212, %lpad184 - %.merged49 = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] + %.merged = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg175) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup219, %ehcleanup172, %ehcleanup125, %ehcleanup78, %ehcleanup32 - %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged49, %ehcleanup219 ], [ %.merged47, %ehcleanup172 ], [ %.merged50, %ehcleanup125 ], [ %.merged48, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] + %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup219 ], [ %.merged48, %ehcleanup172 ], [ %.merged49, %ehcleanup125 ], [ %.merged50, %ehcleanup78 ], [ %.merged47, %ehcleanup32 ] resume { ptr, i32 } %lpad.val223.merged terminate.lpad: ; preds = %cleanup.done212, %cleanup.done165, %cleanup.done118, %cleanup.done71, %cleanup.done29 @@ -4153,7 +4153,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit70: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged52 = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged53 = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -4354,7 +4354,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit122: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged54 = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume @@ -4549,7 +4549,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit174: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged54 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] + %.merged55 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #18 br label %eh.resume @@ -4961,7 +4961,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit322: ; preds = %clea ret i64 %inc198 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup141 ], [ %.merged, %ehcleanup88 ], [ %.merged52, %ehcleanup36 ] + %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged55, %ehcleanup141 ], [ %.merged54, %ehcleanup88 ], [ %.merged53, %ehcleanup36 ] resume { ptr, i32 } %lpad.val251.merged terminate.lpad: ; preds = %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -7909,7 +7909,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit33: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged19 = phi { ptr, i32 } [ %.pn.pn81, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged = phi { ptr, i32 } [ %.pn.pn81, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -8083,12 +8083,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit75: ; preds = %clean ret i64 2 ehcleanup100: ; preds = %cleanup.done93, %lpad65 - %.merged = phi { ptr, i32 } [ %.pn14.pn85, %cleanup.done93 ], [ %43, %lpad65 ] + %.merged19 = phi { ptr, i32 } [ %.pn14.pn85, %cleanup.done93 ], [ %43, %lpad65 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg44) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup100, %ehcleanup42 - %lpad.val104.merged = phi { ptr, i32 } [ %.pn1778, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup100 ], [ %.merged19, %ehcleanup42 ] + %lpad.val104.merged = phi { ptr, i32 } [ %.pn1778, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged19, %ehcleanup100 ], [ %.merged, %ehcleanup42 ] resume { ptr, i32 } %lpad.val104.merged terminate.lpad: ; preds = %cleanup.done93, %cleanup.done39 @@ -8994,12 +8994,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit214: ; preds = %clea ret i64 6 ehcleanup208: ; preds = %cleanup.done201, %lpad173 - %.merged44 = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] + %.merged43 = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup208, %ehcleanup95, %ehcleanup36 - %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged44, %ehcleanup208 ], [ %.merged42, %ehcleanup95 ], [ %.merged, %ehcleanup36 ] + %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged43, %ehcleanup208 ], [ %.merged42, %ehcleanup95 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val212.merged terminate.lpad: ; preds = %cleanup.done201, %cleanup.done88, %cleanup.done33 @@ -9383,7 +9383,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit67: ; preds = %invok ret i64 %inc35 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -9457,12 +9457,12 @@ cleanup.done64: ; preds = %cleanup.action63, % to label %ehcleanup71 unwind label %terminate.lpad ehcleanup71: ; preds = %cleanup.done64, %lpad36 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup71, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup71 ], [ %.merged, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup71 ], [ %.merged20, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done64, %cleanup.done29 @@ -11736,7 +11736,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -11904,12 +11904,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit77: ; preds = %clean ret i64 %inc39 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -15044,7 +15044,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit184: ; preds = %invo ret i64 %inc112 ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged = phi { ptr, i32 } [ %.pn30.pn200, %cleanup.done101 ], [ %81, %lpad73 ] + %.merged38 = phi { ptr, i32 } [ %.pn30.pn200, %cleanup.done101 ], [ %81, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #18 br label %eh.resume @@ -15118,12 +15118,12 @@ cleanup.done141: ; preds = %cleanup.action140, to label %ehcleanup148 unwind label %terminate.lpad ehcleanup148: ; preds = %cleanup.done141, %lpad113 - %.merged38 = phi { ptr, i32 } [ %.pn33.pn204, %cleanup.done141 ], [ %101, %lpad113 ] + %.merged = phi { ptr, i32 } [ %.pn33.pn204, %cleanup.done141 ], [ %101, %lpad113 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg111) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup148, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val152.merged = phi { ptr, i32 } [ %.pn36189, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged38, %ehcleanup148 ], [ %.merged, %ehcleanup108 ], [ %.merged39, %ehcleanup68 ], [ %.merged40, %ehcleanup29 ] + %lpad.val152.merged = phi { ptr, i32 } [ %.pn36189, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup148 ], [ %.merged38, %ehcleanup108 ], [ %.merged39, %ehcleanup68 ], [ %.merged40, %ehcleanup29 ] resume { ptr, i32 } %lpad.val152.merged terminate.lpad: ; preds = %cleanup.done141, %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -16395,7 +16395,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit69: ; preds = %invok ret i64 %inc32 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn77, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn77, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -16469,12 +16469,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn81, %cleanup.done61 ], [ %47, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn81, %cleanup.done61 ], [ %47, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1874, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1874, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -17083,7 +17083,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit95: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged76 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged74 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -18530,12 +18530,12 @@ cleanup.done346: ; preds = %cleanup.action345, to label %ehcleanup353 unwind label %terminate.lpad ehcleanup353: ; preds = %cleanup.done346, %lpad318 - %.merged79 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] + %.merged76 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg316) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup353, %ehcleanup32 - %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged79, %ehcleanup353 ], [ %.merged76, %ehcleanup32 ] + %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged76, %ehcleanup353 ], [ %.merged74, %ehcleanup32 ] resume { ptr, i32 } %lpad.val357.merged terminate.lpad: ; preds = %cleanup.done346, %cleanup.done29 diff --git a/bench/boost/optimized/approximately_equals.ll b/bench/boost/optimized/approximately_equals.ll index 01c7b1362b5..518380d31a7 100644 --- a/bench/boost/optimized/approximately_equals.ll +++ b/bench/boost/optimized/approximately_equals.ll @@ -469,14 +469,14 @@ target triple = "x86_64-pc-linux-gnu" %"struct.boost::multiprecision::detail::expression.1045" = type { %"struct.boost::multiprecision::detail::expression.1046", %"struct.boost::multiprecision::detail::expression.1047", ptr } %"struct.boost::multiprecision::detail::expression.1046" = type { i64 } %"struct.boost::multiprecision::detail::expression.1047" = type { ptr } -%"class.std::out_of_range" = type { %"class.std::logic_error" } -%"class.std::logic_error" = type { %"class.std::exception", %"struct.std::__cow_string" } %"struct.boost::multiprecision::detail::add_immediates" = type { i8 } %"struct.boost::multiprecision::detail::subtract_immediates" = type { i8 } %"struct.boost::multiprecision::detail::expression.1053" = type { ptr, i64 } %"struct.boost::multiprecision::detail::expression.1054" = type { ptr, i64 } %"struct.boost::multiprecision::backends::cpp_int_base<0, 18446744073709551615, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, std::allocator>::scoped_shared_storage" = type <{ ptr, i64, i64, i8, [7 x i8] }> %"class.std::domain_error" = type { %"class.std::logic_error" } +%"class.std::logic_error" = type { %"class.std::exception", %"struct.std::__cow_string" } +%"class.std::out_of_range" = type { %"class.std::logic_error" } %"class.std::overflow_error" = type { %"class.std::runtime_error" } %"class.boost::math::rounding_error" = type { %"class.std::runtime_error" } %"struct.boost::multiprecision::backends::cpp_int_backend.1060" = type { %"struct.boost::multiprecision::backends::cpp_int_base.base.1062", [8 x i8] } @@ -152373,98 +152373,82 @@ _ZN5boost14multiprecision8backends12cpp_int_baseILm0ELm18446744073709551615ELNS0 ; Function Attrs: inlinehint mustprogress uwtable define linkonce_odr hidden noundef i64 @_ZN5boost14multiprecision16cpp_bf_io_detail19restricted_multiplyIlEET_RNS0_6numberINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEERKSC_SF_S3_Rl(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(32) %1, ptr noundef nonnull align 16 dereferenceable(32) %2, i64 noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #4 comdat personality ptr @__gxx_personality_v0 { - %6 = alloca %"class.std::out_of_range", align 8 - %7 = alloca %"struct.boost::source_location", align 8 - %8 = alloca i64, align 8 + %6 = alloca i64, align 8 tail call void @_ZN5boost14multiprecision8backends13eval_multiplyILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyELm0ELm0ELS3_1ELS4_0ES5_Lm0ELm0ELS3_1ELS4_0ES5_EENSt9enable_ifIXaaaantsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valuentsr18is_trivial_cpp_intINS7_IXT4_EXT5_EXT6_EXT7_ET8_EEEE5valuentsr18is_trivial_cpp_intINS7_IXT9_EXT10_EXT11_EXT12_ET13_EEEE5valueEvE4typeERS9_RKSB_RKSD_(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(27) %1, ptr noundef nonnull align 16 dereferenceable(27) %2) - %9 = tail call noundef i64 @_ZN5boost14multiprecision8backends8eval_msbILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEmE4typeERKS9_(ptr noundef nonnull align 16 dereferenceable(32) %0) - %10 = icmp sgt i64 %9, %3 - br i1 %10, label %11, label %.thread + %7 = tail call noundef i64 @_ZN5boost14multiprecision8backends8eval_msbILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEmE4typeERKS9_(ptr noundef nonnull align 16 dereferenceable(32) %0) + %8 = icmp sgt i64 %7, %3 + br i1 %8, label %9, label %.thread -11: ; preds = %5 - %12 = sub nsw i64 %9, %3 - %13 = tail call noundef i64 @_ZN5boost14multiprecision8backends8eval_lsbILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEmE4typeERKS9_(ptr noundef nonnull align 16 dereferenceable(32) %0) - %14 = icmp slt i64 %13, %12 - br i1 %14, label %15, label %18 +9: ; preds = %5 + %10 = sub nsw i64 %7, %3 + %11 = tail call noundef i64 @_ZN5boost14multiprecision8backends8eval_lsbILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEmE4typeERKS9_(ptr noundef nonnull align 16 dereferenceable(32) %0) + %12 = icmp slt i64 %11, %10 + br i1 %12, label %13, label %16 -15: ; preds = %11 - %16 = load i64, ptr %4, align 8, !tbaa !93 - %.not = icmp eq i64 %16, 0 - %17 = shl nsw i64 %16, 1 - %spec.select = select i1 %.not, i64 1, i64 %17 +13: ; preds = %9 + %14 = load i64, ptr %4, align 8, !tbaa !93 + %.not = icmp eq i64 %14, 0 + %15 = shl nsw i64 %14, 1 + %spec.select = select i1 %.not, i64 1, i64 %15 store i64 %spec.select, ptr %4, align 8, !tbaa !93 - br label %18 - -18: ; preds = %15, %11 - %.not30 = icmp eq i64 %12, 0 - br i1 %.not30, label %.thread, label %19 + br label %16 -19: ; preds = %18 - %20 = add nsw i64 %12, -1 - %21 = lshr i64 %20, 6 - %22 = and i64 %21, 67108863 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %24 = load i64, ptr %23, align 16, !tbaa !2517 - %.not.i.i = icmp ult i64 %22, %24 - br i1 %.not.i.i, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread +16: ; preds = %13, %9 + %.not30 = icmp eq i64 %10, 0 + br i1 %.not30, label %.thread, label %17 -_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit: ; preds = %19 - %25 = and i64 %20, 63 - %26 = shl nuw i64 1, %25 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 25 - %28 = load i8, ptr %27, align 1, !tbaa !2520, !range !17, !noundef !18 - %29 = trunc nuw i8 %28 to i1 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %31 = load ptr, ptr %30, align 8 - %32 = select i1 %29, ptr %0, ptr %31 - %33 = getelementptr inbounds nuw i64, ptr %32, i64 %22 - %34 = load i64, ptr %33, align 8, !tbaa !1538 - %35 = and i64 %34, %26 - %.fr = freeze i64 %35 +17: ; preds = %16 + %18 = add nsw i64 %10, -1 + %19 = lshr i64 %18, 6 + %20 = and i64 %19, 67108863 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %22 = load i64, ptr %21, align 16, !tbaa !2517 + %.not.i.i = icmp ult i64 %20, %22 + br i1 %.not.i.i, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread.thread + +_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit: ; preds = %17 + %23 = and i64 %18, 63 + %24 = shl nuw i64 1, %23 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 25 + %26 = load i8, ptr %25, align 1, !tbaa !2520, !range !17, !noundef !18 + %27 = trunc nuw i8 %26 to i1 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load ptr, ptr %28, align 8 + %30 = select i1 %27, ptr %0, ptr %29 + %31 = getelementptr inbounds nuw i64, ptr %30, i64 %20 + %32 = load i64, ptr %31, align 8, !tbaa !1538 + %33 = and i64 %32, %24 + %.fr = freeze i64 %33 %.not43 = icmp eq i64 %.fr, 0 - %36 = icmp eq i64 %13, %20 - %. = select i1 %36, i32 1, i32 2 - %spec.select40 = select i1 %.not43, i32 0, i32 %. - br label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread - -_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit, %19 - %37 = phi i32 [ 0, %19 ], [ %spec.select40, %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit ] - %38 = icmp slt i64 %12, 0 - br i1 %38, label %39, label %46 - -39: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #58 - call void @_ZNSt12out_of_rangeC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str.804) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #58 - store ptr @.str.805, ptr %7, align 8, !tbaa !2415 - %40 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store ptr @.str.806, ptr %40, align 8, !tbaa !2417 - %41 = getelementptr inbounds nuw i8, ptr %7, i64 16 - store i32 1481, ptr %41, align 8, !tbaa !2418 - %42 = getelementptr inbounds nuw i8, ptr %7, i64 20 - store i32 87, ptr %42, align 4, !tbaa !2419 - invoke void @_ZN5boost15throw_exceptionISt12out_of_rangeEEvRKT_RKNS_15source_locationE(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(24) %7) #57 - to label %43 unwind label %44 + br i1 %.not43, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread.thread, label %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread -43: ; preds = %39 - unreachable +_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread.thread: ; preds = %17, %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit + tail call void @_ZN5boost14multiprecision8backends16eval_right_shiftILm0ELm0ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_ELNS0_16cpp_integer_typeE1EXT1_ET2_EEEE5valueEvE4typeERS9_o(ptr noundef nonnull align 16 dereferenceable(32) %0, i64 noundef %10, i64 noundef 0) + br label %.thread -44: ; preds = %39 - %45 = landingpad { ptr, i32 } - cleanup - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #58 - call void @_ZNSt12out_of_rangeD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #58 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #58 - resume { ptr, i32 } %45 +_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit + %34 = icmp eq i64 %11, %18 + tail call void @_ZN5boost14multiprecision8backends16eval_right_shiftILm0ELm0ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_ELNS0_16cpp_integer_typeE1EXT1_ET2_EEEE5valueEvE4typeERS9_o(ptr noundef nonnull align 16 dereferenceable(32) %0, i64 noundef %10, i64 noundef 0) + br i1 %34, label %35, label %44 -46: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread - tail call void @_ZN5boost14multiprecision8backends16eval_right_shiftILm0ELm0ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_ELNS0_16cpp_integer_typeE1EXT1_ET2_EEEE5valueEvE4typeERS9_o(ptr noundef nonnull align 16 dereferenceable(32) %0, i64 noundef %12, i64 noundef 0) - switch i32 %37, label %.thread [ - i32 2, label %56 - i32 1, label %47 - ] +35: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread + %36 = getelementptr inbounds nuw i8, ptr %0, i64 25 + %37 = load i8, ptr %36, align 1, !tbaa !2520, !range !17, !noundef !18 + %38 = trunc nuw i8 %37 to i1 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %40 = load ptr, ptr %39, align 8 + %41 = select i1 %38, ptr %0, ptr %40 + %42 = load i64, ptr %41, align 8, !tbaa !1538 + %43 = and i64 %42, 1 + %.not31 = icmp eq i64 %43, 0 + br i1 %.not31, label %.thread, label %44 -47: ; preds = %46 +44: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread, %35 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #58 + store i64 1, ptr %6, align 8, !tbaa !1538 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %46 = load i8, ptr %45, align 8, !tbaa !2519, !range !17, !noundef !18 + %47 = trunc nuw i8 %46 to i1 %48 = getelementptr inbounds nuw i8, ptr %0, i64 25 %49 = load i8, ptr %48, align 1, !tbaa !2520, !range !17, !noundef !18 %50 = trunc nuw i8 %49 to i1 @@ -152472,68 +152456,51 @@ _ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_1 %52 = load ptr, ptr %51, align 8 %53 = select i1 %50, ptr %0, ptr %52 %54 = load i64, ptr %53, align 8, !tbaa !1538 - %55 = and i64 %54, 1 - %.not31 = icmp eq i64 %55, 0 - br i1 %.not31, label %.thread, label %56 - -56: ; preds = %46, %47 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #58 - store i64 1, ptr %8, align 8, !tbaa !1538 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %58 = load i8, ptr %57, align 8, !tbaa !2519, !range !17, !noundef !18 - %59 = trunc nuw i8 %58 to i1 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 25 - %61 = load i8, ptr %60, align 1, !tbaa !2520, !range !17, !noundef !18 - %62 = trunc nuw i8 %61 to i1 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %64 = load ptr, ptr %63, align 8 - %65 = select i1 %62, ptr %0, ptr %64 - %66 = load i64, ptr %65, align 8, !tbaa !1538 - br i1 %59, label %70, label %67 + br i1 %47, label %58, label %55 -67: ; preds = %56 - %.not.i = icmp eq i64 %66, -1 - br i1 %.not.i, label %80, label %68 +55: ; preds = %44 + %.not.i = icmp eq i64 %54, -1 + br i1 %.not.i, label %68, label %56 -68: ; preds = %67 - %69 = add nuw i64 %66, 1 - store i64 %69, ptr %65, align 8, !tbaa !1538 +56: ; preds = %55 + %57 = add nuw i64 %54, 1 + store i64 %57, ptr %53, align 8, !tbaa !1538 br label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit -70: ; preds = %56 - %.not10.i = icmp eq i64 %66, 0 - br i1 %.not10.i, label %79, label %71 +58: ; preds = %44 + %.not10.i = icmp eq i64 %54, 0 + br i1 %.not10.i, label %67, label %59 -71: ; preds = %70 - %72 = add i64 %66, -1 - store i64 %72, ptr %65, align 8, !tbaa !1538 - %73 = load ptr, ptr %63, align 8 - %74 = select i1 %62, ptr %0, ptr %73 - %75 = load i64, ptr %74, align 8, !tbaa !1538 - %.not11.i = icmp eq i64 %75, 0 - %76 = load i64, ptr %23, align 16 - %77 = icmp eq i64 %76, 1 - %or.cond = select i1 %.not11.i, i1 %77, i1 false - br i1 %or.cond, label %78, label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit - -78: ; preds = %71 - store i8 0, ptr %57, align 8, !tbaa !2519 +59: ; preds = %58 + %60 = add i64 %54, -1 + store i64 %60, ptr %53, align 8, !tbaa !1538 + %61 = load ptr, ptr %51, align 8 + %62 = select i1 %50, ptr %0, ptr %61 + %63 = load i64, ptr %62, align 8, !tbaa !1538 + %.not11.i = icmp eq i64 %63, 0 + %64 = load i64, ptr %21, align 16 + %65 = icmp eq i64 %64, 1 + %or.cond = select i1 %.not11.i, i1 %65, i1 false + br i1 %or.cond, label %66, label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit + +66: ; preds = %59 + store i8 0, ptr %45, align 8, !tbaa !2519 br label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit -79: ; preds = %70 - call void @_ZN5boost14multiprecision8backends17subtract_unsignedINS1_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEES7_EEvRT_RKT0_RKy(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %8) +67: ; preds = %58 + call void @_ZN5boost14multiprecision8backends17subtract_unsignedINS1_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEES7_EEvRT_RKT0_RKy(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6) br label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit -80: ; preds = %67 - call void @_ZN5boost14multiprecision8backends12add_unsignedINS1_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEES7_EEvRT_RKT0_RKy(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %8) +68: ; preds = %55 + call void @_ZN5boost14multiprecision8backends12add_unsignedINS1_15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEES7_EEvRT_RKT0_RKy(ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 16 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %6) br label %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit -_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit: ; preds = %79, %80, %68, %71, %78 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #58 +_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit: ; preds = %67, %68, %56, %59, %66 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #58 br label %.thread -.thread: ; preds = %18, %47, %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit, %46, %5 - %.025 = phi i64 [ 0, %5 ], [ %12, %46 ], [ %12, %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit ], [ %12, %47 ], [ 0, %18 ] +.thread: ; preds = %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread.thread, %16, %35, %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit, %5 + %.025 = phi i64 [ 0, %5 ], [ %10, %_ZN5boost14multiprecision8backends14eval_incrementILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEENSt9enable_ifIXntsr18is_trivial_cpp_intINS1_15cpp_int_backendIXT_EXT0_EXT1_EXT2_ET3_EEEE5valueEvE4typeERS9_.exit ], [ %10, %35 ], [ 0, %16 ], [ %10, %_ZN5boost14multiprecision8bit_testINS0_8backends15cpp_int_backendILm0ELm0ELNS0_16cpp_integer_typeE1ELNS0_18cpp_int_check_typeE0ESaIyEEELNS0_26expression_template_optionE1EEENSt9enable_ifIXeqsr15number_categoryIT_EE5valueLNS0_20number_category_typeE0EEbE4typeERKNS0_6numberISA_XT0_EEEm.exit.thread.thread ] ret i64 %.025 } diff --git a/bench/boost/optimized/matches_relation_factory.ll b/bench/boost/optimized/matches_relation_factory.ll index 270cc09cc15..d57e2818273 100644 --- a/bench/boost/optimized/matches_relation_factory.ll +++ b/bench/boost/optimized/matches_relation_factory.ll @@ -81166,7 +81166,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN5boost13re_detail_50012perl_ma %8 = getelementptr inbounds nuw i8, ptr %0, i64 120 store i8 %7, ptr %8, align 8, !tbaa !1250 %9 = icmp sgt i32 %5, 0 - br i1 %9, label %10, label %140 + br i1 %9, label %10, label %133 10: ; preds = %1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 96 @@ -81197,13 +81197,13 @@ _ZN5boost13match_resultsIPKcSaINS_9sub_matchIS2_EEEE10set_secondES2_mbb.exit: ; %28 = getelementptr inbounds nuw i8, ptr %0, i64 192 %29 = load ptr, ptr %28, align 8, !tbaa !43 %30 = icmp eq ptr %27, %29 - br i1 %30, label %141, label %31 + br i1 %30, label %134, label %31 31: ; preds = %25 %32 = getelementptr inbounds i8, ptr %29, i64 -112 %33 = load i32, ptr %32, align 8, !tbaa !1313 %34 = icmp eq i32 %5, %33 - br i1 %34, label %35, label %141 + br i1 %34, label %35, label %134 35: ; preds = %31 %36 = getelementptr inbounds i8, ptr %29, i64 -104 @@ -81351,7 +81351,7 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIPKcSaINS %115 = load i32, ptr %114, align 8, !tbaa !1313 br label %116 -116: ; preds = %113, %107 +116: ; preds = %107, %113 %117 = phi i32 [ %115, %113 ], [ -2147483645, %107 ] store i32 5, ptr %.0.i8, align 8, !tbaa !12 %118 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 8 @@ -81365,57 +81365,44 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIPKcSaINS store ptr %121, ptr %122, align 8, !tbaa !1243 store ptr %118, ptr %99, align 8, !tbaa !43 %123 = load ptr, ptr %122, align 8, !tbaa !1243 - %124 = getelementptr inbounds nuw i8, ptr %123, i64 16 - %125 = load i32, ptr %124, align 8, !tbaa !1244 - %126 = icmp sgt i32 %98, %125 - %127 = icmp sgt i32 %125, -1 - %or.cond.i.i.i = and i1 %126, %127 - br i1 %or.cond.i.i.i, label %128, label %130 - -128: ; preds = %116 - %129 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %129, align 8, !tbaa !1320 - br label %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit - -130: ; preds = %116 - %131 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIPKcE12unwind_untilEiPS4_i(ptr noundef nonnull align 8 dereferenceable(40) %118, i32 noundef %98, ptr noundef nonnull %123, i32 noundef %117) - %.not.i.i.i = icmp eq ptr %131, null - br i1 %.not.i.i.i, label %138, label %132 - -132: ; preds = %130 - %133 = getelementptr inbounds nuw i8, ptr %131, i64 24 - %134 = load i64, ptr %133, align 8, !tbaa !1320 - %135 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 %134, ptr %135, align 8, !tbaa !1320 - %136 = getelementptr inbounds nuw i8, ptr %131, i64 32 - %137 = load ptr, ptr %136, align 8, !tbaa !1319 - store ptr %137, ptr %119, align 8, !tbaa !1319 + %124 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIPKcE12unwind_untilEiPS4_i(ptr noundef nonnull align 8 dereferenceable(40) %118, i32 noundef %98, ptr noundef nonnull %123, i32 noundef %117) + %.not.i.i.i = icmp eq ptr %124, null + br i1 %.not.i.i.i, label %131, label %125 + +125: ; preds = %116 + %126 = getelementptr inbounds nuw i8, ptr %124, i64 24 + %127 = load i64, ptr %126, align 8, !tbaa !1320 + %128 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 %127, ptr %128, align 8, !tbaa !1320 + %129 = getelementptr inbounds nuw i8, ptr %124, i64 32 + %130 = load ptr, ptr %129, align 8, !tbaa !1319 + store ptr %130, ptr %119, align 8, !tbaa !1319 br label %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit -138: ; preds = %130 - %139 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %139, align 8, !tbaa !1320 +131: ; preds = %116 + %132 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 0, ptr %132, align 8, !tbaa !1320 br label %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit -_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit: ; preds = %128, %132, %138 +_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit: ; preds = %125, %131 store ptr %.0.i8, ptr %49, align 8, !tbaa !1280 %.pre = load ptr, ptr %2, align 8, !tbaa !1246 - br label %141 + br label %134 -140: ; preds = %1 - switch i32 %5, label %145 [ - i32 -4, label %141 - i32 0, label %141 +133: ; preds = %1 + switch i32 %5, label %138 [ + i32 -4, label %134 + i32 0, label %134 ] -141: ; preds = %140, %140, %25, %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit, %31 - %142 = phi ptr [ %3, %140 ], [ %3, %140 ], [ %3, %25 ], [ %.pre, %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit ], [ %3, %31 ] - %143 = getelementptr inbounds nuw i8, ptr %142, i64 8 - %144 = load ptr, ptr %143, align 8, !tbaa !12 - br label %145 +134: ; preds = %133, %133, %25, %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit, %31 + %135 = phi ptr [ %3, %133 ], [ %3, %133 ], [ %3, %25 ], [ %.pre, %_ZN5boost13re_detail_50012perl_matcherIPKcSaINS_9sub_matchIS3_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit ], [ %3, %31 ] + %136 = getelementptr inbounds nuw i8, ptr %135, i64 8 + %137 = load ptr, ptr %136, align 8, !tbaa !12 + br label %138 -145: ; preds = %140, %141 - %storemerge = phi ptr [ %144, %141 ], [ null, %140 ] +138: ; preds = %133, %134 + %storemerge = phi ptr [ %137, %134 ], [ null, %133 ] store ptr %storemerge, ptr %2, align 8, !tbaa !1246 ret i1 true } @@ -93176,7 +93163,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN5boost13re_detail_50012perl_ma %8 = getelementptr inbounds nuw i8, ptr %0, i64 120 store i8 %7, ptr %8, align 8, !tbaa !1427 %9 = icmp sgt i32 %5, 0 - br i1 %9, label %10, label %140 + br i1 %9, label %10, label %133 10: ; preds = %1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 96 @@ -93207,13 +93194,13 @@ _ZN5boost13match_resultsIPKwSaINS_9sub_matchIS2_EEEE10set_secondES2_mbb.exit: ; %28 = getelementptr inbounds nuw i8, ptr %0, i64 192 %29 = load ptr, ptr %28, align 8, !tbaa !43 %30 = icmp eq ptr %27, %29 - br i1 %30, label %141, label %31 + br i1 %30, label %134, label %31 31: ; preds = %25 %32 = getelementptr inbounds i8, ptr %29, i64 -112 %33 = load i32, ptr %32, align 8, !tbaa !1482 %34 = icmp eq i32 %5, %33 - br i1 %34, label %35, label %141 + br i1 %34, label %35, label %134 35: ; preds = %31 %36 = getelementptr inbounds i8, ptr %29, i64 -104 @@ -93361,7 +93348,7 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIPKwSaINS %115 = load i32, ptr %114, align 8, !tbaa !1482 br label %116 -116: ; preds = %113, %107 +116: ; preds = %107, %113 %117 = phi i32 [ %115, %113 ], [ -2147483645, %107 ] store i32 5, ptr %.0.i8, align 8, !tbaa !12 %118 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 8 @@ -93375,57 +93362,44 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIPKwSaINS store ptr %121, ptr %122, align 8, !tbaa !1420 store ptr %118, ptr %99, align 8, !tbaa !43 %123 = load ptr, ptr %122, align 8, !tbaa !1420 - %124 = getelementptr inbounds nuw i8, ptr %123, i64 16 - %125 = load i32, ptr %124, align 8, !tbaa !1421 - %126 = icmp sgt i32 %98, %125 - %127 = icmp sgt i32 %125, -1 - %or.cond.i.i.i = and i1 %126, %127 - br i1 %or.cond.i.i.i, label %128, label %130 - -128: ; preds = %116 - %129 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %129, align 8, !tbaa !1489 - br label %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit - -130: ; preds = %116 - %131 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIPKwE12unwind_untilEiPS4_i(ptr noundef nonnull align 8 dereferenceable(40) %118, i32 noundef %98, ptr noundef nonnull %123, i32 noundef %117) - %.not.i.i.i = icmp eq ptr %131, null - br i1 %.not.i.i.i, label %138, label %132 - -132: ; preds = %130 - %133 = getelementptr inbounds nuw i8, ptr %131, i64 24 - %134 = load i64, ptr %133, align 8, !tbaa !1489 - %135 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 %134, ptr %135, align 8, !tbaa !1489 - %136 = getelementptr inbounds nuw i8, ptr %131, i64 32 - %137 = load ptr, ptr %136, align 8, !tbaa !1488 - store ptr %137, ptr %119, align 8, !tbaa !1488 + %124 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIPKwE12unwind_untilEiPS4_i(ptr noundef nonnull align 8 dereferenceable(40) %118, i32 noundef %98, ptr noundef nonnull %123, i32 noundef %117) + %.not.i.i.i = icmp eq ptr %124, null + br i1 %.not.i.i.i, label %131, label %125 + +125: ; preds = %116 + %126 = getelementptr inbounds nuw i8, ptr %124, i64 24 + %127 = load i64, ptr %126, align 8, !tbaa !1489 + %128 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 %127, ptr %128, align 8, !tbaa !1489 + %129 = getelementptr inbounds nuw i8, ptr %124, i64 32 + %130 = load ptr, ptr %129, align 8, !tbaa !1488 + store ptr %130, ptr %119, align 8, !tbaa !1488 br label %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit -138: ; preds = %130 - %139 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %139, align 8, !tbaa !1489 +131: ; preds = %116 + %132 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 0, ptr %132, align 8, !tbaa !1489 br label %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit -_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit: ; preds = %128, %132, %138 +_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit: ; preds = %125, %131 store ptr %.0.i8, ptr %49, align 8, !tbaa !1452 %.pre = load ptr, ptr %2, align 8, !tbaa !1423 - br label %141 + br label %134 -140: ; preds = %1 - switch i32 %5, label %145 [ - i32 -4, label %141 - i32 0, label %141 +133: ; preds = %1 + switch i32 %5, label %138 [ + i32 -4, label %134 + i32 0, label %134 ] -141: ; preds = %140, %140, %25, %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit, %31 - %142 = phi ptr [ %3, %140 ], [ %3, %140 ], [ %3, %25 ], [ %.pre, %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit ], [ %3, %31 ] - %143 = getelementptr inbounds nuw i8, ptr %142, i64 8 - %144 = load ptr, ptr %143, align 8, !tbaa !12 - br label %145 +134: ; preds = %133, %133, %25, %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit, %31 + %135 = phi ptr [ %3, %133 ], [ %3, %133 ], [ %3, %25 ], [ %.pre, %_ZN5boost13re_detail_50012perl_matcherIPKwSaINS_9sub_matchIS3_EEENS_12regex_traitsIwNS_16cpp_regex_traitsIwEEEEE19push_repeater_countEiPPNS0_14repeater_countIS3_EE.exit ], [ %3, %31 ] + %136 = getelementptr inbounds nuw i8, ptr %135, i64 8 + %137 = load ptr, ptr %136, align 8, !tbaa !12 + br label %138 -145: ; preds = %140, %141 - %storemerge = phi ptr [ %144, %141 ], [ null, %140 ] +138: ; preds = %133, %134 + %storemerge = phi ptr [ %137, %134 ], [ null, %133 ] store ptr %storemerge, ptr %2, align 8, !tbaa !1423 ret i1 true } diff --git a/bench/boost/optimized/read_graphviz_new.ll b/bench/boost/optimized/read_graphviz_new.ll index c45e780bf34..7a108190e28 100644 --- a/bench/boost/optimized/read_graphviz_new.ll +++ b/bench/boost/optimized/read_graphviz_new.ll @@ -53441,7 +53441,7 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN5boost13re_detail_50012perl_ma %8 = getelementptr inbounds nuw i8, ptr %0, i64 120 store i8 %7, ptr %8, align 8, !tbaa !886 %9 = icmp sgt i32 %5, 0 - br i1 %9, label %10, label %138 + br i1 %9, label %10, label %131 10: ; preds = %1 %11 = getelementptr inbounds nuw i8, ptr %0, i64 96 @@ -53473,13 +53473,13 @@ _ZN5boost13match_resultsIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_st %27 = getelementptr inbounds nuw i8, ptr %0, i64 192 %28 = load ptr, ptr %27, align 8, !tbaa !45 %29 = icmp eq ptr %26, %28 - br i1 %29, label %139, label %30 + br i1 %29, label %132, label %30 30: ; preds = %24 %31 = getelementptr inbounds i8, ptr %28, i64 -112 %32 = load i32, ptr %31, align 8, !tbaa !939 %33 = icmp eq i32 %5, %32 - br i1 %33, label %34, label %139 + br i1 %33, label %34, label %132 34: ; preds = %30 %35 = getelementptr inbounds i8, ptr %28, i64 -104 @@ -53627,7 +53627,7 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIN9__gnu_ %113 = load i32, ptr %112, align 8, !tbaa !939 br label %114 -114: ; preds = %111, %106 +114: ; preds = %106, %111 %115 = phi i32 [ %113, %111 ], [ -2147483645, %106 ] store i32 5, ptr %.0.i8, align 8, !tbaa !16 %116 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 8 @@ -53641,56 +53641,43 @@ _ZNSt6vectorIN5boost13re_detail_50014recursion_infoINS0_13match_resultsIN9__gnu_ store ptr %119, ptr %120, align 8, !tbaa !879 store ptr %116, ptr %98, align 8, !tbaa !45 %121 = load ptr, ptr %120, align 8, !tbaa !879 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 16 - %123 = load i32, ptr %122, align 8, !tbaa !880 - %124 = icmp sgt i32 %97, %123 - %125 = icmp sgt i32 %123, -1 - %or.cond.i.i.i = and i1 %124, %125 - br i1 %or.cond.i.i.i, label %126, label %128 - -126: ; preds = %114 - %127 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %127, align 8, !tbaa !945 + %122 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE12unwind_untilEiPSD_i(ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef %97, ptr noundef nonnull %121, i32 noundef %115) + %.not.i.i.i = icmp eq ptr %122, null + br i1 %.not.i.i.i, label %129, label %123 + +123: ; preds = %114 + %124 = getelementptr inbounds nuw i8, ptr %122, i64 24 + %125 = load i64, ptr %124, align 8, !tbaa !945 + %126 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 %125, ptr %126, align 8, !tbaa !945 + %127 = getelementptr inbounds nuw i8, ptr %122, i64 32 + %128 = load i64, ptr %127, align 8, !tbaa !45 + store i64 %128, ptr %117, align 8, !tbaa !45 br label %_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit -128: ; preds = %114 - %129 = tail call noundef ptr @_ZN5boost13re_detail_50014repeater_countIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE12unwind_untilEiPSD_i(ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef %97, ptr noundef nonnull %121, i32 noundef %115) - %.not.i.i.i = icmp eq ptr %129, null - br i1 %.not.i.i.i, label %136, label %130 - -130: ; preds = %128 - %131 = getelementptr inbounds nuw i8, ptr %129, i64 24 - %132 = load i64, ptr %131, align 8, !tbaa !945 - %133 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 %132, ptr %133, align 8, !tbaa !945 - %134 = getelementptr inbounds nuw i8, ptr %129, i64 32 - %135 = load i64, ptr %134, align 8, !tbaa !45 - store i64 %135, ptr %117, align 8, !tbaa !45 - br label %_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit - -136: ; preds = %128 - %137 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 - store i64 0, ptr %137, align 8, !tbaa !945 +129: ; preds = %114 + %130 = getelementptr inbounds nuw i8, ptr %.0.i8, i64 32 + store i64 0, ptr %130, align 8, !tbaa !945 br label %_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit -_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit: ; preds = %126, %130, %136 +_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit: ; preds = %123, %129 store ptr %.0.i8, ptr %48, align 8, !tbaa !910 - br label %139 + br label %132 -138: ; preds = %1 - switch i32 %5, label %143 [ - i32 -4, label %139 - i32 0, label %139 +131: ; preds = %1 + switch i32 %5, label %136 [ + i32 -4, label %132 + i32 0, label %132 ] -139: ; preds = %138, %138, %24, %_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit, %30 - %140 = load ptr, ptr %2, align 8, !tbaa !882 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 8 - %142 = load ptr, ptr %141, align 8, !tbaa !16 - br label %143 +132: ; preds = %131, %131, %24, %_ZN5boost13re_detail_50012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE19push_repeater_countEiPPNS0_14repeater_countISC_EE.exit, %30 + %133 = load ptr, ptr %2, align 8, !tbaa !882 + %134 = getelementptr inbounds nuw i8, ptr %133, i64 8 + %135 = load ptr, ptr %134, align 8, !tbaa !16 + br label %136 -143: ; preds = %138, %139 - %storemerge = phi ptr [ %142, %139 ], [ null, %138 ] +136: ; preds = %131, %132 + %storemerge = phi ptr [ %135, %132 ], [ null, %131 ] store ptr %storemerge, ptr %2, align 8, !tbaa !882 ret i1 true } diff --git a/bench/bullet3/optimized/btMultiSphereShape.ll b/bench/bullet3/optimized/btMultiSphereShape.ll index 97d68035c10..ccecb4cc4b2 100644 --- a/bench/bullet3/optimized/btMultiSphereShape.ll +++ b/bench/bullet3/optimized/btMultiSphereShape.ll @@ -351,8 +351,8 @@ arrayctor.loop.preheader.lr.ph: ; preds = %if.end arrayctor.loop.preheader: ; preds = %arrayctor.loop.preheader.lr.ph, %for.inc47 %indvars.iv = phi i32 [ %2, %arrayctor.loop.preheader.lr.ph ], [ %indvars.iv.next, %for.inc47 ] %maxDot.0101 = phi float [ 0xC3ABC16D60000000, %arrayctor.loop.preheader.lr.ph ], [ %maxDot.1, %for.inc47 ] - %pos.0100 = phi ptr [ %4, %arrayctor.loop.preheader.lr.ph ], [ %pos.1.lcssa107, %for.inc47 ] - %rad.099 = phi ptr [ %3, %arrayctor.loop.preheader.lr.ph ], [ %rad.1.lcssa106, %for.inc47 ] + %pos.0100 = phi ptr [ %4, %arrayctor.loop.preheader.lr.ph ], [ %pos.1.lcssa, %for.inc47 ] + %rad.099 = phi ptr [ %3, %arrayctor.loop.preheader.lr.ph ], [ %rad.1.lcssa, %for.inc47 ] %k.098 = phi i32 [ 0, %arrayctor.loop.preheader.lr.ph ], [ %add, %for.inc47 ] %retval.sroa.4.097 = phi <2 x float> [ zeroinitializer, %arrayctor.loop.preheader.lr.ph ], [ %retval.sroa.4.1, %for.inc47 ] %retval.sroa.0.096 = phi <2 x float> [ zeroinitializer, %arrayctor.loop.preheader.lr.ph ], [ %retval.sroa.0.1, %for.inc47 ] @@ -363,7 +363,7 @@ arrayctor.loop.preheader: ; preds = %arrayctor.loop.preh %cond = tail call i32 @llvm.smin.i32(i32 %sub, i32 128) %conv = sext i32 %cond to i64 %cmp1789 = icmp sgt i32 %sub, 0 - br i1 %cmp1789, label %for.body18, label %_ZNK9btVector36maxDotEPKS_lRf.exit + br i1 %cmp1789, label %for.body18, label %for.end for.body18: ; preds = %arrayctor.loop.preheader, %for.body18 %pos.192 = phi ptr [ %incdec.ptr, %for.body18 ], [ %pos.0100, %arrayctor.loop.preheader ] @@ -411,12 +411,17 @@ for.body18: ; preds = %arrayctor.loop.preh %incdec.ptr39 = getelementptr inbounds i8, ptr %rad.191, i64 4 %inc = add nuw nsw i64 %i.090, 1 %exitcond.not = icmp eq i64 %inc, %smax - br i1 %exitcond.not, label %for.body.i, label %for.body18, !llvm.loop !10 + br i1 %exitcond.not, label %for.end, label %for.body18, !llvm.loop !10 -for.body.i: ; preds = %for.body18, %for.body.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body.i ], [ 0, %for.body18 ] - %maxDot1.09.i = phi float [ %maxDot1.1.i, %for.body.i ], [ 0xC7EFFFFFE0000000, %for.body18 ] - %ptIndex.08.i = phi i32 [ %ptIndex.1.i, %for.body.i ], [ -1, %for.body18 ] +for.end: ; preds = %for.body18, %arrayctor.loop.preheader + %rad.1.lcssa = phi ptr [ %rad.099, %arrayctor.loop.preheader ], [ %incdec.ptr39, %for.body18 ] + %pos.1.lcssa = phi ptr [ %pos.0100, %arrayctor.loop.preheader ], [ %incdec.ptr, %for.body18 ] + br label %for.body.i + +for.body.i: ; preds = %for.end, %for.body.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %for.body.i ], [ 0, %for.end ] + %maxDot1.09.i = phi float [ %maxDot1.1.i, %for.body.i ], [ 0xC7EFFFFFE0000000, %for.end ] + %ptIndex.08.i = phi i32 [ %ptIndex.1.i, %for.body.i ], [ -1, %for.end ] %arrayidx.i = getelementptr inbounds %class.btVector3, ptr %temp, i64 %indvars.iv.i %15 = load float, ptr %arrayidx.i, align 16 %arrayidx5.i.i70 = getelementptr inbounds i8, ptr %arrayidx.i, i64 4 @@ -435,28 +440,21 @@ for.body.i: ; preds = %for.body18, %for.bo br i1 %exitcond.not.i, label %for.end.loopexit.i, label %for.body.i, !llvm.loop !11 for.end.loopexit.i: ; preds = %for.body.i - %21 = sext i32 %ptIndex.1.i to i64 - br label %_ZNK9btVector36maxDotEPKS_lRf.exit - -_ZNK9btVector36maxDotEPKS_lRf.exit: ; preds = %arrayctor.loop.preheader, %for.end.loopexit.i - %pos.1.lcssa107 = phi ptr [ %incdec.ptr, %for.end.loopexit.i ], [ %pos.0100, %arrayctor.loop.preheader ] - %rad.1.lcssa106 = phi ptr [ %incdec.ptr39, %for.end.loopexit.i ], [ %rad.099, %arrayctor.loop.preheader ] - %ptIndex.0.lcssa.i = phi i64 [ %21, %for.end.loopexit.i ], [ -1, %arrayctor.loop.preheader ] - %maxDot1.0.lcssa.i = phi float [ %maxDot1.1.i, %for.end.loopexit.i ], [ 0xC7EFFFFFE0000000, %arrayctor.loop.preheader ] - %cmp43 = fcmp ogt float %maxDot1.0.lcssa.i, %maxDot.0101 + %cmp43 = fcmp ogt float %maxDot1.1.i, %maxDot.0101 br i1 %cmp43, label %if.then44, label %for.inc47 -if.then44: ; preds = %_ZNK9btVector36maxDotEPKS_lRf.exit - %arrayidx45 = getelementptr inbounds [128 x %class.btVector3], ptr %temp, i64 0, i64 %ptIndex.0.lcssa.i +if.then44: ; preds = %for.end.loopexit.i + %21 = sext i32 %ptIndex.1.i to i64 + %arrayidx45 = getelementptr inbounds [128 x %class.btVector3], ptr %temp, i64 0, i64 %21 %retval.sroa.0.0.copyload = load <2 x float>, ptr %arrayidx45, align 16 %retval.sroa.4.0.arrayidx45.sroa_idx = getelementptr inbounds i8, ptr %arrayidx45, i64 8 %retval.sroa.4.0.copyload = load <2 x float>, ptr %retval.sroa.4.0.arrayidx45.sroa_idx, align 8 br label %for.inc47 -for.inc47: ; preds = %_ZNK9btVector36maxDotEPKS_lRf.exit, %if.then44 - %retval.sroa.0.1 = phi <2 x float> [ %retval.sroa.0.0.copyload, %if.then44 ], [ %retval.sroa.0.096, %_ZNK9btVector36maxDotEPKS_lRf.exit ] - %retval.sroa.4.1 = phi <2 x float> [ %retval.sroa.4.0.copyload, %if.then44 ], [ %retval.sroa.4.097, %_ZNK9btVector36maxDotEPKS_lRf.exit ] - %maxDot.1 = phi float [ %maxDot1.0.lcssa.i, %if.then44 ], [ %maxDot.0101, %_ZNK9btVector36maxDotEPKS_lRf.exit ] +for.inc47: ; preds = %for.end.loopexit.i, %if.then44 + %retval.sroa.0.1 = phi <2 x float> [ %retval.sroa.0.0.copyload, %if.then44 ], [ %retval.sroa.0.096, %for.end.loopexit.i ] + %retval.sroa.4.1 = phi <2 x float> [ %retval.sroa.4.0.copyload, %if.then44 ], [ %retval.sroa.4.097, %for.end.loopexit.i ] + %maxDot.1 = phi float [ %maxDot1.1.i, %if.then44 ], [ %maxDot.0101, %for.end.loopexit.i ] %add = add nuw nsw i32 %k.098, 128 %cmp13 = icmp slt i32 %add, %2 %indvars.iv.next = add i32 %indvars.iv, -128 @@ -514,8 +512,8 @@ arrayctor.loop.preheader.lr.ph: ; preds = %for.body arrayctor.loop.preheader: ; preds = %arrayctor.loop.preheader.lr.ph, %for.inc41 %indvars.iv = phi i32 [ %2, %arrayctor.loop.preheader.lr.ph ], [ %indvars.iv.next, %for.inc41 ] %maxDot.075 = phi float [ 0xC3ABC16D60000000, %arrayctor.loop.preheader.lr.ph ], [ %maxDot.1, %for.inc41 ] - %pos.074 = phi ptr [ %4, %arrayctor.loop.preheader.lr.ph ], [ %pos.1.lcssa88, %for.inc41 ] - %rad.073 = phi ptr [ %3, %arrayctor.loop.preheader.lr.ph ], [ %rad.1.lcssa87, %for.inc41 ] + %pos.074 = phi ptr [ %4, %arrayctor.loop.preheader.lr.ph ], [ %pos.1.lcssa, %for.inc41 ] + %rad.073 = phi ptr [ %3, %arrayctor.loop.preheader.lr.ph ], [ %rad.1.lcssa, %for.inc41 ] %k.072 = phi i32 [ 0, %arrayctor.loop.preheader.lr.ph ], [ %add, %for.inc41 ] %5 = tail call i32 @llvm.smin.i32(i32 %indvars.iv, i32 128) %6 = tail call i32 @llvm.smax.i32(i32 %5, i32 1) @@ -524,21 +522,18 @@ arrayctor.loop.preheader: ; preds = %arrayctor.loop.preh %cond = tail call i32 @llvm.smin.i32(i32 %sub, i32 128) %conv = sext i32 %cond to i64 %cmp1165 = icmp sgt i32 %sub, 0 - br i1 %cmp1165, label %for.body12.preheader, label %_ZNK9btVector36maxDotEPKS_lRf.exit - -for.body12.preheader: ; preds = %arrayctor.loop.preheader - %.pre = load float, ptr %arrayidx, align 4 - %.pre83 = load float, ptr %arrayidx5.i18, align 4 - %.pre84 = load float, ptr %arrayidx11.i21, align 4 - br label %for.body12 - -for.body12: ; preds = %for.body12.preheader, %for.body12 - %7 = phi float [ %20, %for.body12 ], [ %.pre84, %for.body12.preheader ] - %8 = phi float [ %19, %for.body12 ], [ %.pre83, %for.body12.preheader ] - %9 = phi float [ %18, %for.body12 ], [ %.pre, %for.body12.preheader ] - %pos.168 = phi ptr [ %incdec.ptr, %for.body12 ], [ %pos.074, %for.body12.preheader ] - %i.067 = phi i64 [ %inc, %for.body12 ], [ 0, %for.body12.preheader ] - %rad.166 = phi ptr [ %incdec.ptr33, %for.body12 ], [ %rad.073, %for.body12.preheader ] + %.pre85 = load float, ptr %arrayidx, align 4 + %.pre = load float, ptr %arrayidx5.i18, align 4 + %.pre86 = load float, ptr %arrayidx11.i21, align 4 + br i1 %cmp1165, label %for.body12, label %for.end + +for.body12: ; preds = %arrayctor.loop.preheader, %for.body12 + %7 = phi float [ %20, %for.body12 ], [ %.pre86, %arrayctor.loop.preheader ] + %8 = phi float [ %19, %for.body12 ], [ %.pre, %arrayctor.loop.preheader ] + %9 = phi float [ %18, %for.body12 ], [ %.pre85, %arrayctor.loop.preheader ] + %pos.168 = phi ptr [ %incdec.ptr, %for.body12 ], [ %pos.074, %arrayctor.loop.preheader ] + %i.067 = phi i64 [ %inc, %for.body12 ], [ 0, %arrayctor.loop.preheader ] + %rad.166 = phi ptr [ %incdec.ptr33, %for.body12 ], [ %rad.073, %arrayctor.loop.preheader ] %10 = load float, ptr %pos.168, align 4 %11 = load float, ptr %m_localScaling, align 8 %mul.i = fmul float %10, %11 @@ -584,27 +579,29 @@ for.body12: ; preds = %for.body12.preheade %incdec.ptr33 = getelementptr inbounds i8, ptr %rad.166, i64 4 %inc = add nuw nsw i64 %i.067, 1 %exitcond.not = icmp eq i64 %inc, %smax - br i1 %exitcond.not, label %for.body.lr.ph.i, label %for.body12, !llvm.loop !13 - -for.body.lr.ph.i: ; preds = %for.body12 - %21 = load float, ptr %arrayidx, align 4 - %22 = load float, ptr %arrayidx5.i18, align 4 - %23 = load float, ptr %arrayidx11.i21, align 4 + br i1 %exitcond.not, label %for.end, label %for.body12, !llvm.loop !13 + +for.end: ; preds = %for.body12, %arrayctor.loop.preheader + %21 = phi float [ %.pre86, %arrayctor.loop.preheader ], [ %20, %for.body12 ] + %22 = phi float [ %.pre, %arrayctor.loop.preheader ], [ %19, %for.body12 ] + %23 = phi float [ %.pre85, %arrayctor.loop.preheader ], [ %18, %for.body12 ] + %rad.1.lcssa = phi ptr [ %rad.073, %arrayctor.loop.preheader ], [ %incdec.ptr33, %for.body12 ] + %pos.1.lcssa = phi ptr [ %pos.074, %arrayctor.loop.preheader ], [ %incdec.ptr, %for.body12 ] br label %for.body.i -for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] - %maxDot1.09.i = phi float [ 0xC7EFFFFFE0000000, %for.body.lr.ph.i ], [ %maxDot1.1.i, %for.body.i ] - %ptIndex.08.i = phi i32 [ -1, %for.body.lr.ph.i ], [ %ptIndex.1.i, %for.body.i ] +for.body.i: ; preds = %for.body.i, %for.end + %indvars.iv.i = phi i64 [ 0, %for.end ], [ %indvars.iv.next.i, %for.body.i ] + %maxDot1.09.i = phi float [ 0xC7EFFFFFE0000000, %for.end ], [ %maxDot1.1.i, %for.body.i ] + %ptIndex.08.i = phi i32 [ -1, %for.end ], [ %ptIndex.1.i, %for.body.i ] %arrayidx.i = getelementptr inbounds %class.btVector3, ptr %temp, i64 %indvars.iv.i %24 = load float, ptr %arrayidx.i, align 16 %arrayidx5.i.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 4 %25 = load float, ptr %arrayidx5.i.i, align 4 %mul8.i.i = fmul float %22, %25 - %26 = tail call float @llvm.fmuladd.f32(float %24, float %21, float %mul8.i.i) + %26 = tail call float @llvm.fmuladd.f32(float %24, float %23, float %mul8.i.i) %arrayidx10.i.i = getelementptr inbounds i8, ptr %arrayidx.i, i64 8 %27 = load float, ptr %arrayidx10.i.i, align 8 - %28 = tail call noundef float @llvm.fmuladd.f32(float %27, float %23, float %26) + %28 = tail call noundef float @llvm.fmuladd.f32(float %27, float %21, float %26) %cmp2.i = fcmp ogt float %28, %maxDot1.09.i %29 = trunc nuw nsw i64 %indvars.iv.i to i32 %ptIndex.1.i = select i1 %cmp2.i, i32 %29, i32 %ptIndex.08.i @@ -614,24 +611,17 @@ for.body.i: ; preds = %for.body.i, %for.bo br i1 %exitcond.not.i, label %for.end.loopexit.i, label %for.body.i, !llvm.loop !11 for.end.loopexit.i: ; preds = %for.body.i - %30 = sext i32 %ptIndex.1.i to i64 - br label %_ZNK9btVector36maxDotEPKS_lRf.exit - -_ZNK9btVector36maxDotEPKS_lRf.exit: ; preds = %arrayctor.loop.preheader, %for.end.loopexit.i - %pos.1.lcssa88 = phi ptr [ %incdec.ptr, %for.end.loopexit.i ], [ %pos.074, %arrayctor.loop.preheader ] - %rad.1.lcssa87 = phi ptr [ %incdec.ptr33, %for.end.loopexit.i ], [ %rad.073, %arrayctor.loop.preheader ] - %ptIndex.0.lcssa.i = phi i64 [ %30, %for.end.loopexit.i ], [ -1, %arrayctor.loop.preheader ] - %maxDot1.0.lcssa.i = phi float [ %maxDot1.1.i, %for.end.loopexit.i ], [ 0xC7EFFFFFE0000000, %arrayctor.loop.preheader ] - %cmp37 = fcmp ogt float %maxDot1.0.lcssa.i, %maxDot.075 + %cmp37 = fcmp ogt float %maxDot1.1.i, %maxDot.075 br i1 %cmp37, label %if.then, label %for.inc41 -if.then: ; preds = %_ZNK9btVector36maxDotEPKS_lRf.exit - %arrayidx38 = getelementptr inbounds [128 x %class.btVector3], ptr %temp, i64 0, i64 %ptIndex.0.lcssa.i +if.then: ; preds = %for.end.loopexit.i + %30 = sext i32 %ptIndex.1.i to i64 + %arrayidx38 = getelementptr inbounds [128 x %class.btVector3], ptr %temp, i64 0, i64 %30 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %arrayidx40, ptr noundef nonnull align 16 dereferenceable(16) %arrayidx38, i64 16, i1 false) br label %for.inc41 -for.inc41: ; preds = %_ZNK9btVector36maxDotEPKS_lRf.exit, %if.then - %maxDot.1 = phi float [ %maxDot1.0.lcssa.i, %if.then ], [ %maxDot.075, %_ZNK9btVector36maxDotEPKS_lRf.exit ] +for.inc41: ; preds = %for.end.loopexit.i, %if.then + %maxDot.1 = phi float [ %maxDot1.1.i, %if.then ], [ %maxDot.075, %for.end.loopexit.i ] %add = add nuw nsw i32 %k.072, 128 %cmp6 = icmp slt i32 %add, %2 %indvars.iv.next = add i32 %indvars.iv, -128 diff --git a/bench/ceres/optimized/block_random_access_diagonal_matrix.cc.ll b/bench/ceres/optimized/block_random_access_diagonal_matrix.cc.ll index 4a98e59e988..6b0db9007a6 100644 --- a/bench/ceres/optimized/block_random_access_diagonal_matrix.cc.ll +++ b/bench/ceres/optimized/block_random_access_diagonal_matrix.cc.ll @@ -4925,9 +4925,9 @@ _ZN5Eigen8internal14aligned_mallocEm.exit312: ; preds = %47, %38, %44 br label %59 59: ; preds = %.lr.ph420, %._crit_edge416 - %indvars.iv443 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next444, %._crit_edge416 ] + %indvars.iv440 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next441, %._crit_edge416 ] %.0256419 = phi i64 [ 0, %.lr.ph420 ], [ %255, %._crit_edge416 ] - %smin445 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv443) + %smin442 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv440) %60 = sub nsw i64 %0, %.0256419 %.sroa.speculated351 = call i64 @llvm.smin.i64(i64 %13, i64 %60) %61 = add nsw i64 %.sroa.speculated351, %.0256419 @@ -5143,7 +5143,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 149: ; preds = %.lr.ph415, %252 %indvars.iv = phi i64 [ %1, %.lr.ph415 ], [ %indvars.iv.next, %252 ] %.0259414 = phi i64 [ 0, %.lr.ph415 ], [ %253, %252 ] - %smin441 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) + %smin438 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) %150 = sub nsw i64 %1, %.0259414 %.sroa.speculated334 = call i64 @llvm.smin.i64(i64 %150, i64 %.sroa.speculated366) br i1 %106, label %.lr.ph412, label %._crit_edge413 @@ -5161,11 +5161,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 br label %160 160: ; preds = %.lr.ph412, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit - %indvars.iv446 = phi i64 [ %smin445, %.lr.ph412 ], [ %indvars.iv.next447, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] + %indvars.iv443 = phi i64 [ %smin442, %.lr.ph412 ], [ %indvars.iv.next444, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260.neg410 = phi i64 [ 0, %.lr.ph412 ], [ %.0260.neg, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260409 = phi i64 [ 0, %.lr.ph412 ], [ %249, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] - %smin448 = call i64 @llvm.smin.i64(i64 %indvars.iv446, i64 4) - %smax = call i64 @llvm.smax.i64(i64 %smin448, i64 1) + %smin445 = call i64 @llvm.smin.i64(i64 %indvars.iv443, i64 4) + %smax = call i64 @llvm.smax.i64(i64 %smin445, i64 1) %161 = sub nsw i64 %.sroa.speculated351, %.0260409 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %161, i64 4) %162 = add nsw i64 %.0260409, %.0256419 @@ -5191,8 +5191,8 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %170 = add nsw i64 %.0257404, %162 %171 = mul nsw i64 %170, %6 %172 = getelementptr double, ptr %151, i64 %171 - %.not423 = icmp eq i64 %.0257404, 0 - br i1 %.not423, label %._crit_edge401, label %.lr.ph400 + %.not422 = icmp eq i64 %.0257404, 0 + br i1 %.not422, label %._crit_edge401, label %.lr.ph400 .lr.ph400: ; preds = %.lr.ph407 %173 = getelementptr double, ptr %2, i64 %170 @@ -5218,13 +5218,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %186 = call double @llvm.fmuladd.f64(double %185, double %177, double %184) store double %186, ptr %183, align 8 %187 = add nuw nsw i64 %.0253396.us, 1 - %exitcond.not = icmp eq i64 %187, %smin441 + %exitcond.not = icmp eq i64 %187, %smin438 br i1 %exitcond.not, label %._crit_edge.us, label %180, !llvm.loop !75 ._crit_edge.us: ; preds = %180 %188 = add nuw nsw i64 %.0255398.us, 1 - %exitcond439.not = icmp eq i64 %188, %.0257404 - br i1 %exitcond439.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !76 + %exitcond436.not = icmp eq i64 %188, %.0257404 + br i1 %exitcond436.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !76 ._crit_edge401: ; preds = %._crit_edge.us, %.lr.ph407 %189 = mul i64 %170, %57 @@ -5240,13 +5240,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %195 = fmul double %192, %194 store double %195, ptr %193, align 8 %196 = add nuw nsw i64 %.0402, 1 - %exitcond442.not = icmp eq i64 %196, %smin441 - br i1 %exitcond442.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !77 + %exitcond439.not = icmp eq i64 %196, %smin438 + br i1 %exitcond439.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !77 ._crit_edge: ; preds = %.lr.ph403, %.lr.ph400, %._crit_edge401 %197 = add nuw nsw i64 %.0257404, 1 - %exitcond449.not = icmp eq i64 %197, %smax - br i1 %exitcond449.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !78 + %exitcond446.not = icmp eq i64 %197, %smax + br i1 %exitcond446.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !78 ._crit_edge408: ; preds = %._crit_edge, %168 %198 = mul nsw i64 %162, %6 @@ -5259,7 +5259,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg = add i64 %.0260.neg410, %.sroa.speculated351 %201 = sub i64 %.neg, %.sroa.speculated %202 = shl i64 %201, 2 - br i1 %169, label %.lr.ph.us.i321, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us.i321 .lr.ph.us.i321: ; preds = %.lr.ph116.i, %._crit_edge.us.i323 %.088114.us.i = phi i64 [ %218, %._crit_edge.us.i323 ], [ 0, %.lr.ph116.i ] @@ -5304,7 +5304,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg381 = add i64 %.0260.neg410, %.sroa.speculated351 %222 = sub i64 %.neg381, %.sroa.speculated %223 = shl i64 %222, 1 - br i1 %169, label %.lr.ph.us127.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us127.i .lr.ph.us127.i: ; preds = %.lr.ph124.i, %._crit_edge.us128.i %.1123.us.i = phi i64 [ %234, %._crit_edge.us128.i ], [ %.088.lcssa.i, %.lr.ph124.i ] @@ -5336,17 +5336,16 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.291.lcssa.i = phi i64 [ %.089.lcssa.i, %.preheader110.i ], [ %233, %._crit_edge.us128.i ] %.1.lcssa.i = phi i64 [ %.088.lcssa.i, %.preheader110.i ], [ %234, %._crit_edge.us128.i ] %236 = icmp slt i64 %.1.lcssa.i, %.sroa.speculated334 - %or.cond422 = and i1 %236, %169 - br i1 %or.cond422, label %.lr.ph.us140.i.preheader, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br i1 %236, label %.lr.ph138.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit -.lr.ph.us140.i.preheader: ; preds = %.preheader.i319 +.lr.ph138.i: ; preds = %.preheader.i319 %.neg383 = add i64 %.0260.neg410, %.sroa.speculated351 %237 = sub i64 %.neg383, %.sroa.speculated br label %.lr.ph.us140.i -.lr.ph.us140.i: ; preds = %.lr.ph.us140.i.preheader, %._crit_edge.us141.i - %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph.us140.i.preheader ] - %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph.us140.i.preheader ] +.lr.ph.us140.i: ; preds = %.lr.ph138.i, %._crit_edge.us141.i + %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph138.i ] + %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph138.i ] %238 = add nsw i64 %.4136.us.i, %.0260409 %239 = getelementptr double, ptr %199, i64 %.2137.us.i br label %240 @@ -5370,11 +5369,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %exitcond158.not.i = icmp eq i64 %248, %.sroa.speculated334 br i1 %exitcond158.not.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, label %.lr.ph.us140.i, !llvm.loop !85 -_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.lr.ph116.i, %.lr.ph124.i, %.preheader.i319 +_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.preheader.i319 %249 = add nuw nsw i64 %.0260409, 4 %.0260.neg = sub nuw nsw i64 -4, %.0260409 %250 = icmp slt i64 %249, %.sroa.speculated351 - %indvars.iv.next447 = add i64 %indvars.iv446, -4 + %indvars.iv.next444 = add i64 %indvars.iv443, -4 br i1 %250, label %160, label %._crit_edge413, !llvm.loop !86 ._crit_edge413: ; preds = %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, %149 @@ -5396,7 +5395,7 @@ _ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL ._crit_edge416: ; preds = %252, %.preheader %255 = add nsw i64 %.0256419, %13 %256 = icmp slt i64 %255, %0 - %indvars.iv.next444 = sub i64 %indvars.iv443, %13 + %indvars.iv.next441 = sub i64 %indvars.iv440, %13 br i1 %256, label %59, label %._crit_edge421, !llvm.loop !88 ._crit_edge421: ; preds = %._crit_edge416, %_ZN5Eigen8internal14aligned_mallocEm.exit312 diff --git a/bench/ceres/optimized/dense_cholesky.cc.ll b/bench/ceres/optimized/dense_cholesky.cc.ll index 34bb4df39c2..202cff6af68 100644 --- a/bench/ceres/optimized/dense_cholesky.cc.ll +++ b/bench/ceres/optimized/dense_cholesky.cc.ll @@ -5082,9 +5082,9 @@ _ZN5Eigen8internal14aligned_mallocEm.exit312: ; preds = %47, %38, %44 br label %59 59: ; preds = %.lr.ph420, %._crit_edge416 - %indvars.iv443 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next444, %._crit_edge416 ] + %indvars.iv440 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next441, %._crit_edge416 ] %.0256419 = phi i64 [ 0, %.lr.ph420 ], [ %255, %._crit_edge416 ] - %smin445 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv443) + %smin442 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv440) %60 = sub nsw i64 %0, %.0256419 %.sroa.speculated351 = call i64 @llvm.smin.i64(i64 %13, i64 %60) %61 = add nsw i64 %.sroa.speculated351, %.0256419 @@ -5300,7 +5300,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 149: ; preds = %.lr.ph415, %252 %indvars.iv = phi i64 [ %1, %.lr.ph415 ], [ %indvars.iv.next, %252 ] %.0259414 = phi i64 [ 0, %.lr.ph415 ], [ %253, %252 ] - %smin441 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) + %smin438 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) %150 = sub nsw i64 %1, %.0259414 %.sroa.speculated334 = call i64 @llvm.smin.i64(i64 %150, i64 %.sroa.speculated366) br i1 %106, label %.lr.ph412, label %._crit_edge413 @@ -5318,11 +5318,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 br label %160 160: ; preds = %.lr.ph412, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit - %indvars.iv446 = phi i64 [ %smin445, %.lr.ph412 ], [ %indvars.iv.next447, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] + %indvars.iv443 = phi i64 [ %smin442, %.lr.ph412 ], [ %indvars.iv.next444, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260.neg410 = phi i64 [ 0, %.lr.ph412 ], [ %.0260.neg, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260409 = phi i64 [ 0, %.lr.ph412 ], [ %249, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] - %smin448 = call i64 @llvm.smin.i64(i64 %indvars.iv446, i64 4) - %smax = call i64 @llvm.smax.i64(i64 %smin448, i64 1) + %smin445 = call i64 @llvm.smin.i64(i64 %indvars.iv443, i64 4) + %smax = call i64 @llvm.smax.i64(i64 %smin445, i64 1) %161 = sub nsw i64 %.sroa.speculated351, %.0260409 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %161, i64 4) %162 = add nsw i64 %.0260409, %.0256419 @@ -5348,8 +5348,8 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %170 = add nsw i64 %.0257404, %162 %171 = mul nsw i64 %170, %6 %172 = getelementptr double, ptr %151, i64 %171 - %.not423 = icmp eq i64 %.0257404, 0 - br i1 %.not423, label %._crit_edge401, label %.lr.ph400 + %.not422 = icmp eq i64 %.0257404, 0 + br i1 %.not422, label %._crit_edge401, label %.lr.ph400 .lr.ph400: ; preds = %.lr.ph407 %173 = getelementptr double, ptr %2, i64 %170 @@ -5375,13 +5375,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %186 = call double @llvm.fmuladd.f64(double %185, double %177, double %184) store double %186, ptr %183, align 8 %187 = add nuw nsw i64 %.0253396.us, 1 - %exitcond.not = icmp eq i64 %187, %smin441 + %exitcond.not = icmp eq i64 %187, %smin438 br i1 %exitcond.not, label %._crit_edge.us, label %180, !llvm.loop !84 ._crit_edge.us: ; preds = %180 %188 = add nuw nsw i64 %.0255398.us, 1 - %exitcond439.not = icmp eq i64 %188, %.0257404 - br i1 %exitcond439.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !85 + %exitcond436.not = icmp eq i64 %188, %.0257404 + br i1 %exitcond436.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !85 ._crit_edge401: ; preds = %._crit_edge.us, %.lr.ph407 %189 = mul i64 %170, %57 @@ -5397,13 +5397,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %195 = fmul double %192, %194 store double %195, ptr %193, align 8 %196 = add nuw nsw i64 %.0402, 1 - %exitcond442.not = icmp eq i64 %196, %smin441 - br i1 %exitcond442.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !86 + %exitcond439.not = icmp eq i64 %196, %smin438 + br i1 %exitcond439.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !86 ._crit_edge: ; preds = %.lr.ph403, %.lr.ph400, %._crit_edge401 %197 = add nuw nsw i64 %.0257404, 1 - %exitcond449.not = icmp eq i64 %197, %smax - br i1 %exitcond449.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !87 + %exitcond446.not = icmp eq i64 %197, %smax + br i1 %exitcond446.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !87 ._crit_edge408: ; preds = %._crit_edge, %168 %198 = mul nsw i64 %162, %6 @@ -5416,7 +5416,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg = add i64 %.0260.neg410, %.sroa.speculated351 %201 = sub i64 %.neg, %.sroa.speculated %202 = shl i64 %201, 2 - br i1 %169, label %.lr.ph.us.i321, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us.i321 .lr.ph.us.i321: ; preds = %.lr.ph116.i, %._crit_edge.us.i323 %.088114.us.i = phi i64 [ %218, %._crit_edge.us.i323 ], [ 0, %.lr.ph116.i ] @@ -5461,7 +5461,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg381 = add i64 %.0260.neg410, %.sroa.speculated351 %222 = sub i64 %.neg381, %.sroa.speculated %223 = shl i64 %222, 1 - br i1 %169, label %.lr.ph.us127.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us127.i .lr.ph.us127.i: ; preds = %.lr.ph124.i, %._crit_edge.us128.i %.1123.us.i = phi i64 [ %234, %._crit_edge.us128.i ], [ %.088.lcssa.i, %.lr.ph124.i ] @@ -5493,17 +5493,16 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.291.lcssa.i = phi i64 [ %.089.lcssa.i, %.preheader110.i ], [ %233, %._crit_edge.us128.i ] %.1.lcssa.i = phi i64 [ %.088.lcssa.i, %.preheader110.i ], [ %234, %._crit_edge.us128.i ] %236 = icmp slt i64 %.1.lcssa.i, %.sroa.speculated334 - %or.cond422 = and i1 %236, %169 - br i1 %or.cond422, label %.lr.ph.us140.i.preheader, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br i1 %236, label %.lr.ph138.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit -.lr.ph.us140.i.preheader: ; preds = %.preheader.i319 +.lr.ph138.i: ; preds = %.preheader.i319 %.neg383 = add i64 %.0260.neg410, %.sroa.speculated351 %237 = sub i64 %.neg383, %.sroa.speculated br label %.lr.ph.us140.i -.lr.ph.us140.i: ; preds = %.lr.ph.us140.i.preheader, %._crit_edge.us141.i - %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph.us140.i.preheader ] - %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph.us140.i.preheader ] +.lr.ph.us140.i: ; preds = %.lr.ph138.i, %._crit_edge.us141.i + %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph138.i ] + %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph138.i ] %238 = add nsw i64 %.4136.us.i, %.0260409 %239 = getelementptr double, ptr %199, i64 %.2137.us.i br label %240 @@ -5527,11 +5526,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %exitcond158.not.i = icmp eq i64 %248, %.sroa.speculated334 br i1 %exitcond158.not.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, label %.lr.ph.us140.i, !llvm.loop !94 -_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.lr.ph116.i, %.lr.ph124.i, %.preheader.i319 +_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.preheader.i319 %249 = add nuw nsw i64 %.0260409, 4 %.0260.neg = sub nuw nsw i64 -4, %.0260409 %250 = icmp slt i64 %249, %.sroa.speculated351 - %indvars.iv.next447 = add i64 %indvars.iv446, -4 + %indvars.iv.next444 = add i64 %indvars.iv443, -4 br i1 %250, label %160, label %._crit_edge413, !llvm.loop !95 ._crit_edge413: ; preds = %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, %149 @@ -5553,7 +5552,7 @@ _ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL ._crit_edge416: ; preds = %252, %.preheader %255 = add nsw i64 %.0256419, %13 %256 = icmp slt i64 %255, %0 - %indvars.iv.next444 = sub i64 %indvars.iv443, %13 + %indvars.iv.next441 = sub i64 %indvars.iv440, %13 br i1 %256, label %59, label %._crit_edge421, !llvm.loop !97 ._crit_edge421: ; preds = %._crit_edge416, %_ZN5Eigen8internal14aligned_mallocEm.exit312 @@ -11744,9 +11743,9 @@ _ZN5Eigen8internal14aligned_mallocEm.exit312: ; preds = %47, %38, %44 br label %59 59: ; preds = %.lr.ph420, %._crit_edge416 - %indvars.iv443 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next444, %._crit_edge416 ] + %indvars.iv440 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next441, %._crit_edge416 ] %.0256419 = phi i64 [ 0, %.lr.ph420 ], [ %240, %._crit_edge416 ] - %smin445 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv443) + %smin442 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv440) %60 = sub nsw i64 %0, %.0256419 %.sroa.speculated351 = call i64 @llvm.smin.i64(i64 %13, i64 %60) %61 = add nsw i64 %.sroa.speculated351, %.0256419 @@ -11946,7 +11945,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 134: ; preds = %.lr.ph415, %237 %indvars.iv = phi i64 [ %1, %.lr.ph415 ], [ %indvars.iv.next, %237 ] %.0259414 = phi i64 [ 0, %.lr.ph415 ], [ %238, %237 ] - %smin441 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) + %smin438 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) %135 = sub nsw i64 %1, %.0259414 %.sroa.speculated334 = call i64 @llvm.smin.i64(i64 %135, i64 %.sroa.speculated366) br i1 %97, label %.lr.ph412, label %._crit_edge413 @@ -11964,11 +11963,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 br label %145 145: ; preds = %.lr.ph412, %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit - %indvars.iv446 = phi i64 [ %smin445, %.lr.ph412 ], [ %indvars.iv.next447, %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit ] + %indvars.iv443 = phi i64 [ %smin442, %.lr.ph412 ], [ %indvars.iv.next444, %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit ] %.0260.neg410 = phi i64 [ 0, %.lr.ph412 ], [ %.0260.neg, %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit ] %.0260409 = phi i64 [ 0, %.lr.ph412 ], [ %234, %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit ] - %smin448 = call i64 @llvm.smin.i64(i64 %indvars.iv446, i64 8) - %smax = call i64 @llvm.smax.i64(i64 %smin448, i64 1) + %smin445 = call i64 @llvm.smin.i64(i64 %indvars.iv443, i64 8) + %smax = call i64 @llvm.smax.i64(i64 %smin445, i64 1) %146 = sub nsw i64 %.sroa.speculated351, %.0260409 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %146, i64 8) %147 = add nsw i64 %.0260409, %.0256419 @@ -11994,8 +11993,8 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %155 = add nsw i64 %.0257404, %147 %156 = mul nsw i64 %155, %6 %157 = getelementptr float, ptr %136, i64 %156 - %.not423 = icmp eq i64 %.0257404, 0 - br i1 %.not423, label %._crit_edge401, label %.lr.ph400 + %.not422 = icmp eq i64 %.0257404, 0 + br i1 %.not422, label %._crit_edge401, label %.lr.ph400 .lr.ph400: ; preds = %.lr.ph407 %158 = getelementptr float, ptr %2, i64 %155 @@ -12021,13 +12020,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %171 = call float @llvm.fmuladd.f32(float %170, float %162, float %169) store float %171, ptr %168, align 4 %172 = add nuw nsw i64 %.0253396.us, 1 - %exitcond.not = icmp eq i64 %172, %smin441 + %exitcond.not = icmp eq i64 %172, %smin438 br i1 %exitcond.not, label %._crit_edge.us, label %165, !llvm.loop !290 ._crit_edge.us: ; preds = %165 %173 = add nuw nsw i64 %.0255398.us, 1 - %exitcond439.not = icmp eq i64 %173, %.0257404 - br i1 %exitcond439.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !291 + %exitcond436.not = icmp eq i64 %173, %.0257404 + br i1 %exitcond436.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !291 ._crit_edge401: ; preds = %._crit_edge.us, %.lr.ph407 %174 = mul i64 %155, %57 @@ -12043,13 +12042,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %180 = fmul float %177, %179 store float %180, ptr %178, align 4 %181 = add nuw nsw i64 %.0402, 1 - %exitcond442.not = icmp eq i64 %181, %smin441 - br i1 %exitcond442.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !292 + %exitcond439.not = icmp eq i64 %181, %smin438 + br i1 %exitcond439.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !292 ._crit_edge: ; preds = %.lr.ph403, %.lr.ph400, %._crit_edge401 %182 = add nuw nsw i64 %.0257404, 1 - %exitcond449.not = icmp eq i64 %182, %smax - br i1 %exitcond449.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !293 + %exitcond446.not = icmp eq i64 %182, %smax + br i1 %exitcond446.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !293 ._crit_edge408: ; preds = %._crit_edge, %153 %183 = mul nsw i64 %147, %6 @@ -12062,7 +12061,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %.neg = add i64 %.0260.neg410, %.sroa.speculated351 %186 = sub i64 %.neg, %.sroa.speculated %187 = shl i64 %186, 3 - br i1 %154, label %.lr.ph.us.i321, label %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit + br label %.lr.ph.us.i321 .lr.ph.us.i321: ; preds = %.lr.ph116.i, %._crit_edge.us.i323 %.088114.us.i = phi i64 [ %203, %._crit_edge.us.i323 ], [ 0, %.lr.ph116.i ] @@ -12107,7 +12106,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %.neg381 = add i64 %.0260.neg410, %.sroa.speculated351 %207 = sub i64 %.neg381, %.sroa.speculated %208 = shl i64 %207, 2 - br i1 %154, label %.lr.ph.us127.i, label %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit + br label %.lr.ph.us127.i .lr.ph.us127.i: ; preds = %.lr.ph124.i, %._crit_edge.us128.i %.1123.us.i = phi i64 [ %219, %._crit_edge.us128.i ], [ %.088.lcssa.i, %.lr.ph124.i ] @@ -12139,17 +12138,16 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %.291.lcssa.i = phi i64 [ %.089.lcssa.i, %.preheader110.i ], [ %218, %._crit_edge.us128.i ] %.1.lcssa.i = phi i64 [ %.088.lcssa.i, %.preheader110.i ], [ %219, %._crit_edge.us128.i ] %221 = icmp slt i64 %.1.lcssa.i, %.sroa.speculated334 - %or.cond422 = and i1 %221, %154 - br i1 %or.cond422, label %.lr.ph.us140.i.preheader, label %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit + br i1 %221, label %.lr.ph138.i, label %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit -.lr.ph.us140.i.preheader: ; preds = %.preheader.i319 +.lr.ph138.i: ; preds = %.preheader.i319 %.neg383 = add i64 %.0260.neg410, %.sroa.speculated351 %222 = sub i64 %.neg383, %.sroa.speculated br label %.lr.ph.us140.i -.lr.ph.us140.i: ; preds = %.lr.ph.us140.i.preheader, %._crit_edge.us141.i - %.2137.us.i = phi i64 [ %233, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph.us140.i.preheader ] - %.4136.us.i = phi i64 [ %232, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph.us140.i.preheader ] +.lr.ph.us140.i: ; preds = %.lr.ph138.i, %._crit_edge.us141.i + %.2137.us.i = phi i64 [ %233, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph138.i ] + %.4136.us.i = phi i64 [ %232, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph138.i ] %223 = add nsw i64 %.4136.us.i, %.0260409 %224 = getelementptr float, ptr %184, i64 %.2137.us.i br label %225 @@ -12173,11 +12171,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIflNS0_22const_blas_data_mapperIflLi1EEELi4ELi1 %exitcond158.not.i = icmp eq i64 %233, %.sroa.speculated334 br i1 %exitcond158.not.i, label %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit, label %.lr.ph.us140.i, !llvm.loop !299 -_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.lr.ph116.i, %.lr.ph124.i, %.preheader.i319 +_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.preheader.i319 %234 = add nuw nsw i64 %.0260409, 8 %.0260.neg = sub nuw nsw i64 -8, %.0260409 %235 = icmp slt i64 %234, %.sroa.speculated351 - %indvars.iv.next447 = add i64 %indvars.iv446, -8 + %indvars.iv.next444 = add i64 %indvars.iv443, -8 br i1 %235, label %145, label %._crit_edge413, !llvm.loop !300 ._crit_edge413: ; preds = %_ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8ELi4EDv4_fLi0ELb0ELb1EEclEPfRKS3_llll.exit, %134 @@ -12199,7 +12197,7 @@ _ZN5Eigen8internal13gemm_pack_lhsIflNS0_16blas_data_mapperIflLi0ELi0ELi1EEELi8EL ._crit_edge416: ; preds = %237, %.preheader %240 = add nsw i64 %.0256419, %13 %241 = icmp slt i64 %240, %0 - %indvars.iv.next444 = sub i64 %indvars.iv443, %13 + %indvars.iv.next441 = sub i64 %indvars.iv440, %13 br i1 %241, label %59, label %._crit_edge421, !llvm.loop !302 ._crit_edge421: ; preds = %._crit_edge416, %_ZN5Eigen8internal14aligned_mallocEm.exit312 diff --git a/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll b/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll index 919b7ef2c3e..a06651ad75b 100644 --- a/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll +++ b/bench/ceres/optimized/schur_eliminator_2_d_d.cc.ll @@ -9112,9 +9112,9 @@ _ZN5Eigen8internal14aligned_mallocEm.exit312: ; preds = %47, %38, %44 br label %59 59: ; preds = %.lr.ph420, %._crit_edge416 - %indvars.iv443 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next444, %._crit_edge416 ] + %indvars.iv440 = phi i64 [ %0, %.lr.ph420 ], [ %indvars.iv.next441, %._crit_edge416 ] %.0256419 = phi i64 [ 0, %.lr.ph420 ], [ %255, %._crit_edge416 ] - %smin445 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv443) + %smin442 = call i64 @llvm.smin.i64(i64 %13, i64 %indvars.iv440) %60 = sub nsw i64 %0, %.0256419 %.sroa.speculated351 = call i64 @llvm.smin.i64(i64 %13, i64 %60) %61 = add nsw i64 %.sroa.speculated351, %.0256419 @@ -9330,7 +9330,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 149: ; preds = %.lr.ph415, %252 %indvars.iv = phi i64 [ %1, %.lr.ph415 ], [ %indvars.iv.next, %252 ] %.0259414 = phi i64 [ 0, %.lr.ph415 ], [ %253, %252 ] - %smin441 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) + %smin438 = call i64 @llvm.smin.i64(i64 %.sroa.speculated366, i64 %indvars.iv) %150 = sub nsw i64 %1, %.0259414 %.sroa.speculated334 = call i64 @llvm.smin.i64(i64 %150, i64 %.sroa.speculated366) br i1 %106, label %.lr.ph412, label %._crit_edge413 @@ -9348,11 +9348,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 br label %160 160: ; preds = %.lr.ph412, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit - %indvars.iv446 = phi i64 [ %smin445, %.lr.ph412 ], [ %indvars.iv.next447, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] + %indvars.iv443 = phi i64 [ %smin442, %.lr.ph412 ], [ %indvars.iv.next444, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260.neg410 = phi i64 [ 0, %.lr.ph412 ], [ %.0260.neg, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] %.0260409 = phi i64 [ 0, %.lr.ph412 ], [ %249, %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit ] - %smin448 = call i64 @llvm.smin.i64(i64 %indvars.iv446, i64 4) - %smax = call i64 @llvm.smax.i64(i64 %smin448, i64 1) + %smin445 = call i64 @llvm.smin.i64(i64 %indvars.iv443, i64 4) + %smax = call i64 @llvm.smax.i64(i64 %smin445, i64 1) %161 = sub nsw i64 %.sroa.speculated351, %.0260409 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %161, i64 4) %162 = add nsw i64 %.0260409, %.0256419 @@ -9378,8 +9378,8 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %170 = add nsw i64 %.0257404, %162 %171 = mul nsw i64 %170, %6 %172 = getelementptr double, ptr %151, i64 %171 - %.not423 = icmp eq i64 %.0257404, 0 - br i1 %.not423, label %._crit_edge401, label %.lr.ph400 + %.not422 = icmp eq i64 %.0257404, 0 + br i1 %.not422, label %._crit_edge401, label %.lr.ph400 .lr.ph400: ; preds = %.lr.ph407 %173 = getelementptr double, ptr %2, i64 %170 @@ -9405,13 +9405,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %186 = call double @llvm.fmuladd.f64(double %185, double %177, double %184) store double %186, ptr %183, align 8 %187 = add nuw nsw i64 %.0253396.us, 1 - %exitcond.not = icmp eq i64 %187, %smin441 + %exitcond.not = icmp eq i64 %187, %smin438 br i1 %exitcond.not, label %._crit_edge.us, label %180, !llvm.loop !147 ._crit_edge.us: ; preds = %180 %188 = add nuw nsw i64 %.0255398.us, 1 - %exitcond439.not = icmp eq i64 %188, %.0257404 - br i1 %exitcond439.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !148 + %exitcond436.not = icmp eq i64 %188, %.0257404 + br i1 %exitcond436.not, label %._crit_edge401, label %.lr.ph397.us, !llvm.loop !148 ._crit_edge401: ; preds = %._crit_edge.us, %.lr.ph407 %189 = mul i64 %170, %57 @@ -9427,13 +9427,13 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %195 = fmul double %192, %194 store double %195, ptr %193, align 8 %196 = add nuw nsw i64 %.0402, 1 - %exitcond442.not = icmp eq i64 %196, %smin441 - br i1 %exitcond442.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !149 + %exitcond439.not = icmp eq i64 %196, %smin438 + br i1 %exitcond439.not, label %._crit_edge, label %.lr.ph403, !llvm.loop !149 ._crit_edge: ; preds = %.lr.ph403, %.lr.ph400, %._crit_edge401 %197 = add nuw nsw i64 %.0257404, 1 - %exitcond449.not = icmp eq i64 %197, %smax - br i1 %exitcond449.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !150 + %exitcond446.not = icmp eq i64 %197, %smax + br i1 %exitcond446.not, label %._crit_edge408, label %.lr.ph407, !llvm.loop !150 ._crit_edge408: ; preds = %._crit_edge, %168 %198 = mul nsw i64 %162, %6 @@ -9446,7 +9446,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg = add i64 %.0260.neg410, %.sroa.speculated351 %201 = sub i64 %.neg, %.sroa.speculated %202 = shl i64 %201, 2 - br i1 %169, label %.lr.ph.us.i321, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us.i321 .lr.ph.us.i321: ; preds = %.lr.ph116.i, %._crit_edge.us.i323 %.088114.us.i = phi i64 [ %218, %._crit_edge.us.i323 ], [ 0, %.lr.ph116.i ] @@ -9491,7 +9491,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.neg381 = add i64 %.0260.neg410, %.sroa.speculated351 %222 = sub i64 %.neg381, %.sroa.speculated %223 = shl i64 %222, 1 - br i1 %169, label %.lr.ph.us127.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br label %.lr.ph.us127.i .lr.ph.us127.i: ; preds = %.lr.ph124.i, %._crit_edge.us128.i %.1123.us.i = phi i64 [ %234, %._crit_edge.us128.i ], [ %.088.lcssa.i, %.lr.ph124.i ] @@ -9523,17 +9523,16 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %.291.lcssa.i = phi i64 [ %.089.lcssa.i, %.preheader110.i ], [ %233, %._crit_edge.us128.i ] %.1.lcssa.i = phi i64 [ %.088.lcssa.i, %.preheader110.i ], [ %234, %._crit_edge.us128.i ] %236 = icmp slt i64 %.1.lcssa.i, %.sroa.speculated334 - %or.cond422 = and i1 %236, %169 - br i1 %or.cond422, label %.lr.ph.us140.i.preheader, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit + br i1 %236, label %.lr.ph138.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit -.lr.ph.us140.i.preheader: ; preds = %.preheader.i319 +.lr.ph138.i: ; preds = %.preheader.i319 %.neg383 = add i64 %.0260.neg410, %.sroa.speculated351 %237 = sub i64 %.neg383, %.sroa.speculated br label %.lr.ph.us140.i -.lr.ph.us140.i: ; preds = %.lr.ph.us140.i.preheader, %._crit_edge.us141.i - %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph.us140.i.preheader ] - %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph.us140.i.preheader ] +.lr.ph.us140.i: ; preds = %.lr.ph138.i, %._crit_edge.us141.i + %.2137.us.i = phi i64 [ %248, %._crit_edge.us141.i ], [ %.1.lcssa.i, %.lr.ph138.i ] + %.4136.us.i = phi i64 [ %247, %._crit_edge.us141.i ], [ %.291.lcssa.i, %.lr.ph138.i ] %238 = add nsw i64 %.4136.us.i, %.0260409 %239 = getelementptr double, ptr %199, i64 %.2137.us.i br label %240 @@ -9557,11 +9556,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi1 %exitcond158.not.i = icmp eq i64 %248, %.sroa.speculated334 br i1 %exitcond158.not.i, label %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, label %.lr.ph.us140.i, !llvm.loop !157 -_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.lr.ph116.i, %.lr.ph124.i, %.preheader.i319 +_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us141.i, %.preheader.i319 %249 = add nuw nsw i64 %.0260409, 4 %.0260.neg = sub nuw nsw i64 -4, %.0260409 %250 = icmp slt i64 %249, %.sroa.speculated351 - %indvars.iv.next447 = add i64 %indvars.iv446, -4 + %indvars.iv.next444 = add i64 %indvars.iv443, -4 br i1 %250, label %160, label %._crit_edge413, !llvm.loop !158 ._crit_edge413: ; preds = %_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi2EDv2_dLi0ELb0ELb1EEclEPdRKS3_llll.exit, %149 @@ -9583,7 +9582,7 @@ _ZN5Eigen8internal13gemm_pack_lhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL ._crit_edge416: ; preds = %252, %.preheader %255 = add nsw i64 %.0256419, %13 %256 = icmp slt i64 %255, %0 - %indvars.iv.next444 = sub i64 %indvars.iv443, %13 + %indvars.iv.next441 = sub i64 %indvars.iv440, %13 br i1 %256, label %59, label %._crit_edge421, !llvm.loop !160 ._crit_edge421: ; preds = %._crit_edge416, %_ZN5Eigen8internal14aligned_mallocEm.exit312 @@ -23890,7 +23889,7 @@ _ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit.lr.ph: ; preds = %59 %75 = shl i64 %6, 5 %76 = add i64 %75, 32 %.idx = shl nsw i64 %6, 4 - %.idx432 = mul i64 %6, 24 + %.idx431 = mul i64 %6, 24 %77 = getelementptr inbounds i8, ptr %13, i64 32 %78 = getelementptr inbounds i8, ptr %13, i64 64 %79 = getelementptr inbounds i8, ptr %13, i64 96 @@ -23900,16 +23899,16 @@ _ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit.lr.ph: ; preds = %59 _ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit: ; preds = %_ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit.lr.ph, %._crit_edge393 %indvar = phi i64 [ 0, %_ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit.lr.ph ], [ %indvar.next, %._crit_edge393 ] %.0234396 = phi i64 [ %.sroa.speculated360, %_ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit.lr.ph ], [ %253, %._crit_edge393 ] - %smin424 = call i64 @llvm.smin.i64(i64 %20, i64 %.0234396) + %smin423 = call i64 @llvm.smin.i64(i64 %20, i64 %.0234396) %81 = mul i64 %73, %indvar %82 = add i64 %72, %81 - %83 = sub i64 %.0234396, %smin424 + %83 = sub i64 %.0234396, %smin423 %84 = mul i64 %74, %83 %85 = add i64 %82, %84 - %86 = shl i64 %smin424, 3 + %86 = shl i64 %smin423, 3 %87 = sub i64 %85, %86 %88 = sub nsw i64 %1, %.0234396 - %89 = mul nsw i64 %smin424, %smin424 + %89 = mul nsw i64 %smin423, %smin423 %90 = getelementptr inbounds double, ptr %61, i64 %89 %91 = ptrtoint ptr %90 to i64 %92 = and i64 %91, 7 @@ -23965,7 +23964,7 @@ _ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit: ; preds = %_ZN5Eige store double %124, ptr %125, align 8 %126 = add nsw i64 %.1106.us.i, 4 %127 = add nuw nsw i64 %.093107.us.i, 1 - %exitcond.not.i = icmp eq i64 %127, %smin424 + %exitcond.not.i = icmp eq i64 %127, %smin423 br i1 %exitcond.not.i, label %._crit_edge.us.i, label %113, !llvm.loop !290 ._crit_edge.us.i: ; preds = %113 @@ -23997,7 +23996,7 @@ _ZN5Eigen8internal13first_alignedILi16EdmEET1_PKT0_S2_.exit: ; preds = %_ZN5Eige store double %135, ptr %136, align 8 %137 = add nsw i64 %.3113.us.i, 1 %138 = add nuw nsw i64 %.0114.us.i, 1 - %exitcond125.not.i = icmp eq i64 %138, %smin424 + %exitcond125.not.i = icmp eq i64 %138, %smin423 br i1 %exitcond125.not.i, label %._crit_edge.us120.i, label %133, !llvm.loop !292 ._crit_edge.us120.i: ; preds = %133 @@ -24009,27 +24008,27 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 br i1 %67, label %.lr.ph387, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.thread .lr.ph387: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit - %140 = shl i64 %smin424, 5 + %140 = shl i64 %smin423, 5 %141 = getelementptr i8, ptr %5, i64 %87 br label %142 142: ; preds = %.lr.ph387, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 - %indvars.iv = phi i64 [ %smin424, %.lr.ph387 ], [ %indvars.iv.next, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] - %indvar419 = phi i64 [ 0, %.lr.ph387 ], [ %indvar.next420, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] + %indvars.iv = phi i64 [ %smin423, %.lr.ph387 ], [ %indvars.iv.next, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] + %indvar418 = phi i64 [ 0, %.lr.ph387 ], [ %indvar.next419, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] %.0239.neg386 = phi i64 [ 0, %.lr.ph387 ], [ %.0239.neg, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] %.0239385 = phi i64 [ 0, %.lr.ph387 ], [ %227, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] - %smin431 = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 4) - %143 = mul i64 %140, %indvar419 - %scevgep425 = getelementptr i8, ptr %61, i64 %143 - %144 = add i64 %smin424, %.0239.neg386 - %smin430 = call i64 @llvm.smin.i64(i64 %144, i64 4) - %145 = shl nuw i64 %smin430, 3 - %smax = call i64 @llvm.smax.i64(i64 %smin431, i64 1) - %146 = mul i64 %76, %indvar419 - %147 = sub nsw i64 %smin424, %.0239385 + %smin430 = call i64 @llvm.smin.i64(i64 %indvars.iv, i64 4) + %143 = mul i64 %140, %indvar418 + %scevgep424 = getelementptr i8, ptr %61, i64 %143 + %144 = add i64 %smin423, %.0239.neg386 + %smin429 = call i64 @llvm.smin.i64(i64 %144, i64 4) + %145 = shl nuw i64 %smin429, 3 + %smax = call i64 @llvm.smax.i64(i64 %smin430, i64 1) + %146 = mul i64 %76, %indvar418 + %147 = sub nsw i64 %smin423, %.0239385 %.sroa.speculated322 = call i64 @llvm.smin.i64(i64 %147, i64 4) %148 = add nsw i64 %.0239385, %83 - %149 = mul nuw nsw i64 %.0239385, %smin424 + %149 = mul nuw nsw i64 %.0239385, %smin423 %150 = getelementptr inbounds double, ptr %61, i64 %149 %151 = mul nsw i64 %148, %6 %152 = getelementptr double, ptr %97, i64 %151 @@ -24051,7 +24050,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 .lr.ph.us.i279: ; preds = %.lr.ph127.i %158 = getelementptr inbounds double, ptr %152, i64 %6 %159 = getelementptr inbounds i8, ptr %152, i64 %.idx - %160 = getelementptr inbounds i8, ptr %152, i64 %.idx432 + %160 = getelementptr inbounds i8, ptr %152, i64 %.idx431 br label %161 161: ; preds = %161, %.lr.ph.us.i279 @@ -24116,11 +24115,11 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit: ; preds = %._crit_edge.us136.i, %.preheader.i278 %189 = icmp sgt i64 %147, 0 - br i1 %189, label %.preheader.lr.ph, label %.preheader.i282.thread + br i1 %189, label %.preheader.lr.ph, label %._crit_edge384.thread -.preheader.i282.thread: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit +._crit_edge384.thread: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit call void asm sideeffect "#EIGEN PRODUCT PACK RHS COLMAJOR", "~{dirflag},~{fpsr},~{flags}"() #28, !srcloc !289 - br label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 + br i1 %177, label %.lr.ph133.i284, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 .preheader.lr.ph: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.thread, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit %190 = phi i1 [ %157, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.thread ], [ %177, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit ] @@ -24129,16 +24128,16 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 .preheader: ; preds = %.preheader.lr.ph, %._crit_edge %.0238383 = phi i64 [ 0, %.preheader.lr.ph ], [ %199, %._crit_edge ] - %.not401 = icmp eq i64 %.0238383, 0 - br i1 %.not401, label %._crit_edge, label %.lr.ph + %.not400 = icmp eq i64 %.0238383, 0 + br i1 %.not400, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %.preheader %192 = shl nuw nsw i64 %.0238383, 3 %193 = mul i64 %74, %.0238383 - %scevgep421 = getelementptr i8, ptr %191, i64 %193 + %scevgep420 = getelementptr i8, ptr %191, i64 %193 %194 = shl nuw nsw i64 %.0238383, 5 %scevgep = getelementptr i8, ptr %13, i64 %194 - call void @llvm.memcpy.p0.p0.i64(ptr align 16 %scevgep, ptr align 8 %scevgep421, i64 %192, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 16 %scevgep, ptr align 8 %scevgep420, i64 %192, i1 false) br label %._crit_edge 195: ; preds = %.invoke @@ -24205,53 +24204,53 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 .preheader.i282.loopexit: ; preds = %203 %218 = add nsw i64 %216, %201 - br label %.preheader.i282 + br i1 %190, label %.lr.ph133.i284, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 -.preheader.i282: ; preds = %.preheader.i282.loopexit, %._crit_edge384 - %.0101.lcssa.i283 = phi i64 [ 0, %._crit_edge384 ], [ %218, %.preheader.i282.loopexit ] - br i1 %190, label %.lr.ph.us135.i285.preheader, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 +.preheader.i282: ; preds = %._crit_edge384 + br i1 %190, label %.lr.ph133.i284, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 -.lr.ph.us135.i285.preheader: ; preds = %.preheader.i282 +.lr.ph133.i284: ; preds = %._crit_edge384.thread, %.preheader.i282.loopexit, %.preheader.i282 + %.0101.lcssa.i283434 = phi i64 [ %218, %.preheader.i282.loopexit ], [ 0, %.preheader.i282 ], [ 0, %._crit_edge384.thread ] %219 = sub i64 %144, %.sroa.speculated322 - %220 = shl nuw nsw i64 %153, 7 - %221 = add i64 %smin431, %.0239385 + %220 = shl i64 %153, 7 + %221 = add i64 %smin430, %.0239385 %222 = getelementptr i8, ptr %13, i64 %220 %invariant.op = add i64 %221, %219 br label %.lr.ph.us135.i285 -.lr.ph.us135.i285: ; preds = %.lr.ph.us135.i285.preheader, %.lr.ph.us135.i285 - %indvar427 = phi i64 [ 0, %.lr.ph.us135.i285.preheader ], [ %indvar.next428, %.lr.ph.us135.i285 ] - %.098132.us.i286 = phi i64 [ %154, %.lr.ph.us135.i285.preheader ], [ %226, %.lr.ph.us135.i285 ] - %.2131.us.i287 = phi i64 [ %.0101.lcssa.i283, %.lr.ph.us135.i285.preheader ], [ %.reass, %.lr.ph.us135.i285 ] - %223 = shl i64 %indvar427, 5 - %scevgep429 = getelementptr i8, ptr %222, i64 %223 +.lr.ph.us135.i285: ; preds = %.lr.ph133.i284, %.lr.ph.us135.i285 + %indvar426 = phi i64 [ 0, %.lr.ph133.i284 ], [ %indvar.next427, %.lr.ph.us135.i285 ] + %.098132.us.i286 = phi i64 [ %154, %.lr.ph133.i284 ], [ %226, %.lr.ph.us135.i285 ] + %.2131.us.i287 = phi i64 [ %.0101.lcssa.i283434, %.lr.ph133.i284 ], [ %.reass, %.lr.ph.us135.i285 ] + %223 = shl i64 %indvar426, 5 + %scevgep428 = getelementptr i8, ptr %222, i64 %223 %224 = add i64 %.2131.us.i287, %.0239385 %225 = shl i64 %224, 3 - %scevgep426 = getelementptr i8, ptr %scevgep425, i64 %225 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep426, ptr align 16 %scevgep429, i64 %145, i1 false) + %scevgep425 = getelementptr i8, ptr %scevgep424, i64 %225 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep425, ptr align 16 %scevgep428, i64 %145, i1 false) %.reass = add i64 %.2131.us.i287, %invariant.op - %226 = add nuw nsw i64 %.098132.us.i286, 1 + %226 = add nsw i64 %.098132.us.i286, 1 %exitcond145.not.i292 = icmp eq i64 %226, %.sroa.speculated322 - %indvar.next428 = add i64 %indvar427, 1 + %indvar.next427 = add i64 %indvar426, 1 br i1 %exitcond145.not.i292, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303, label %.lr.ph.us135.i285, !llvm.loop !296 -_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303: ; preds = %.lr.ph.us135.i285, %.preheader.i282.thread, %.preheader.i282 +_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303: ; preds = %.lr.ph.us135.i285, %._crit_edge384.thread, %.preheader.i282.loopexit, %.preheader.i282 %227 = add nuw nsw i64 %.0239385, 4 %.0239.neg = sub nuw nsw i64 -4, %.0239385 - %228 = icmp slt i64 %227, %smin424 - %indvar.next420 = add i64 %indvar419, 1 + %228 = icmp slt i64 %227, %smin423 + %indvar.next419 = add i64 %indvar418, 1 %indvars.iv.next = add i64 %indvars.iv, -4 br i1 %228, label %142, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.thread, !llvm.loop !703 _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.thread: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303, %.lr.ph117.i, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit - %.not399 = phi i1 [ true, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit ], [ true, %.lr.ph117.i ], [ false, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] + %.not398 = phi i1 [ true, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit ], [ true, %.lr.ph117.i ], [ false, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit303 ] br i1 %68, label %.lr.ph392, label %._crit_edge393 .lr.ph392: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0ELb0ELb0EEclEPdRKS3_llll.exit.thread %229 = getelementptr double, ptr %3, i64 %83 %230 = mul nsw i64 %.0234396, %9 %invariant.gep394 = getelementptr double, ptr %7, i64 %230 - %brmerge = or i1 %.not399, %80 + %brmerge = or i1 %.not398, %80 br label %231 231: ; preds = %.lr.ph392, %250 @@ -24262,7 +24261,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 %234 = getelementptr double, ptr %229, i64 %233 store ptr %234, ptr %16, align 8 store i64 %4, ptr %69, align 8 - invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull %43, ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %smin424, i64 noundef %.sroa.speculated312, i64 noundef 0, i64 noundef 0) + invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull %43, ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %smin423, i64 noundef %.sroa.speculated312, i64 noundef 0, i64 noundef 0) to label %235 unwind label %.loopexit.split-lp 235: ; preds = %231 @@ -24274,7 +24273,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 237: ; preds = %.lr.ph389, %246 %.0235388 = phi i64 [ 0, %.lr.ph389 ], [ %247, %246 ] - %238 = sub nsw i64 %smin424, %.0235388 + %238 = sub nsw i64 %smin423, %.0235388 %.sroa.speculated = call i64 @llvm.smin.i64(i64 %238, i64 4) %239 = add nsw i64 %.sroa.speculated, %.0235388 %240 = add nsw i64 %.0235388, %83 @@ -24282,15 +24281,15 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 %242 = getelementptr double, ptr %236, i64 %241 store ptr %242, ptr %17, align 8 store i64 %9, ptr %70, align 8 - %243 = mul nuw nsw i64 %.0235388, %smin424 + %243 = mul nuw nsw i64 %.0235388, %smin423 %244 = getelementptr inbounds double, ptr %61, i64 %243 %245 = load double, ptr %10, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull %43, ptr noundef nonnull %244, i64 noundef %.sroa.speculated312, i64 noundef %239, i64 noundef %.sroa.speculated, double noundef %245, i64 noundef %smin424, i64 noundef %smin424, i64 noundef 0, i64 noundef 0) + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull %43, ptr noundef nonnull %244, i64 noundef %.sroa.speculated312, i64 noundef %239, i64 noundef %.sroa.speculated, double noundef %245, i64 noundef %smin423, i64 noundef %smin423, i64 noundef 0, i64 noundef 0) to label %246 unwind label %.loopexit371 246: ; preds = %237 %247 = add nuw nsw i64 %.0235388, 4 - %248 = icmp slt i64 %247, %smin424 + %248 = icmp slt i64 %247, %smin423 br i1 %248, label %237, label %.loopexit, !llvm.loop !704 .loopexit: ; preds = %246, %235 @@ -24298,7 +24297,7 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 store ptr %gep395, ptr %18, align 8 store i64 %9, ptr %71, align 8 %249 = load double, ptr %10, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %43, ptr noundef nonnull %95, i64 noundef %.sroa.speculated312, i64 noundef %smin424, i64 noundef %88, double noundef %249, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %43, ptr noundef nonnull %95, i64 noundef %.sroa.speculated312, i64 noundef %smin423, i64 noundef %88, double noundef %249, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) to label %250 unwind label %.loopexit.split-lp 250: ; preds = %.loopexit diff --git a/bench/cmake/optimized/archive_read_support_format_rar.c.ll b/bench/cmake/optimized/archive_read_support_format_rar.c.ll index ee46311100c..1bbb711983b 100644 --- a/bench/cmake/optimized/archive_read_support_format_rar.c.ll +++ b/bench/cmake/optimized/archive_read_support_format_rar.c.ll @@ -3327,7 +3327,7 @@ define internal fastcc range(i32 -30, 1) i32 @copy_from_lzss_window_to_unp(ptr n 16: ; preds = %10 tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 12, ptr noundef nonnull @.str.36) #19 - br label %70 + br label %66 17: ; preds = %10, %4 %18 = phi ptr [ %14, %10 ], [ %9, %4 ] @@ -3351,11 +3351,11 @@ define internal fastcc range(i32 -30, 1) i32 @copy_from_lzss_window_to_unp(ptr n %32 = getelementptr inbounds i8, ptr %30, i64 %31 %33 = sext i32 %3 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %29, ptr align 1 %32, i64 %33, i1 false) - br label %61 + br label %57 34: ; preds = %17 %.not50 = icmp sgt i32 %3, %24 - br i1 %.not50, label %60, label %35 + br i1 %.not50, label %56, label %35 35: ; preds = %34 %36 = sub nsw i32 %24, %22 @@ -3364,63 +3364,54 @@ define internal fastcc range(i32 -30, 1) i32 @copy_from_lzss_window_to_unp(ptr n 38: ; preds = %35 tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 84, ptr noundef nonnull @.str.37) #19 - br label %70 + br label %66 39: ; preds = %35 - %40 = icmp slt i32 %36, %3 - %41 = getelementptr inbounds i8, ptr %7, i64 212 - %42 = load i32, ptr %41, align 4 - %43 = zext i32 %42 to i64 - %44 = getelementptr inbounds i8, ptr %18, i64 %43 - %45 = load ptr, ptr %19, align 8 - %46 = sext i32 %22 to i64 - %47 = getelementptr inbounds i8, ptr %45, i64 %46 - br i1 %40, label %48, label %58 - -48: ; preds = %39 - %49 = zext nneg i32 %36 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %44, ptr align 1 %47, i64 %49, i1 false) - %50 = load ptr, ptr %8, align 8 - %51 = load i32, ptr %41, align 4 - %52 = add i32 %51, %36 - %53 = zext i32 %52 to i64 - %54 = getelementptr inbounds i8, ptr %50, i64 %53 - %55 = load ptr, ptr %19, align 8 - %56 = sub nsw i32 %3, %36 - %57 = sext i32 %56 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %54, ptr align 1 %55, i64 %57, i1 false) - br label %61 - -58: ; preds = %39 - %59 = sext i32 %3 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %44, ptr align 1 %47, i64 %59, i1 false) - br label %61 - -60: ; preds = %34 + %40 = getelementptr inbounds i8, ptr %7, i64 212 + %41 = load i32, ptr %40, align 4 + %42 = zext i32 %41 to i64 + %43 = getelementptr inbounds i8, ptr %18, i64 %42 + %44 = load ptr, ptr %19, align 8 + %45 = sext i32 %22 to i64 + %46 = getelementptr inbounds i8, ptr %44, i64 %45 + %47 = zext nneg i32 %36 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %43, ptr align 1 %46, i64 %47, i1 false) + %48 = load ptr, ptr %8, align 8 + %49 = load i32, ptr %40, align 4 + %50 = add i32 %49, %36 + %51 = zext i32 %50 to i64 + %52 = getelementptr inbounds i8, ptr %48, i64 %51 + %53 = load ptr, ptr %19, align 8 + %54 = sub nsw i32 %3, %36 + %55 = sext i32 %54 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %52, ptr align 1 %53, i64 %55, i1 false) + br label %57 + +56: ; preds = %34 tail call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 84, ptr noundef nonnull @.str.37) #19 - br label %70 - -61: ; preds = %58, %48, %25 - %62 = getelementptr inbounds i8, ptr %7, i64 212 - %63 = load i32, ptr %62, align 4 - %64 = add i32 %63, %3 - store i32 %64, ptr %62, align 4 - %65 = getelementptr inbounds i8, ptr %7, i64 216 - %66 = load i32, ptr %65, align 8 - %.not51 = icmp ult i32 %64, %66 - br i1 %.not51, label %69, label %67 - -67: ; preds = %61 - %68 = load ptr, ptr %8, align 8 - br label %69 + br label %66 -69: ; preds = %61, %67 - %storemerge = phi ptr [ %68, %67 ], [ null, %61 ] +57: ; preds = %39, %25 + %58 = getelementptr inbounds i8, ptr %7, i64 212 + %59 = load i32, ptr %58, align 4 + %60 = add i32 %59, %3 + store i32 %60, ptr %58, align 4 + %61 = getelementptr inbounds i8, ptr %7, i64 216 + %62 = load i32, ptr %61, align 8 + %.not51 = icmp ult i32 %60, %62 + br i1 %.not51, label %65, label %63 + +63: ; preds = %57 + %64 = load ptr, ptr %8, align 8 + br label %65 + +65: ; preds = %57, %63 + %storemerge = phi ptr [ %64, %63 ], [ null, %57 ] store ptr %storemerge, ptr %1, align 8 - br label %70 + br label %66 -70: ; preds = %69, %60, %38, %16 - %.0 = phi i32 [ 0, %69 ], [ -30, %38 ], [ -30, %60 ], [ -30, %16 ] +66: ; preds = %65, %56, %38, %16 + %.0 = phi i32 [ 0, %65 ], [ -30, %38 ], [ -30, %56 ], [ -30, %16 ] ret i32 %.0 } diff --git a/bench/cpython/optimized/arraymodule.ll b/bench/cpython/optimized/arraymodule.ll index 155807bd699..4e44ca7db95 100644 --- a/bench/cpython/optimized/arraymodule.ll +++ b/bench/cpython/optimized/arraymodule.ll @@ -3343,9 +3343,9 @@ if.then19.i: ; preds = %if.else.i br label %return if.then22.i: ; preds = %if.else.i + %add = add nuw nsw i64 %i, 1 %ob_item.i = getelementptr inbounds i8, ptr %a, i64 24 %4 = load ptr, ptr %ob_item.i, align 8 - %add = add nuw nsw i64 %i, 1 %ob_descr.i = getelementptr inbounds i8, ptr %a, i64 40 %5 = load ptr, ptr %ob_descr.i, align 8 %itemsize.i = getelementptr inbounds i8, ptr %5, i64 4 diff --git a/bench/cpython/optimized/bufferedio.ll b/bench/cpython/optimized/bufferedio.ll index c5f98377c48..f572c2122b6 100644 --- a/bench/cpython/optimized/bufferedio.ll +++ b/bench/cpython/optimized/bufferedio.ll @@ -4613,26 +4613,19 @@ while.end.i.i: ; preds = %cond.end32.i.i %cmp63158.i.i = icmp sgt i64 %104, 0 br i1 %cmp63158.i.i, label %while.body64.i.i, label %while.end108.i.i -land.rhsthread-pre-split.i.i: ; preds = %if.end104.i.i - %written.3.i.i = add i64 %call.i111.i.i, %written.2159.i.i - %.pr.i86.i = load i64, ptr %read_end.i101.i.i, align 8 - %105 = load i64, ptr %buffer_size.i.i, align 8 - %cmp63.i.i = icmp slt i64 %.pr.i86.i, %105 - br i1 %cmp63.i.i, label %while.body64.i.i, label %while.end108.i.i - -while.body64.i.i: ; preds = %while.end.i.i, %land.rhsthread-pre-split.i.i - %106 = phi i64 [ %105, %land.rhsthread-pre-split.i.i ], [ %104, %while.end.i.i ] - %remaining.2160.i.i = phi i64 [ %sub93.i.i, %land.rhsthread-pre-split.i.i ], [ %remaining.1157.i.i, %while.end.i.i ] - %written.2159.i.i = phi i64 [ %written.3.i.i, %land.rhsthread-pre-split.i.i ], [ %written.1156.i.i, %while.end.i.i ] - %107 = phi i64 [ %.pr.i86.i, %land.rhsthread-pre-split.i.i ], [ 0, %while.end.i.i ] - %108 = load i32, ptr %readable.i42.i, align 8 - %tobool.not.i103.i.i = icmp eq i32 %108, 0 - %cmp.not.i106.i.i = icmp eq i64 %107, -1 +while.body64.i.i: ; preds = %while.end.i.i, %if.end104.i.i + %105 = phi i64 [ %117, %if.end104.i.i ], [ %104, %while.end.i.i ] + %remaining.2160.i.i = phi i64 [ %sub93.i.i, %if.end104.i.i ], [ %remaining.1157.i.i, %while.end.i.i ] + %written.2159.i.i = phi i64 [ %written.3.i.i, %if.end104.i.i ], [ %written.1156.i.i, %while.end.i.i ] + %106 = phi i64 [ %.pr.i86.i, %if.end104.i.i ], [ 0, %while.end.i.i ] + %107 = load i32, ptr %readable.i42.i, align 8 + %tobool.not.i103.i.i = icmp eq i32 %107, 0 + %cmp.not.i106.i.i = icmp eq i64 %106, -1 %or.cond.i.i = or i1 %cmp.not.i106.i.i, %tobool.not.i103.i.i - %start.0.i.i.i = select i1 %or.cond.i.i, i64 0, i64 %107 - %sub.i108.i.i = sub i64 %106, %start.0.i.i.i - %109 = load ptr, ptr %buffer.i, align 8 - %add.ptr.i110.i.i = getelementptr i8, ptr %109, i64 %start.0.i.i.i + %start.0.i.i.i = select i1 %or.cond.i.i, i64 0, i64 %106 + %sub.i108.i.i = sub i64 %105, %start.0.i.i.i + %108 = load ptr, ptr %buffer.i, align 8 + %add.ptr.i110.i.i = getelementptr i8, ptr %108, i64 %start.0.i.i.i %call.i111.i.i = call fastcc i64 @_bufferedreader_raw_read(ptr noundef nonnull %self, ptr noundef %add.ptr.i110.i.i, i64 noundef %sub.i108.i.i) %cmp2.i.i.i = icmp slt i64 %call.i111.i.i, 1 br i1 %cmp2.i.i.i, label %_bufferedreader_fill_buffer.exit.i.i, label %_bufferedreader_fill_buffer.exit.thread.i.i @@ -4643,9 +4636,9 @@ _bufferedreader_fill_buffer.exit.thread.i.i: ; preds = %while.body64.i.i store i64 %add.i112.i.i, ptr %raw_pos.i.i, align 8 %cmp84.i.i = icmp sgt i64 %remaining.2160.i.i, %call.i111.i.i %add.ptr86.i.i = getelementptr i8, ptr %ob_sval.i.i.i, i64 %written.2159.i.i - %110 = load ptr, ptr %buffer.i, align 8 - %111 = load i64, ptr %pos57.i.i, align 8 - %add.ptr89.i.i = getelementptr i8, ptr %110, i64 %111 + %109 = load ptr, ptr %buffer.i, align 8 + %110 = load i64, ptr %pos57.i.i, align 8 + %add.ptr89.i.i = getelementptr i8, ptr %109, i64 %110 br i1 %cmp84.i.i, label %if.end104.i.i, label %if.end104.thread.i.i _bufferedreader_fill_buffer.exit.i.i: ; preds = %while.body64.i.i @@ -4664,43 +4657,46 @@ if.then77.i.i: ; preds = %if.then73.i87.i br i1 %tobool79.not.i.i, label %if.end81.i.i, label %error.i.i if.end81.i.i: ; preds = %if.then77.i.i - %112 = load ptr, ptr %res.i.i, align 8 + %111 = load ptr, ptr %res.i.i, align 8 br label %_bufferedreader_read_generic.exit.i if.end82.i.i: ; preds = %if.then73.i87.i - %113 = load ptr, ptr %res.i.i, align 8 - %114 = load i64, ptr %113, align 8 - %115 = and i64 %114, 2147483648 - %cmp.i135.not.i.i = icmp eq i64 %115, 0 + %112 = load ptr, ptr %res.i.i, align 8 + %113 = load i64, ptr %112, align 8 + %114 = and i64 %113, 2147483648 + %cmp.i135.not.i.i = icmp eq i64 %114, 0 br i1 %cmp.i135.not.i.i, label %if.end.i.i88.i, label %_bufferedreader_read_generic.exit.i if.end.i.i88.i: ; preds = %if.end82.i.i - %dec.i.i89.i = add i64 %114, -1 - store i64 %dec.i.i89.i, ptr %113, align 8 + %dec.i.i89.i = add i64 %113, -1 + store i64 %dec.i.i89.i, ptr %112, align 8 %cmp.i.i90.i = icmp eq i64 %dec.i.i89.i, 0 br i1 %cmp.i.i90.i, label %if.then1.i.i91.i, label %_bufferedreader_read_generic.exit.i if.then1.i.i91.i: ; preds = %if.end.i.i88.i - call void @_Py_Dealloc(ptr noundef nonnull %113) #10 + call void @_Py_Dealloc(ptr noundef nonnull %112) #10 br label %_bufferedreader_read_generic.exit.i if.end104.thread.i.i: ; preds = %_bufferedreader_fill_buffer.exit.thread.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %add.ptr86.i.i, ptr noundef nonnull align 1 dereferenceable(1) %add.ptr89.i.i, i64 %remaining.2160.i.i, i1 false) - %116 = load i64, ptr %pos57.i.i, align 8 - %add102.i.i = add i64 %116, %remaining.2160.i.i + %115 = load i64, ptr %pos57.i.i, align 8 + %add102.i.i = add i64 %115, %remaining.2160.i.i store i64 %add102.i.i, ptr %pos57.i.i, align 8 br label %while.end108.i.i if.end104.i.i: ; preds = %_bufferedreader_fill_buffer.exit.thread.i.i call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr86.i.i, ptr align 1 %add.ptr89.i.i, i64 %call.i111.i.i, i1 false) - %117 = load i64, ptr %pos57.i.i, align 8 - %add92.i.i = add i64 %117, %call.i111.i.i + %116 = load i64, ptr %pos57.i.i, align 8 + %add92.i.i = add i64 %116, %call.i111.i.i store i64 %add92.i.i, ptr %pos57.i.i, align 8 %sub93.i.i = sub nsw i64 %remaining.2160.i.i, %call.i111.i.i - %cmp60.i.i = icmp sgt i64 %sub93.i.i, 0 - br i1 %cmp60.i.i, label %land.rhsthread-pre-split.i.i, label %while.end108.i.i, !llvm.loop !11 + %written.3.i.i = add i64 %call.i111.i.i, %written.2159.i.i + %.pr.i86.i = load i64, ptr %read_end.i101.i.i, align 8 + %117 = load i64, ptr %buffer_size.i.i, align 8 + %cmp63.i.i = icmp slt i64 %.pr.i86.i, %117 + br i1 %cmp63.i.i, label %while.body64.i.i, label %while.end108.i.i -while.end108.i.i: ; preds = %if.end104.i.i, %land.rhsthread-pre-split.i.i, %if.end104.thread.i.i, %while.end.i.i, %while.end.thread.i.i +while.end108.i.i: ; preds = %if.end104.i.i, %if.end104.thread.i.i, %while.end.i.i, %while.end.thread.i.i %118 = load ptr, ptr %res.i.i, align 8 br label %_bufferedreader_read_generic.exit.i @@ -4726,7 +4722,7 @@ if.then1.i.i120.i.i: ; preds = %if.end.i.i117.i.i br label %_bufferedreader_read_generic.exit.i _bufferedreader_read_generic.exit.i: ; preds = %if.then1.i.i120.i.i, %if.end.i.i117.i.i, %if.then.i115.i.i, %error.i.i, %while.end108.i.i, %if.then1.i.i91.i, %if.end.i.i88.i, %if.end82.i.i, %if.end81.i.i, %if.then1.i115.i.i, %if.end.i112.i.i, %if.end53.i.i, %if.end52.i.i, %if.end.i69.i, %if.then8.i.i.i, %if.then.i.i65.i - %retval.0.i68.i = phi ptr [ %112, %if.end81.i.i ], [ %118, %while.end108.i.i ], [ %100, %if.end52.i.i ], [ @_Py_NoneStruct, %if.end53.i.i ], [ @_Py_NoneStruct, %if.then1.i115.i.i ], [ @_Py_NoneStruct, %if.end.i112.i.i ], [ @_Py_NoneStruct, %if.end82.i.i ], [ @_Py_NoneStruct, %if.then1.i.i91.i ], [ @_Py_NoneStruct, %if.end.i.i88.i ], [ %call.i.i66.i, %if.then8.i.i.i ], [ null, %if.then.i.i65.i ], [ null, %error.i.i ], [ null, %if.then.i115.i.i ], [ null, %if.end.i.i117.i.i ], [ null, %if.then1.i.i120.i.i ], [ null, %if.end.i69.i ] + %retval.0.i68.i = phi ptr [ %111, %if.end81.i.i ], [ %118, %while.end108.i.i ], [ %100, %if.end52.i.i ], [ @_Py_NoneStruct, %if.end53.i.i ], [ @_Py_NoneStruct, %if.then1.i115.i.i ], [ @_Py_NoneStruct, %if.end.i112.i.i ], [ @_Py_NoneStruct, %if.end82.i.i ], [ @_Py_NoneStruct, %if.then1.i.i91.i ], [ @_Py_NoneStruct, %if.end.i.i88.i ], [ %call.i.i66.i, %if.then8.i.i.i ], [ null, %if.then.i.i65.i ], [ null, %error.i.i ], [ null, %if.then.i115.i.i ], [ null, %if.end.i.i117.i.i ], [ null, %if.then1.i.i120.i.i ], [ null, %if.end.i69.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %res.i.i) br label %do.body.i @@ -6539,7 +6535,7 @@ for.inc: ; preds = %if.end126, %if.then %add131 = add i64 %n.2, %written.1118 %sub132 = sub nsw i64 %remaining.0119, %n.2 %cmp78 = icmp sgt i64 %sub132, 0 - br i1 %cmp78, label %for.body, label %for.end, !llvm.loop !12 + br i1 %cmp78, label %for.body, label %for.end, !llvm.loop !11 for.end: ; preds = %for.inc, %lor.lhs.false110, %if.end107, %if.else84, %if.end74, %if.then128 %written.2 = phi i64 [ %add129, %if.then128 ], [ %written.0, %if.end74 ], [ %add131, %for.inc ], [ %written.1118, %lor.lhs.false110 ], [ %written.1118, %if.end107 ], [ %written.1118, %if.else84 ] @@ -6789,7 +6785,7 @@ for.cond: ; preds = %for.cond, %if.end20 %and = and i64 %n.0, 1 %tobool22.not = icmp eq i64 %and, 0 %shr = ashr i64 %n.0, 1 - br i1 %tobool22.not, label %for.end, label %for.cond, !llvm.loop !13 + br i1 %tobool22.not, label %for.end, label %for.cond, !llvm.loop !12 for.end: ; preds = %for.cond %cmp23 = icmp eq i64 %n.0, 0 @@ -7450,7 +7446,7 @@ if.end206.i: ; preds = %while.body.i %sub208.i = sub i64 %remaining.0.i, %call169.i %call209.i = call i32 @PyErr_CheckSignals() #10 %cmp210.i = icmp slt i32 %call209.i, 0 - br i1 %cmp210.i, label %do.body244.i, label %while.cond.i, !llvm.loop !14 + br i1 %cmp210.i, label %do.body244.i, label %while.cond.i, !llvm.loop !13 while.end.i: ; preds = %while.cond.i, %if.end204.i %73 = load i32, ptr %readable.i, align 8 @@ -8942,4 +8938,3 @@ attributes #13 = { nounwind willreturn memory(none) } !11 = distinct !{!11, !6} !12 = distinct !{!12, !6} !13 = distinct !{!13, !6} -!14 = distinct !{!14, !6} diff --git a/bench/curl/optimized/libcurl_la-rtsp.ll b/bench/curl/optimized/libcurl_la-rtsp.ll index 8763a2450f3..383d44c8291 100644 --- a/bench/curl/optimized/libcurl_la-rtsp.ll +++ b/bench/curl/optimized/libcurl_la-rtsp.ll @@ -1397,9 +1397,7 @@ land.rhs.i104: ; preds = %land.lhs.true2.i102 br i1 %cmp7.i106, label %rtp_write_body_junk.exit111, label %if.end90 rtp_write_body_junk.exit111: ; preds = %land.rhs.i104 - %sub.i108 = sub nsw i64 %21, %22 - %spec.select.i109 = tail call i64 @llvm.smin.i64(i64 %sub.i108, i64 1) - %call.i110 = tail call i32 @Curl_client_write(ptr noundef nonnull %data, i32 noundef 1, ptr noundef %call85, i64 noundef %spec.select.i109) #7 + %call.i110 = tail call i32 @Curl_client_write(ptr noundef nonnull %data, i32 noundef 1, ptr noundef %call85, i64 noundef 1) #7 %tobool87.not = icmp eq i32 %call.i110, 0 br i1 %tobool87.not, label %if.end90, label %return diff --git a/bench/darktable/optimized/Cr2Decompressor.cpp.ll b/bench/darktable/optimized/Cr2Decompressor.cpp.ll index f3d430bfb2b..b375c8695d4 100644 --- a/bench/darktable/optimized/Cr2Decompressor.cpp.ll +++ b/bench/darktable/optimized/Cr2Decompressor.cpp.ll @@ -541,7 +541,7 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 38: ; preds = %73, %48, %36 %39 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 40: ; preds = %8 %41 = getelementptr inbounds i8, ptr %32, i64 584 @@ -640,7 +640,7 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 99: ; preds = %193, %128 %100 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 101: ; preds = %92 store i32 %97, ptr %20, align 4, !tbaa !106 @@ -719,7 +719,7 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 146: ; preds = %144 %147 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 148: ; preds = %133 %149 = load ptr, ptr %26, align 8, !tbaa !12 @@ -767,7 +767,7 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 174: ; preds = %172 %175 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 176: ; preds = %181, %.loopexit16 %177 = phi i32 [ %163, %.loopexit16 ], [ %182, %181 ] @@ -780,7 +780,7 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 179: ; preds = %176 %180 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 181: ; preds = %.loopexit16 store i32 %165, ptr %162, align 8, !tbaa !11 @@ -844,13 +844,13 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec %221 = select i1 %219, i32 0, i32 %203 br label %222 -222: ; preds = %276, %218 - %223 = phi i64 [ %243, %276 ], [ %209, %218 ] - %224 = phi i64 [ %280, %276 ], [ 0, %218 ] - %225 = phi i32 [ %289, %276 ], [ %220, %218 ] - %226 = phi i32 [ %288, %276 ], [ %221, %218 ] - %227 = phi i32 [ %285, %276 ], [ %214, %218 ] - %228 = phi i32 [ %284, %276 ], [ %213, %218 ] +222: ; preds = %272, %218 + %223 = phi i64 [ %243, %272 ], [ %209, %218 ] + %224 = phi i64 [ %277, %272 ], [ 0, %218 ] + %225 = phi i32 [ %286, %272 ], [ %220, %218 ] + %226 = phi i32 [ %285, %272 ], [ %221, %218 ] + %227 = phi i32 [ %282, %272 ], [ %214, %218 ] + %228 = phi i32 [ %281, %272 ], [ %213, %218 ] %229 = icmp ugt i32 %126, %228 tail call void @llvm.assume(i1 %229) %230 = add nuw nsw i32 %228, 1 @@ -893,98 +893,96 @@ define weak_odr hidden void @_ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDec 261: ; preds = %.loopexit %262 = landingpad { ptr, i32 } cleanup - br label %310 + br label %307 263: ; preds = %256, %222 %264 = add nsw i32 %234, %226 - %265 = add nuw nsw i32 %239, %225 - %266 = icmp sle i32 %264, %97 - %267 = icmp sle i32 %265, %89 - %268 = select i1 %266, i1 %267, i1 false - br i1 %268, label %276, label %269 - -269: ; preds = %263 - %270 = icmp slt i32 %226, %97 - %271 = icmp slt i32 %225, %89 - %272 = and i1 %271, %270 - br i1 %272, label %.loopexit, label %.loopexit15 + %.not = icmp sgt i32 %264, %97 + br i1 %.not, label %265, label %272 + +265: ; preds = %263 + %266 = icmp slt i32 %226, %97 + %267 = icmp slt i32 %225, %89 + %268 = and i1 %267, %266 + br i1 %268, label %.loopexit, label %.loopexit15 .thread: ; preds = %199 - %273 = icmp sgt i32 %97, 0 - br i1 %273, label %.loopexit, label %.thread14 + %269 = icmp sgt i32 %97, 0 + br i1 %269, label %.loopexit, label %.thread14 -.loopexit: ; preds = %256, %.thread, %269 - %274 = phi ptr [ @.str.14, %269 ], [ @.str.14, %.thread ], [ @.str.13, %256 ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull %274, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS2_EEEEEC2ENS_8RawImageESt5tupleIJiiiEENS_8iPoint2DENS_14Cr2SliceWidthsESt6vectorINS6_18PerComponentRecipeESaISD_EENS_10Array1DRefIKhEE) #12 - to label %275 unwind label %261 +.loopexit: ; preds = %256, %.thread, %265 + %270 = phi ptr [ @.str.14, %265 ], [ @.str.14, %.thread ], [ @.str.13, %256 ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull %270, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS2_EEEEEC2ENS_8RawImageESt5tupleIJiiiEENS_8iPoint2DENS_14Cr2SliceWidthsESt6vectorINS6_18PerComponentRecipeESaISD_EENS_10Array1DRefIKhEE) #12 + to label %271 unwind label %261 -275: ; preds = %.loopexit +271: ; preds = %.loopexit unreachable -276: ; preds = %263 - %277 = zext nneg i32 %225 to i64 - %278 = shl nuw nsw i64 %277, 32 - %279 = zext i32 %226 to i64 - %280 = or disjoint i64 %278, %279 - %281 = add nuw nsw i32 %239, %227 - %282 = icmp sle i32 %281, %118 - tail call void @llvm.assume(i1 %282) - %283 = icmp eq i32 %281, %118 - %284 = select i1 %283, i32 %230, i32 %228 - %285 = select i1 %283, i32 0, i32 %281 - %286 = icmp eq i32 %265, %89 - %287 = select i1 %286, i32 %234, i32 0 - %288 = add nsw i32 %287, %226 - %289 = select i1 %286, i32 0, i32 %265 - %290 = icmp eq i32 %284, %126 - %291 = icmp eq i32 %285, 0 - %292 = and i1 %290, %291 - br i1 %292, label %.loopexit15, label %222, !llvm.loop !145 - -293: ; preds = %.thread14 - %294 = landingpad { ptr, i32 } +272: ; preds = %263 + %273 = add nuw nsw i32 %239, %225 + %274 = zext nneg i32 %225 to i64 + %275 = shl nuw nsw i64 %274, 32 + %276 = zext i32 %226 to i64 + %277 = or disjoint i64 %275, %276 + %278 = add nuw nsw i32 %239, %227 + %279 = icmp sle i32 %278, %118 + tail call void @llvm.assume(i1 %279) + %280 = icmp eq i32 %278, %118 + %281 = select i1 %280, i32 %230, i32 %228 + %282 = select i1 %280, i32 0, i32 %278 + %283 = icmp eq i32 %273, %89 + %284 = select i1 %283, i32 %234, i32 0 + %285 = add nsw i32 %284, %226 + %286 = select i1 %283, i32 0, i32 %273 + %287 = icmp eq i32 %281, %126 + %288 = icmp eq i32 %282, 0 + %289 = and i1 %287, %288 + br i1 %289, label %.loopexit15, label %222, !llvm.loop !145 + +290: ; preds = %.thread14 + %291 = landingpad { ptr, i32 } cleanup - br label %310 - -.loopexit15: ; preds = %276, %269, %211 - %295 = phi i64 [ %209, %211 ], [ %223, %269 ], [ %243, %276 ] - %296 = phi i64 [ 0, %211 ], [ %224, %269 ], [ %280, %276 ] - %297 = add nuw i64 %296, %295 - %298 = lshr i64 %296, 32 - %299 = trunc nuw nsw i64 %298 to i32 - %300 = lshr i64 %295, 32 - %301 = trunc nuw nsw i64 %300 to i32 - %302 = add nuw nsw i32 %299, %301 - %303 = trunc i64 %297 to i32 - %304 = icmp eq i32 %97, %303 - %305 = icmp eq i32 %302, %89 - %306 = select i1 %304, i1 %305, i1 false - br i1 %306, label %309, label %.thread14 + br label %307 + +.loopexit15: ; preds = %272, %265, %211 + %292 = phi i64 [ %209, %211 ], [ %223, %265 ], [ %243, %272 ] + %293 = phi i64 [ 0, %211 ], [ %224, %265 ], [ %277, %272 ] + %294 = add nuw i64 %293, %292 + %295 = lshr i64 %293, 32 + %296 = trunc nuw nsw i64 %295 to i32 + %297 = lshr i64 %292, 32 + %298 = trunc nuw nsw i64 %297 to i32 + %299 = add nuw nsw i32 %296, %298 + %300 = trunc i64 %294 to i32 + %301 = icmp eq i32 %97, %300 + %302 = icmp eq i32 %299, %89 + %303 = select i1 %301, i1 %302, i1 false + br i1 %303, label %306, label %.thread14 .thread14: ; preds = %.thread, %.loopexit15, %196 - %307 = phi ptr [ @.str.16, %.loopexit15 ], [ @.str.15, %196 ], [ @.str.15, %.thread ] - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull %307, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS2_EEEEEC2ENS_8RawImageESt5tupleIJiiiEENS_8iPoint2DENS_14Cr2SliceWidthsESt6vectorINS6_18PerComponentRecipeESaISD_EENS_10Array1DRefIKhEE) #12 - to label %308 unwind label %293 + %304 = phi ptr [ @.str.16, %.loopexit15 ], [ @.str.15, %196 ], [ @.str.15, %.thread ] + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull %304, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN8rawspeed15Cr2DecompressorINS_20PrefixCodeLUTDecoderINS_15BaselineCodeTagENS_23PrefixCodeLookupDecoderIS2_EEEEEC2ENS_8RawImageESt5tupleIJiiiEENS_8iPoint2DENS_14Cr2SliceWidthsESt6vectorINS6_18PerComponentRecipeESaISD_EENS_10Array1DRefIKhEE) #12 + to label %305 unwind label %290 -308: ; preds = %.thread14 +305: ; preds = %.thread14 unreachable -309: ; preds = %.loopexit15 +306: ; preds = %.loopexit15 ret void -310: ; preds = %293, %261, %179, %174, %146, %99, %38 - %311 = phi { ptr, i32 } [ %39, %38 ], [ %100, %99 ], [ %147, %146 ], [ %175, %174 ], [ %180, %179 ], [ %294, %293 ], [ %262, %261 ] - %312 = load ptr, ptr %25, align 8, !tbaa !147 - %313 = icmp eq ptr %312, null - br i1 %313, label %315, label %314 +307: ; preds = %290, %261, %179, %174, %146, %99, %38 + %308 = phi { ptr, i32 } [ %39, %38 ], [ %100, %99 ], [ %147, %146 ], [ %175, %174 ], [ %180, %179 ], [ %291, %290 ], [ %262, %261 ] + %309 = load ptr, ptr %25, align 8, !tbaa !147 + %310 = icmp eq ptr %309, null + br i1 %310, label %312, label %311 -314: ; preds = %310 - tail call void @_ZdlPv(ptr noundef nonnull %312) #18 - br label %315 +311: ; preds = %307 + tail call void @_ZdlPv(ptr noundef nonnull %309) #18 + br label %312 -315: ; preds = %314, %310 +312: ; preds = %311, %307 tail call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %0) #19 - resume { ptr, i32 } %311 + resume { ptr, i32 } %308 } declare i32 @__gxx_personality_v0(...) diff --git a/bench/darktable/optimized/recentcollect.c.ll b/bench/darktable/optimized/recentcollect.c.ll index 88bdba98c06..9bf7553e6fc 100644 --- a/bench/darktable/optimized/recentcollect.c.ll +++ b/bench/darktable/optimized/recentcollect.c.ll @@ -112,7 +112,7 @@ define hidden void @_menuitem_preferences(ptr nocapture readnone %0, ptr noundef %22 = tail call ptr @g_type_check_instance_cast(ptr noundef %12, i64 noundef %13) #10 %23 = tail call i32 @gtk_dialog_run(ptr noundef %22) #10 %24 = icmp eq i32 %23, -3 - br i1 %24, label %25, label %83 + br i1 %24, label %25, label %80 25: ; preds = %2 %26 = getelementptr inbounds i8, ptr %1, i64 280 @@ -122,88 +122,85 @@ define hidden void @_menuitem_preferences(ptr nocapture readnone %0, ptr noundef %30 = icmp sgt i32 %28, %29 %31 = select i1 %30, ptr @.str.22, ptr @.str.23 %32 = tail call i32 @dt_conf_get_int(ptr noundef nonnull %31) #10 - %33 = sub nsw i32 %32, %21 - %34 = icmp slt i32 %33, 0 - br i1 %34, label %35, label %.loopexit3 - -35: ; preds = %25 - %36 = getelementptr inbounds i8, ptr %27, i64 16 - %37 = load ptr, ptr %36, align 8, !tbaa !27 - %38 = tail call ptr @g_list_nth(ptr noundef %37, i32 noundef %32) #10 - %39 = icmp eq ptr %38, null - br i1 %39, label %.loopexit, label %.preheader - -.preheader: ; preds = %35, %.preheader - %40 = phi ptr [ %49, %.preheader ], [ %38, %35 ] - %41 = load ptr, ptr %40, align 8, !tbaa !29 - %42 = getelementptr inbounds i8, ptr %41, i64 8 - %43 = load i32, ptr %42, align 8, !tbaa !31 - %44 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 200, ptr noundef nonnull @.str.5, i32 noundef %43) #10 + %33 = icmp slt i32 %32, %21 + br i1 %33, label %34, label %.loopexit3 + +34: ; preds = %25 + %35 = getelementptr inbounds i8, ptr %27, i64 16 + %36 = load ptr, ptr %35, align 8, !tbaa !27 + %37 = tail call ptr @g_list_nth(ptr noundef %36, i32 noundef %32) #10 + %38 = icmp eq ptr %37, null + br i1 %38, label %.loopexit, label %.preheader + +.preheader: ; preds = %34, %.preheader + %39 = phi ptr [ %48, %.preheader ], [ %37, %34 ] + %40 = load ptr, ptr %39, align 8, !tbaa !29 + %41 = getelementptr inbounds i8, ptr %40, i64 8 + %42 = load i32, ptr %41, align 8, !tbaa !31 + %43 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 200, ptr noundef nonnull @.str.5, i32 noundef %42) #10 call void @dt_conf_set_string(ptr noundef nonnull %3, ptr noundef nonnull @.str.6) #10 - %45 = load i32, ptr %42, align 8, !tbaa !31 - %46 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 200, ptr noundef nonnull @.str.7, i32 noundef %45) #10 + %44 = load i32, ptr %41, align 8, !tbaa !31 + %45 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 200, ptr noundef nonnull @.str.7, i32 noundef %44) #10 call void @dt_conf_set_int(ptr noundef nonnull %3, i32 noundef 0) #10 - %47 = load ptr, ptr %41, align 8, !tbaa !33 - call void @gtk_widget_destroy(ptr noundef %47) #10 - call void @free(ptr noundef %41) #10 - %48 = getelementptr inbounds i8, ptr %40, i64 8 - %49 = load ptr, ptr %48, align 8, !tbaa !34 - %50 = load ptr, ptr %36, align 8, !tbaa !27 - %51 = call ptr @g_list_delete_link(ptr noundef %50, ptr noundef nonnull %40) #10 - store ptr %51, ptr %36, align 8, !tbaa !27 - %52 = icmp eq ptr %49, null - br i1 %52, label %.loopexit3, label %.preheader + %46 = load ptr, ptr %40, align 8, !tbaa !33 + call void @gtk_widget_destroy(ptr noundef %46) #10 + call void @free(ptr noundef %40) #10 + %47 = getelementptr inbounds i8, ptr %39, i64 8 + %48 = load ptr, ptr %47, align 8, !tbaa !34 + %49 = load ptr, ptr %35, align 8, !tbaa !27 + %50 = call ptr @g_list_delete_link(ptr noundef %49, ptr noundef nonnull %39) #10 + store ptr %50, ptr %35, align 8, !tbaa !27 + %51 = icmp eq ptr %48, null + br i1 %51, label %.loopexit3, label %.preheader .loopexit3: ; preds = %.preheader, %25 - %53 = icmp sgt i32 %33, 0 - %54 = icmp slt i32 %21, %32 - %55 = and i1 %54, %53 - br i1 %55, label %56, label %.loopexit - -56: ; preds = %.loopexit3 - %57 = tail call i64 @gtk_widget_get_type() #11 - %58 = getelementptr inbounds i8, ptr %27, i64 16 - br label %59 - -59: ; preds = %59, %56 - %60 = phi i32 [ %21, %56 ], [ %77, %59 ] - %61 = load ptr, ptr %27, align 8, !tbaa !35 - %62 = call ptr @g_type_check_instance_cast(ptr noundef %61, i64 noundef %57) #10 - %63 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 - %64 = load ptr, ptr %58, align 8, !tbaa !27 - %65 = call ptr @g_list_append(ptr noundef %64, ptr noundef %63) #10 - store ptr %65, ptr %58, align 8, !tbaa !27 - %66 = call ptr @gtk_button_new() #10 - store ptr %66, ptr %63, align 8, !tbaa !33 - %67 = tail call i64 @gtk_box_get_type() #11 - %68 = call ptr @g_type_check_instance_cast(ptr noundef %62, i64 noundef %67) #10 - %69 = load ptr, ptr %63, align 8, !tbaa !33 - call void @gtk_box_pack_start(ptr noundef %68, ptr noundef %69, i32 noundef 0, i32 noundef 1, i32 noundef 0) #10 - %70 = load ptr, ptr %63, align 8, !tbaa !33 - %71 = call ptr @g_type_check_instance_cast(ptr noundef %70, i64 noundef 80) #10 - %72 = call i64 @g_signal_connect_data(ptr noundef %71, ptr noundef nonnull @.str.8, ptr noundef nonnull @_button_pressed, ptr noundef %1, ptr noundef null, i32 noundef 0) #10 - %73 = load ptr, ptr %63, align 8, !tbaa !33 - call void @gtk_widget_set_no_show_all(ptr noundef %73, i32 noundef 1) #10 - %74 = load ptr, ptr %63, align 8, !tbaa !33 - %75 = call ptr @g_type_check_instance_cast(ptr noundef %74, i64 noundef %57) #10 - call void @gtk_widget_set_name(ptr noundef %75, ptr noundef nonnull @.str.9) #10 - %76 = load ptr, ptr %63, align 8, !tbaa !33 - call void @gtk_widget_set_visible(ptr noundef %76, i32 noundef 0) #10 - %77 = add i32 %60, 1 - %78 = icmp eq i32 %77, %32 - br i1 %78, label %.loopexit, label %59 - -.loopexit: ; preds = %59, %.loopexit3, %35 + %52 = icmp slt i32 %21, %32 + br i1 %52, label %53, label %.loopexit + +53: ; preds = %.loopexit3 + %54 = tail call i64 @gtk_widget_get_type() #11 + %55 = getelementptr inbounds i8, ptr %27, i64 16 + br label %56 + +56: ; preds = %56, %53 + %57 = phi i32 [ %21, %53 ], [ %74, %56 ] + %58 = load ptr, ptr %27, align 8, !tbaa !35 + %59 = call ptr @g_type_check_instance_cast(ptr noundef %58, i64 noundef %54) #10 + %60 = call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #12 + %61 = load ptr, ptr %55, align 8, !tbaa !27 + %62 = call ptr @g_list_append(ptr noundef %61, ptr noundef %60) #10 + store ptr %62, ptr %55, align 8, !tbaa !27 + %63 = call ptr @gtk_button_new() #10 + store ptr %63, ptr %60, align 8, !tbaa !33 + %64 = tail call i64 @gtk_box_get_type() #11 + %65 = call ptr @g_type_check_instance_cast(ptr noundef %59, i64 noundef %64) #10 + %66 = load ptr, ptr %60, align 8, !tbaa !33 + call void @gtk_box_pack_start(ptr noundef %65, ptr noundef %66, i32 noundef 0, i32 noundef 1, i32 noundef 0) #10 + %67 = load ptr, ptr %60, align 8, !tbaa !33 + %68 = call ptr @g_type_check_instance_cast(ptr noundef %67, i64 noundef 80) #10 + %69 = call i64 @g_signal_connect_data(ptr noundef %68, ptr noundef nonnull @.str.8, ptr noundef nonnull @_button_pressed, ptr noundef %1, ptr noundef null, i32 noundef 0) #10 + %70 = load ptr, ptr %60, align 8, !tbaa !33 + call void @gtk_widget_set_no_show_all(ptr noundef %70, i32 noundef 1) #10 + %71 = load ptr, ptr %60, align 8, !tbaa !33 + %72 = call ptr @g_type_check_instance_cast(ptr noundef %71, i64 noundef %54) #10 + call void @gtk_widget_set_name(ptr noundef %72, ptr noundef nonnull @.str.9) #10 + %73 = load ptr, ptr %60, align 8, !tbaa !33 + call void @gtk_widget_set_visible(ptr noundef %73, i32 noundef 0) #10 + %74 = add i32 %57, 1 + %75 = icmp eq i32 %74, %32 + br i1 %75, label %.loopexit, label %56 + +.loopexit: ; preds = %56, %.loopexit3, %34 call void @_lib_recentcollection_updated(ptr poison, i32 poison, i32 poison, ptr poison, i32 poison, ptr noundef %1) - %79 = call i32 @dt_conf_get_bool(ptr noundef nonnull @.str.11) #10 - %80 = icmp eq i32 %79, 0 - %81 = zext i1 %80 to i32 - call void @dt_conf_set_bool(ptr noundef nonnull @.str.10, i32 noundef %81) #10 - %82 = load ptr, ptr getelementptr inbounds (i8, ptr @darktable, i64 80), align 8, !tbaa !36 - call void @dt_view_collection_update_history_state(ptr noundef %82) #10 - br label %83 - -83: ; preds = %.loopexit, %2 + %76 = call i32 @dt_conf_get_bool(ptr noundef nonnull @.str.11) #10 + %77 = icmp eq i32 %76, 0 + %78 = zext i1 %77 to i32 + call void @dt_conf_set_bool(ptr noundef nonnull @.str.10, i32 noundef %78) #10 + %79 = load ptr, ptr getelementptr inbounds (i8, ptr @darktable, i64 80), align 8, !tbaa !36 + call void @dt_view_collection_update_history_state(ptr noundef %79) #10 + br label %80 + +80: ; preds = %.loopexit, %2 call void @gtk_widget_destroy(ptr noundef %12) #10 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %3) #10 ret void diff --git a/bench/darktable/optimized/tagging.c.ll b/bench/darktable/optimized/tagging.c.ll index 14b2b2623a2..eb6f7e4a8f3 100644 --- a/bench/darktable/optimized/tagging.c.ll +++ b/bench/darktable/optimized/tagging.c.ll @@ -8489,7 +8489,7 @@ define internal fastcc void @_size_recent_tags_list() unnamed_addr #1 { %1 = tail call ptr @dt_conf_get_string_const(ptr noundef nonnull @.str.84) #16 %2 = load i8, ptr %1, align 1, !tbaa !26 %3 = icmp eq i8 %2, 0 - br i1 %3, label %33, label %4 + br i1 %3, label %32, label %4 4: ; preds = %0 %5 = tail call i32 @dt_conf_get_int(ptr noundef nonnull @.str.87) #16 @@ -8502,7 +8502,7 @@ define internal fastcc void @_size_recent_tags_list() unnamed_addr #1 { 11: ; preds = %4 tail call void @dt_conf_set_string(ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.4) #16 - br label %33 + br label %32 .preheader4: ; preds = %4, %17 %12 = phi ptr [ %19, %17 ], [ %1, %4 ] @@ -8524,35 +8524,34 @@ define internal fastcc void @_size_recent_tags_list() unnamed_addr #1 { 20: ; preds = %.preheader4 %21 = icmp sgt i32 %13, %10 - br i1 %21, label %22, label %33 + br i1 %21, label %.preheader, label %32 -22: ; preds = %20 - %23 = sub nsw i32 %13, %10 - %24 = tail call noalias ptr @g_strdup(ptr noundef nonnull %1) #16 - %25 = icmp sgt i32 %23, 0 - br i1 %25, label %.preheader, label %.loopexit +.preheader: ; preds = %20 + %22 = sub nsw i32 %13, %10 + %23 = tail call noalias ptr @g_strdup(ptr noundef nonnull %1) #16 + br label %24 -.preheader: ; preds = %22, %30 - %26 = phi i32 [ %31, %30 ], [ %23, %22 ] - %27 = tail call ptr @g_strrstr(ptr noundef %24, ptr noundef nonnull @.str.85) #16 - %28 = icmp eq ptr %27, null - br i1 %28, label %30, label %29 +24: ; preds = %.preheader, %29 + %25 = phi i32 [ %30, %29 ], [ %22, %.preheader ] + %26 = tail call ptr @g_strrstr(ptr noundef %23, ptr noundef nonnull @.str.85) #16 + %27 = icmp eq ptr %26, null + br i1 %27, label %29, label %28 -29: ; preds = %.preheader - store i8 0, ptr %27, align 1, !tbaa !26 - br label %30 +28: ; preds = %24 + store i8 0, ptr %26, align 1, !tbaa !26 + br label %29 -30: ; preds = %29, %.preheader - %31 = add nsw i32 %26, -1 - %32 = icmp sgt i32 %26, 1 - br i1 %32, label %.preheader, label %.loopexit +29: ; preds = %28, %24 + %30 = add nsw i32 %25, -1 + %31 = icmp sgt i32 %25, 1 + br i1 %31, label %24, label %.loopexit -.loopexit: ; preds = %30, %22 - tail call void @dt_conf_set_string(ptr noundef nonnull @.str.84, ptr noundef %24) #16 - tail call void @g_free(ptr noundef %24) #16 - br label %33 +.loopexit: ; preds = %29 + tail call void @dt_conf_set_string(ptr noundef nonnull @.str.84, ptr noundef %23) #16 + tail call void @g_free(ptr noundef %23) #16 + br label %32 -33: ; preds = %.loopexit, %20, %11, %0 +32: ; preds = %.loopexit, %20, %11, %0 ret void } diff --git a/bench/double_conversion/optimized/bignum.cc.ll b/bench/double_conversion/optimized/bignum.cc.ll index 63dfda8d5eb..50c64871baf 100644 --- a/bench/double_conversion/optimized/bignum.cc.ll +++ b/bench/double_conversion/optimized/bignum.cc.ll @@ -808,25 +808,25 @@ entry: %exponent_2.i = getelementptr inbounds i8, ptr %other, i64 2 %1 = load i16, ptr %exponent_2.i, align 2 %cmp.i = icmp sgt i16 %0, %1 - %.pre = load i16, ptr %this, align 4 + %.pre75 = load i16, ptr %this, align 4 br i1 %cmp.i, label %if.then.i, label %_ZN17double_conversion6Bignum5AlignERKS0_.exit if.then.i: ; preds = %entry %conv3.i = sext i16 %1 to i32 %conv.i = sext i16 %0 to i32 %sub.i = sub nsw i32 %conv.i, %conv3.i - %conv8.i = sext i16 %.pre to i32 + %conv8.i = sext i16 %.pre75 to i32 %add.i = add nsw i32 %sub.i, %conv8.i %cmp.i.i = icmp sgt i32 %add.i, 128 br i1 %cmp.i.i, label %if.then.i.i, label %for.cond.preheader.i for.cond.preheader.i: ; preds = %if.then.i - %cmp1217.i = icmp sgt i16 %.pre, 0 - br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.cond16.preheader.i + %cmp1217.i = icmp sgt i16 %.pre75, 0 + br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.body18.lr.ph.i for.body.lr.ph.i: ; preds = %for.cond.preheader.i %bigits_buffer_.i.i = getelementptr inbounds i8, ptr %this, i64 4 - %2 = zext nneg i16 %.pre to i64 + %2 = zext nneg i16 %.pre75 to i64 %3 = sext i32 %sub.i to i64 br label %for.body.i @@ -834,43 +834,41 @@ if.then.i.i: ; preds = %if.then.i tail call void @abort() #11 unreachable -for.cond16.preheader.i: ; preds = %for.body.i, %for.cond.preheader.i - %cmp1719.i = icmp sgt i32 %sub.i, 0 - br i1 %cmp1719.i, label %for.body18.lr.ph.i, label %for.end21.i +for.body18.lr.ph.i.loopexit: ; preds = %for.body.i + %.pre = load i16, ptr %this, align 4 + %.pre74 = load i16, ptr %exponent_.i, align 2 + br label %for.body18.lr.ph.i -for.body18.lr.ph.i: ; preds = %for.cond16.preheader.i +for.body18.lr.ph.i: ; preds = %for.body18.lr.ph.i.loopexit, %for.cond.preheader.i + %4 = phi i16 [ %.pre74, %for.body18.lr.ph.i.loopexit ], [ %0, %for.cond.preheader.i ] + %5 = phi i16 [ %.pre, %for.body18.lr.ph.i.loopexit ], [ %.pre75, %for.cond.preheader.i ] %bigits_buffer_.i14.i = getelementptr inbounds i8, ptr %this, i64 4 - %4 = zext nneg i32 %sub.i to i64 - %5 = shl nuw nsw i64 %4, 2 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %5, i1 false) - br label %for.end21.i + %6 = zext nneg i32 %sub.i to i64 + %7 = shl nuw nsw i64 %6, 2 + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %7, i1 false) + %8 = trunc i32 %sub.i to i16 + %conv27.i = add i16 %5, %8 + store i16 %conv27.i, ptr %this, align 4 + %conv33.i = sub i16 %4, %8 + store i16 %conv33.i, ptr %exponent_.i, align 2 + %.pre76 = load i16, ptr %exponent_2.i, align 2 + br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ %2, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %indvars.iv.next.i - %6 = load i32, ptr %arrayidx.i.i, align 4 - %7 = add nsw i64 %indvars.iv.next.i, %3 - %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %7 - store i32 %6, ptr %arrayidx.i13.i, align 4 + %9 = load i32, ptr %arrayidx.i.i, align 4 + %10 = add nsw i64 %indvars.iv.next.i, %3 + %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %10 + store i32 %9, ptr %arrayidx.i13.i, align 4 %cmp12.i = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %cmp12.i, label %for.body.i, label %for.cond16.preheader.i, !llvm.loop !19 - -for.end21.i: ; preds = %for.body18.lr.ph.i, %for.cond16.preheader.i - %8 = load i16, ptr %this, align 4 - %9 = trunc i32 %sub.i to i16 - %conv27.i = add i16 %8, %9 - store i16 %conv27.i, ptr %this, align 4 - %10 = load i16, ptr %exponent_.i, align 2 - %conv33.i = sub i16 %10, %9 - store i16 %conv33.i, ptr %exponent_.i, align 2 - %.pre74 = load i16, ptr %exponent_2.i, align 2 - br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit + br i1 %cmp12.i, label %for.body.i, label %for.body18.lr.ph.i.loopexit, !llvm.loop !19 -_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %entry, %for.end21.i - %11 = phi i16 [ %1, %entry ], [ %.pre74, %for.end21.i ] - %12 = phi i16 [ %0, %entry ], [ %conv33.i, %for.end21.i ] - %13 = phi i16 [ %.pre, %entry ], [ %conv27.i, %for.end21.i ] +_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %entry, %for.body18.lr.ph.i + %11 = phi i16 [ %1, %entry ], [ %.pre76, %for.body18.lr.ph.i ] + %12 = phi i16 [ %0, %entry ], [ %conv33.i, %for.body18.lr.ph.i ] + %13 = phi i16 [ %.pre75, %entry ], [ %conv27.i, %for.body18.lr.ph.i ] %conv.i14 = sext i16 %13 to i32 %conv2.i = sext i16 %12 to i32 %add.i16 = add nsw i32 %conv2.i, %conv.i14 @@ -904,11 +902,11 @@ for.body.lr.ph: ; preds = %_ZN17double_convers %22 = shl nuw nsw i64 %21, 2 %23 = add nuw nsw i64 %22, 4 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %23, i1 false) - %.pre75 = load i16, ptr %other, align 4 + %.pre77 = load i16, ptr %other, align 4 br label %for.cond13.preheader for.cond13.preheader: ; preds = %for.body.lr.ph, %_ZN17double_conversion6Bignum14EnsureCapacityEi.exit - %24 = phi i16 [ %.pre75, %for.body.lr.ph ], [ %14, %_ZN17double_conversion6Bignum14EnsureCapacityEi.exit ] + %24 = phi i16 [ %.pre77, %for.body.lr.ph ], [ %14, %_ZN17double_conversion6Bignum14EnsureCapacityEi.exit ] %cmp1656 = icmp sgt i16 %24, 0 br i1 %cmp1656, label %for.body17.lr.ph, label %while.end @@ -1090,7 +1088,7 @@ if.then.i: ; preds = %entry for.cond.preheader.i: ; preds = %if.then.i %cmp1217.i = icmp sgt i16 %2, 0 - br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.cond16.preheader.i + br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.body18.lr.ph.i for.body.lr.ph.i: ; preds = %for.cond.preheader.i %bigits_buffer_.i.i = getelementptr inbounds i8, ptr %this, i64 4 @@ -1102,42 +1100,40 @@ if.then.i.i: ; preds = %if.then.i tail call void @abort() #11 unreachable -for.cond16.preheader.i: ; preds = %for.body.i, %for.cond.preheader.i - %cmp1719.i = icmp sgt i32 %sub.i, 0 - br i1 %cmp1719.i, label %for.body18.lr.ph.i, label %for.end21.i +for.body18.lr.ph.i.loopexit: ; preds = %for.body.i + %.pre = load i16, ptr %this, align 4 + %.pre53 = load i16, ptr %exponent_.i, align 2 + br label %for.body18.lr.ph.i -for.body18.lr.ph.i: ; preds = %for.cond16.preheader.i +for.body18.lr.ph.i: ; preds = %for.body18.lr.ph.i.loopexit, %for.cond.preheader.i + %5 = phi i16 [ %.pre53, %for.body18.lr.ph.i.loopexit ], [ %0, %for.cond.preheader.i ] + %6 = phi i16 [ %.pre, %for.body18.lr.ph.i.loopexit ], [ %2, %for.cond.preheader.i ] %bigits_buffer_.i14.i = getelementptr inbounds i8, ptr %this, i64 4 - %5 = zext nneg i32 %sub.i to i64 - %6 = shl nuw nsw i64 %5, 2 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %6, i1 false) - br label %for.end21.i + %7 = zext nneg i32 %sub.i to i64 + %8 = shl nuw nsw i64 %7, 2 + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %8, i1 false) + %9 = trunc i32 %sub.i to i16 + %conv27.i = add i16 %6, %9 + store i16 %conv27.i, ptr %this, align 4 + %conv33.i = sub i16 %5, %9 + store i16 %conv33.i, ptr %exponent_.i, align 2 + %.pre54 = load i16, ptr %exponent_2.i, align 2 + br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ %3, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %indvars.iv.next.i - %7 = load i32, ptr %arrayidx.i.i, align 4 - %8 = add nsw i64 %indvars.iv.next.i, %4 - %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %8 - store i32 %7, ptr %arrayidx.i13.i, align 4 + %10 = load i32, ptr %arrayidx.i.i, align 4 + %11 = add nsw i64 %indvars.iv.next.i, %4 + %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %11 + store i32 %10, ptr %arrayidx.i13.i, align 4 %cmp12.i = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %cmp12.i, label %for.body.i, label %for.cond16.preheader.i, !llvm.loop !19 + br i1 %cmp12.i, label %for.body.i, label %for.body18.lr.ph.i.loopexit, !llvm.loop !19 -for.end21.i: ; preds = %for.body18.lr.ph.i, %for.cond16.preheader.i - %9 = load i16, ptr %this, align 4 - %10 = trunc i32 %sub.i to i16 - %conv27.i = add i16 %9, %10 - store i16 %conv27.i, ptr %this, align 4 - %11 = load i16, ptr %exponent_.i, align 2 - %conv33.i = sub i16 %11, %10 - store i16 %conv33.i, ptr %exponent_.i, align 2 - %.pre = load i16, ptr %exponent_2.i, align 2 - br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit - -_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %entry, %for.end21.i - %12 = phi i16 [ %0, %entry ], [ %conv33.i, %for.end21.i ] - %13 = phi i16 [ %1, %entry ], [ %.pre, %for.end21.i ] +_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %entry, %for.body18.lr.ph.i + %12 = phi i16 [ %0, %entry ], [ %conv33.i, %for.body18.lr.ph.i ] + %13 = phi i16 [ %1, %entry ], [ %.pre54, %for.body18.lr.ph.i ] %conv = sext i16 %13 to i32 %conv3 = sext i16 %12 to i32 %sub = sub nsw i32 %conv, %conv3 @@ -2047,7 +2043,7 @@ if.then.i: ; preds = %if.end for.cond.preheader.i: ; preds = %if.then.i %cmp1217.i = icmp sgt i16 %0, 0 - br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.cond16.preheader.i + br i1 %cmp1217.i, label %for.body.lr.ph.i, label %for.body18.lr.ph.i for.body.lr.ph.i: ; preds = %for.cond.preheader.i %bigits_buffer_.i.i = getelementptr inbounds i8, ptr %this, i64 4 @@ -2059,52 +2055,50 @@ if.then.i.i: ; preds = %if.then.i tail call void @abort() #11 unreachable -for.cond16.preheader.i: ; preds = %for.body.i, %for.cond.preheader.i - %cmp1719.i = icmp sgt i32 %sub.i, 0 - br i1 %cmp1719.i, label %for.body18.lr.ph.i, label %for.end21.i +for.body18.lr.ph.i.loopexit: ; preds = %for.body.i + %.pre = load i16, ptr %this, align 4 + %.pre83 = load i16, ptr %exponent_.i, align 2 + br label %for.body18.lr.ph.i -for.body18.lr.ph.i: ; preds = %for.cond16.preheader.i +for.body18.lr.ph.i: ; preds = %for.body18.lr.ph.i.loopexit, %for.cond.preheader.i + %6 = phi i16 [ %.pre83, %for.body18.lr.ph.i.loopexit ], [ %1, %for.cond.preheader.i ] + %7 = phi i16 [ %.pre, %for.body18.lr.ph.i.loopexit ], [ %0, %for.cond.preheader.i ] %bigits_buffer_.i14.i = getelementptr inbounds i8, ptr %this, i64 4 - %6 = zext nneg i32 %sub.i to i64 - %7 = shl nuw nsw i64 %6, 2 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %7, i1 false) - br label %for.end21.i + %8 = zext nneg i32 %sub.i to i64 + %9 = shl nuw nsw i64 %8, 2 + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %bigits_buffer_.i14.i, i8 0, i64 %9, i1 false) + %10 = trunc i32 %sub.i to i16 + %conv27.i = add i16 %7, %10 + store i16 %conv27.i, ptr %this, align 4 + %conv33.i = sub i16 %6, %10 + store i16 %conv33.i, ptr %exponent_.i, align 2 + %.pre84 = load i16, ptr %other, align 4 + %.pre85 = load i16, ptr %exponent_.i26, align 2 + %.pre86 = sext i16 %conv27.i to i32 + %.pre87 = sext i16 %conv33.i to i32 + %.pre88 = add nsw i32 %.pre87, %.pre86 + %.pre89 = sext i16 %.pre84 to i32 + %.pre90 = sext i16 %.pre85 to i32 + %.pre91 = add nsw i32 %.pre90, %.pre89 + br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ %4, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %indvars.iv.next.i - %8 = load i32, ptr %arrayidx.i.i, align 4 - %9 = add nsw i64 %indvars.iv.next.i, %5 - %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %9 - store i32 %8, ptr %arrayidx.i13.i, align 4 + %11 = load i32, ptr %arrayidx.i.i, align 4 + %12 = add nsw i64 %indvars.iv.next.i, %5 + %arrayidx.i13.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %12 + store i32 %11, ptr %arrayidx.i13.i, align 4 %cmp12.i = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %cmp12.i, label %for.body.i, label %for.cond16.preheader.i, !llvm.loop !19 - -for.end21.i: ; preds = %for.body18.lr.ph.i, %for.cond16.preheader.i - %10 = load i16, ptr %this, align 4 - %11 = trunc i32 %sub.i to i16 - %conv27.i = add i16 %10, %11 - store i16 %conv27.i, ptr %this, align 4 - %12 = load i16, ptr %exponent_.i, align 2 - %conv33.i = sub i16 %12, %11 - store i16 %conv33.i, ptr %exponent_.i, align 2 - %.pre = load i16, ptr %other, align 4 - %.pre83 = load i16, ptr %exponent_.i26, align 2 - %.pre84 = sext i16 %conv27.i to i32 - %.pre85 = sext i16 %conv33.i to i32 - %.pre86 = add nsw i32 %.pre85, %.pre84 - %.pre87 = sext i16 %.pre to i32 - %.pre88 = sext i16 %.pre83 to i32 - %.pre89 = add nsw i32 %.pre88, %.pre87 - br label %_ZN17double_conversion6Bignum5AlignERKS0_.exit - -_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %if.end, %for.end21.i - %add.i3970.pre-phi = phi i32 [ %add.i28, %if.end ], [ %.pre89, %for.end21.i ] - %conv.i3668.pre-phi = phi i32 [ %conv.i25, %if.end ], [ %.pre87, %for.end21.i ] - %add.i3567.pre-phi = phi i32 [ %add.i, %if.end ], [ %.pre86, %for.end21.i ] - %conv.i3265.pre-phi = phi i32 [ %conv.i, %if.end ], [ %.pre84, %for.end21.i ] - %13 = phi i16 [ %2, %if.end ], [ %.pre, %for.end21.i ] + br i1 %cmp12.i, label %for.body.i, label %for.body18.lr.ph.i.loopexit, !llvm.loop !19 + +_ZN17double_conversion6Bignum5AlignERKS0_.exit: ; preds = %if.end, %for.body18.lr.ph.i + %add.i3970.pre-phi = phi i32 [ %add.i28, %if.end ], [ %.pre91, %for.body18.lr.ph.i ] + %conv.i3668.pre-phi = phi i32 [ %conv.i25, %if.end ], [ %.pre89, %for.body18.lr.ph.i ] + %add.i3567.pre-phi = phi i32 [ %add.i, %if.end ], [ %.pre88, %for.body18.lr.ph.i ] + %conv.i3265.pre-phi = phi i32 [ %conv.i, %if.end ], [ %.pre86, %for.body18.lr.ph.i ] + %13 = phi i16 [ %2, %if.end ], [ %.pre84, %for.body18.lr.ph.i ] %cmp571 = icmp sgt i32 %add.i3567.pre-phi, %add.i3970.pre-phi br i1 %cmp571, label %while.body.lr.ph, label %while.end diff --git a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll index 87c9a932486..7eaa62d6089 100644 --- a/bench/duckdb/optimized/ub_duckdb_common.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common.cpp.ll @@ -230612,10 +230612,6 @@ _ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversion if.then121: ; preds = %_ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversionIT0_T_EE5valueEiE4typeELi0EEET1_S7_S7_SB_.exit285 %sub126 = sub nsw i32 %133, %132 - %cmp.i.i286 = icmp slt i32 %sub126, 1 - br i1 %cmp.i.i286, label %cleanup183, label %if.then.i.i.i.i287 - -if.then.i.i.i.i287: ; preds = %if.then121 %idx.ext.i.i288 = zext nneg i32 %sub126 to i64 %add.ptr.i.i289 = getelementptr inbounds i8, ptr %__result.addr.0.lcssa.i.i284, i64 %idx.ext.i.i288 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %__result.addr.0.lcssa.i.i284, i8 48, i64 %idx.ext.i.i288, i1 false) @@ -230790,8 +230786,8 @@ for.body.i.i299: ; preds = %for.body.i.i299.pro %cmp.not.i.i304.7 = icmp eq ptr %incdec.ptr.i.i302.7, %add.ptr178 br i1 %cmp.not.i.i304.7, label %cleanup183, label %for.body.i.i299, !llvm.loop !3662 -cleanup183: ; preds = %for.body.i.i299, %while.body, %for.body.i.i269, %for.body.i.i299.prol.loopexit, %middle.block352, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit297, %if.end166, %if.then.i.i.i.i287, %if.then121, %_ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversionIT0_T_EE5valueEiE4typeELi0EEET1_S7_S7_SB_.exit285, %for.body.i.i269.prol.loopexit, %middle.block449, %while.end, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit258, %if.then65, %if.then58, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit252, %_ZN10duckdb_fmt2v68internal14write_exponentIcPcEET0_iS4_.exit - %retval.1 = phi ptr [ %incdec.ptr17.i, %_ZN10duckdb_fmt2v68internal14write_exponentIcPcEET0_iS4_.exit ], [ %retval.0.i.i251, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit252 ], [ %__result.addr.0.lcssa.i.i284, %_ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversionIT0_T_EE5valueEiE4typeELi0EEET1_S7_S7_SB_.exit285 ], [ %incdec.ptr131, %if.end166 ], [ %__result.addr.0.lcssa.i.i284, %if.then121 ], [ %add.ptr.i.i289, %if.then.i.i.i.i287 ], [ %retval.0.i.i296, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit297 ], [ %add.ptr.i.i256, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit258 ], [ %incdec.ptr66, %if.then65 ], [ %incdec.ptr52, %if.then58 ], [ %incdec.ptr1.i.i264.lcssa, %while.end ], [ %ind.end457, %middle.block449 ], [ %ind.end360, %middle.block352 ], [ %incdec.ptr1.i.i273.lcssa.unr, %for.body.i.i269.prol.loopexit ], [ %incdec.ptr1.i.i303.lcssa.unr, %for.body.i.i299.prol.loopexit ], [ %incdec.ptr1.i.i273.7, %for.body.i.i269 ], [ %incdec.ptr1.i.i264.lcssa, %while.body ], [ %incdec.ptr1.i.i303.7, %for.body.i.i299 ] +cleanup183: ; preds = %for.body.i.i299, %while.body, %for.body.i.i269, %for.body.i.i299.prol.loopexit, %middle.block352, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit297, %if.end166, %if.then121, %_ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversionIT0_T_EE5valueEiE4typeELi0EEET1_S7_S7_SB_.exit285, %for.body.i.i269.prol.loopexit, %middle.block449, %while.end, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit258, %if.then65, %if.then58, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit252, %_ZN10duckdb_fmt2v68internal14write_exponentIcPcEET0_iS4_.exit + %retval.1 = phi ptr [ %incdec.ptr17.i, %_ZN10duckdb_fmt2v68internal14write_exponentIcPcEET0_iS4_.exit ], [ %retval.0.i.i251, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit252 ], [ %__result.addr.0.lcssa.i.i284, %_ZN10duckdb_fmt2v68internal8copy_strIcPKcPcTnNSt9enable_ifIXsr16needs_conversionIT0_T_EE5valueEiE4typeELi0EEET1_S7_S7_SB_.exit285 ], [ %incdec.ptr131, %if.end166 ], [ %add.ptr.i.i289, %if.then121 ], [ %retval.0.i.i296, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit297 ], [ %add.ptr.i.i256, %_ZSt6fill_nIPcicET_S1_T0_RKT1_.exit258 ], [ %incdec.ptr66, %if.then65 ], [ %incdec.ptr52, %if.then58 ], [ %incdec.ptr1.i.i264.lcssa, %while.end ], [ %ind.end457, %middle.block449 ], [ %ind.end360, %middle.block352 ], [ %incdec.ptr1.i.i273.lcssa.unr, %for.body.i.i269.prol.loopexit ], [ %incdec.ptr1.i.i303.lcssa.unr, %for.body.i.i299.prol.loopexit ], [ %incdec.ptr1.i.i273.7, %for.body.i.i269 ], [ %incdec.ptr1.i.i264.lcssa, %while.body ], [ %incdec.ptr1.i.i303.7, %for.body.i.i299 ] ret ptr %retval.1 } @@ -230941,39 +230937,37 @@ if.end162: ; preds = %if.then118 br i1 %cmp184, label %if.then185, label %cleanup268 if.then185: ; preds = %if.end162 - %sub190 = sub nsw i32 %31, %0 - %cmp4.i.i.i335 = icmp sgt i32 %sub190, 0 - %32 = add nsw i32 %sub190, -1 - %33 = zext nneg i32 %32 to i64 - %34 = add i64 %30, 1 - %35 = add i64 %34, %33 - %__first.sroa.0.0.lcssa.i.i.i336 = select i1 %cmp4.i.i.i335, i64 %35, i64 %30 + %32 = xor i32 %0, -1 + %33 = add i32 %31, %32 + %34 = zext nneg i32 %33 to i64 + %35 = add i64 %30, 1 + %36 = add i64 %35, %34 br label %cleanup268 if.else198: ; preds = %if.else %inc.i.i338 = add i64 %it.coerce, 1 %sub206 = sub nsw i32 0, %add - %36 = load i32, ptr %specs_, align 8, !tbaa !3643 - %37 = tail call i32 @llvm.smin.i32(i32 %36, i32 %sub206) - %cmp209372 = icmp slt i32 %36, 0 - %num_zeros205.0 = select i1 %cmp209372, i32 %sub206, i32 %37 - %38 = and i32 %bf.load, 2097152 - %bf.cast224.not301 = icmp eq i32 %38, 0 + %37 = load i32, ptr %specs_, align 8, !tbaa !3643 + %38 = tail call i32 @llvm.smin.i32(i32 %37, i32 %sub206) + %cmp209372 = icmp slt i32 %37, 0 + %num_zeros205.0 = select i1 %cmp209372, i32 %sub206, i32 %38 + %39 = and i32 %bf.load, 2097152 + %bf.cast224.not301 = icmp eq i32 %39, 0 %cmp227 = icmp sgt i32 %0, 0 %or.cond271 = select i1 %bf.cast224.not301, i1 %cmp227, i1 false br i1 %or.cond271, label %land.rhs228.preheader, label %if.end239 land.rhs228.preheader: ; preds = %if.else198 - %39 = load ptr, ptr %this, align 8, !tbaa !3635 - %invariant.gep = getelementptr i8, ptr %39, i64 -1 + %40 = load ptr, ptr %this, align 8, !tbaa !3635 + %invariant.gep = getelementptr i8, ptr %40, i64 -1 br label %land.rhs228 land.rhs228: ; preds = %while.body236, %land.rhs228.preheader %num_digits217.0 = phi i32 [ %dec237, %while.body236 ], [ %0, %land.rhs228.preheader ] - %40 = zext nneg i32 %num_digits217.0 to i64 - %gep = getelementptr i8, ptr %invariant.gep, i64 %40 - %41 = load i8, ptr %gep, align 1, !tbaa !53 - %cmp234 = icmp eq i8 %41, 48 + %41 = zext nneg i32 %num_digits217.0 to i64 + %gep = getelementptr i8, ptr %invariant.gep, i64 %41 + %42 = load i8, ptr %gep, align 1, !tbaa !53 + %cmp234 = icmp eq i8 %42, 48 br i1 %cmp234, label %while.body236, label %if.then243 while.body236: ; preds = %land.rhs228 @@ -230993,27 +230987,27 @@ if.end239.if.then243_crit_edge: ; preds = %if.end239 br label %if.then243 if.then243: ; preds = %land.rhs228, %if.end239.if.then243_crit_edge - %42 = phi ptr [ %.pre, %if.end239.if.then243_crit_edge ], [ %39, %land.rhs228 ] + %43 = phi ptr [ %.pre, %if.end239.if.then243_crit_edge ], [ %40, %land.rhs228 ] %num_digits217.1369 = phi i32 [ %num_digits217.1, %if.end239.if.then243_crit_edge ], [ %num_digits217.0, %land.rhs228 ] %inc.i.i340 = add i64 %it.coerce, 2 %cmp4.i.i.i341 = icmp sgt i32 %num_zeros205.0, 0 - %43 = add nsw i32 %num_zeros205.0, -1 - %44 = zext nneg i32 %43 to i64 - %45 = add i64 %it.coerce, 3 - %46 = add i64 %45, %44 - %__first.sroa.0.0.lcssa.i.i.i342 = select i1 %cmp4.i.i.i341, i64 %46, i64 %inc.i.i340 + %44 = add nsw i32 %num_zeros205.0, -1 + %45 = zext nneg i32 %44 to i64 + %46 = add i64 %it.coerce, 3 + %47 = add i64 %46, %45 + %__first.sroa.0.0.lcssa.i.i.i342 = select i1 %cmp4.i.i.i341, i64 %47, i64 %inc.i.i340 %idx.ext259 = sext i32 %num_digits217.1369 to i64 - %add.ptr260 = getelementptr inbounds i8, ptr %42, i64 %idx.ext259 + %add.ptr260 = getelementptr inbounds i8, ptr %43, i64 %idx.ext259 %cmp.not7.i.i343 = icmp eq i32 %num_digits217.1369, 0 - %__first11.i.i344 = ptrtoint ptr %42 to i64 + %__first11.i.i344 = ptrtoint ptr %43 to i64 %__last10.i.i345 = ptrtoint ptr %add.ptr260 to i64 - %47 = sub i64 %__first.sroa.0.0.lcssa.i.i.i342, %__first11.i.i344 - %48 = add i64 %47, %__last10.i.i345 - %__result.sroa.0.0.lcssa.i.i346 = select i1 %cmp.not7.i.i343, i64 %__first.sroa.0.0.lcssa.i.i.i342, i64 %48 + %48 = sub i64 %__first.sroa.0.0.lcssa.i.i.i342, %__first11.i.i344 + %49 = add i64 %48, %__last10.i.i345 + %__result.sroa.0.0.lcssa.i.i346 = select i1 %cmp.not7.i.i343, i64 %__first.sroa.0.0.lcssa.i.i.i342, i64 %49 br label %cleanup268 cleanup268: ; preds = %if.then243, %if.end239, %if.then185, %if.end162, %while.end, %cleanup, %if.then94, %if.then57, %if.then - %retval.sroa.0.1 = phi i64 [ %inc.i.i64.i, %if.then ], [ %__result.sroa.0.0.lcssa.i.i328, %while.end ], [ %__first.sroa.0.0.lcssa.i.i.i336, %if.then185 ], [ %30, %if.end162 ], [ %__result.sroa.0.0.lcssa.i.i346, %if.then243 ], [ %inc.i.i338, %if.end239 ], [ %__first.sroa.0.0.lcssa.i.i.i312, %if.then57 ], [ %18, %cleanup ], [ %spec.select370, %if.then94 ] + %retval.sroa.0.1 = phi i64 [ %inc.i.i64.i, %if.then ], [ %__result.sroa.0.0.lcssa.i.i328, %while.end ], [ %36, %if.then185 ], [ %30, %if.end162 ], [ %__result.sroa.0.0.lcssa.i.i346, %if.then243 ], [ %inc.i.i338, %if.end239 ], [ %__first.sroa.0.0.lcssa.i.i.i312, %if.then57 ], [ %18, %cleanup ], [ %spec.select370, %if.then94 ] ret i64 %retval.sroa.0.1 } diff --git a/bench/fmt/optimized/compile-test.cc.ll b/bench/fmt/optimized/compile-test.cc.ll index 47daabfcdcf..bca04eb0fc9 100644 --- a/bench/fmt/optimized/compile-test.cc.ll +++ b/bench/fmt/optimized/compile-test.cc.ll @@ -44478,24 +44478,20 @@ _ZN3fmt3v106detail18to_nonnegative_intIdiTnNSt9enable_ifIXntsr3std11is_integralI br i1 %cmp, label %if.then6, label %if.end10 if.then6: ; preds = %_ZN3fmt3v106detail18to_nonnegative_intIdiTnNSt9enable_ifIXntsr3std11is_integralIT_EE5valueEiE4typeELi0EEET0_S4_S7_.exit - %sub = sub nsw i32 %width, %conv1.i.i %cmp.i9 = icmp eq i32 %pad, 1 br i1 %cmp.i9, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit, label %if.end.i if.end.i: ; preds = %if.then6 + %sub = sub nsw i32 %width, %conv1.i.i %cmp1.i10 = icmp eq i32 %pad, 3 %cond.i = select i1 %cmp1.i10, i8 32, i8 48 - %cmp2.i.i.i.i = icmp sgt i32 %sub, 0 - br i1 %cmp2.i.i.i.i, label %for.body.lr.ph.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit - -for.body.lr.ph.i.i.i.i: ; preds = %if.end.i %size_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 16 %capacity_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 24 %ptr_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 8 br label %for.body.i.i.i.i -for.body.i.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %for.body.lr.ph.i.i.i.i - %__n.addr.03.i.i.i.i = phi i32 [ %sub, %for.body.lr.ph.i.i.i.i ], [ %dec.i.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i ] +for.body.i.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.end.i + %__n.addr.03.i.i.i.i = phi i32 [ %sub, %if.end.i ], [ %dec.i.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i ] %15 = load i64, ptr %size_.i.i.i.i.i.i, align 8 %add.i.i.i.i.i.i = add i64 %15, 1 %16 = load i64, ptr %capacity_.i.i.i.i.i.i.i, align 8 @@ -44521,7 +44517,7 @@ _ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc %cmp.i.i.i.i11 = icmp sgt i32 %__n.addr.03.i.i.i.i, 1 br i1 %cmp.i.i.i.i11, label %for.body.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit, !llvm.loop !490 -_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.then6, %if.end.i +_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.then6 store ptr %agg.tmp.sroa.0.0.copyload, ptr %out, align 8 br label %if.end10 diff --git a/bench/fmt/optimized/enforce-checks-test.cc.ll b/bench/fmt/optimized/enforce-checks-test.cc.ll index 47c4c523b4f..79de68836e7 100644 --- a/bench/fmt/optimized/enforce-checks-test.cc.ll +++ b/bench/fmt/optimized/enforce-checks-test.cc.ll @@ -37121,24 +37121,20 @@ _ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_ br i1 %cmp, label %if.then6, label %if.end10 if.then6: ; preds = %_ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_EE5valueEiE4typeELi0EEET0_S4_S7_.exit - %sub = sub nsw i32 %width, %conv1.i.i %cmp.i8 = icmp eq i32 %pad, 1 br i1 %cmp.i8, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit, label %if.end.i if.end.i: ; preds = %if.then6 + %sub = sub nsw i32 %width, %conv1.i.i %cmp1.i = icmp eq i32 %pad, 3 %cond.i = select i1 %cmp1.i, i8 32, i8 48 - %cmp2.i.i.i.i = icmp sgt i32 %sub, 0 - br i1 %cmp2.i.i.i.i, label %for.body.lr.ph.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit - -for.body.lr.ph.i.i.i.i: ; preds = %if.end.i %size_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 16 %capacity_.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 24 %ptr_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 8 br label %for.body.i.i.i.i -for.body.i.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %for.body.lr.ph.i.i.i.i - %__n.addr.03.i.i.i.i = phi i32 [ %sub, %for.body.lr.ph.i.i.i.i ], [ %dec.i.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i ] +for.body.i.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.end.i + %__n.addr.03.i.i.i.i = phi i32 [ %sub, %if.end.i ], [ %dec.i.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i ] %9 = load i64, ptr %size_.i.i.i.i.i.i, align 8 %add.i.i.i.i.i.i = add i64 %9, 1 %10 = load i64, ptr %capacity_.i.i.i.i.i.i.i, align 8 @@ -37164,7 +37160,7 @@ _ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc %cmp.i.i.i.i9 = icmp sgt i32 %__n.addr.03.i.i.i.i, 1 br i1 %cmp.i.i.i.i9, label %for.body.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit, !llvm.loop !322 -_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.then6, %if.end.i +_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIcLm500ESaIcEEEEEET_S8_NS1_8pad_typeEi.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt3v1019basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i.i, %if.then6 store ptr %agg.tmp.sroa.0.0.copyload, ptr %out, align 8 br label %if.end10 @@ -43232,13 +43228,11 @@ _ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_ br i1 %cmp, label %if.then6, label %if.end10 if.then6: ; preds = %_ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_EE5valueEiE4typeELi0EEET0_S4_S7_.exit - %sub = sub nsw i32 %width, %conv1.i.i - %cmp.i8 = icmp ne i32 %pad, 1 - %cmp2.i.i.i.i = icmp sgt i32 %sub, 0 - %or.cond.i9 = and i1 %cmp.i8, %cmp2.i.i.i.i - br i1 %or.cond.i9, label %for.body.lr.ph.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEEET_S8_NS1_8pad_typeEi.exit + %cmp.i8.not = icmp eq i32 %pad, 1 + br i1 %cmp.i8.not, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEEET_S8_NS1_8pad_typeEi.exit, label %for.body.lr.ph.i.i.i.i for.body.lr.ph.i.i.i.i: ; preds = %if.then6 + %sub = sub nsw i32 %width, %conv1.i.i %cmp1.i = icmp eq i32 %pad, 3 %conv.i.i.i.i = select i1 %cmp1.i, i32 32, i32 48 %size_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 16 diff --git a/bench/fmt/optimized/xchar-test.cc.ll b/bench/fmt/optimized/xchar-test.cc.ll index b60bfdc9473..74c11a9f7d0 100644 --- a/bench/fmt/optimized/xchar-test.cc.ll +++ b/bench/fmt/optimized/xchar-test.cc.ll @@ -101210,13 +101210,11 @@ _ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_ br i1 %cmp, label %if.then6, label %if.end10 if.then6: ; preds = %_ZN3fmt3v106detail18to_nonnegative_intIliTnNSt9enable_ifIXsr3std11is_integralIT_EE5valueEiE4typeELi0EEET0_S4_S7_.exit - %sub = sub nsw i32 %width, %conv1.i.i - %cmp.i8 = icmp ne i32 %pad, 1 - %cmp2.i.i.i.i = icmp sgt i32 %sub, 0 - %or.cond.i9 = and i1 %cmp.i8, %cmp2.i.i.i.i - br i1 %or.cond.i9, label %for.body.lr.ph.i.i.i.i, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEEET_S8_NS1_8pad_typeEi.exit + %cmp.i8.not = icmp eq i32 %pad, 1 + br i1 %cmp.i8.not, label %_ZN3fmt3v106detail13write_paddingISt20back_insert_iteratorINS0_19basic_memory_bufferIwLm500ESaIwEEEEEET_S8_NS1_8pad_typeEi.exit, label %for.body.lr.ph.i.i.i.i for.body.lr.ph.i.i.i.i: ; preds = %if.then6 + %sub = sub nsw i32 %width, %conv1.i.i %cmp1.i = icmp eq i32 %pad, 3 %conv.i.i.i.i = select i1 %cmp1.i, i32 32, i32 48 %size_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 16 diff --git a/bench/folly/optimized/JSONSchema.cpp.ll b/bench/folly/optimized/JSONSchema.cpp.ll index a5625893073..97b5457e150 100644 --- a/bench/folly/optimized/JSONSchema.cpp.ll +++ b/bench/folly/optimized/JSONSchema.cpp.ll @@ -25562,9 +25562,7 @@ if.else: ; preds = %_ZStplRKSt15_Deque_ %_M_node5.i.i42.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.i.i.i.i.i.i.i314, i64 24 %40 = load ptr, ptr %_M_node5.i.i42.i.i.i.i.i.i.i, align 8, !tbaa !1105, !noalias !1253 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i.i.i.i.i.i.i314), !noalias !1234 - %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.i.i294 to i64 - %cmp20.i.i.i.i.i.i.i = icmp sgt i64 %sub, 0 - br i1 %cmp20.i.i.i.i.i.i.i, label %while.body.i.i.i.i.i.i.i, label %invoke.cont38 + br label %while.body.i.i.i.i.i.i.i while.body.i.i.i.i.i.i.i: ; preds = %.noexc, %_ZNSt15_Deque_iteratorIcRcPcEpLEl.exit.i.i.i.i.i.i.i %agg.tmp2.sroa.0.0.i.i.i.i.i.i = phi ptr [ %storemerge.i.i.i.i.i.i.i.i, %_ZNSt15_Deque_iteratorIcRcPcEpLEl.exit.i.i.i.i.i.i.i ], [ %37, %.noexc ] @@ -25627,7 +25625,8 @@ _ZNSt15_Deque_iteratorIcRcPcEpLEl.exit.i.i.i.i.i.i.i: ; preds = %cond.end.i.i.i. %cmp.i.i.i.i.i.i.i = icmp sgt i64 %sub.i.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i.i, label %while.body.i.i.i.i.i.i.i, label %invoke.cont38, !llvm.loop !1269 -invoke.cont38: ; preds = %_ZNSt15_Deque_iteratorIcRcPcEpLEl.exit.i.i.i.i.i.i.i, %.noexc +invoke.cont38: ; preds = %_ZNSt15_Deque_iteratorIcRcPcEpLEl.exit.i.i.i.i.i.i.i + %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.i.i294 to i64 store ptr %storemerge.i.i.i.i, ptr %_M_start, align 8, !tbaa !22 store ptr %__new_start.sroa.8.0, ptr %_M_first.i166, align 8, !tbaa !22 store ptr %__new_start.sroa.12.0, ptr %_M_last.i, align 8, !tbaa !22 diff --git a/bench/folly/optimized/LoggerDB.cpp.ll b/bench/folly/optimized/LoggerDB.cpp.ll index 058535c6920..1a6b29af82f 100644 --- a/bench/folly/optimized/LoggerDB.cpp.ll +++ b/bench/folly/optimized/LoggerDB.cpp.ll @@ -14189,7 +14189,7 @@ ehcleanup: ; preds = %lpad57 br i1 %cleanup.isactive.0, label %cleanup.action, label %ehcleanup197 cleanup.action: ; preds = %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %ehcleanup.thread - %.merged52 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] + %.merged53 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] call void @__cxa_free_exception(ptr %exception) #28 br label %ehcleanup197 @@ -14502,7 +14502,7 @@ ehcleanup79: ; preds = %lpad75 br i1 %cleanup.isactive77.0, label %cleanup.action82, label %ehcleanup197 cleanup.action82: ; preds = %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %ehcleanup79.thread - %.merged51 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] + %.merged52 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] call void @__cxa_free_exception(ptr %exception70) #28 br label %ehcleanup197 @@ -14607,7 +14607,7 @@ ehcleanup121: ; preds = %lpad117 br i1 %cleanup.isactive119.0, label %cleanup.action124, label %ehcleanup197 cleanup.action124: ; preds = %ehcleanup121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378, %ehcleanup121.thread - %.merged53 = phi { ptr, i32 } [ %91, %ehcleanup121.thread ], [ %92, %ehcleanup121 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ] + %.merged54 = phi { ptr, i32 } [ %91, %ehcleanup121.thread ], [ %92, %ehcleanup121 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ] call void @__cxa_free_exception(ptr %exception110) #28 br label %ehcleanup197 @@ -15372,17 +15372,17 @@ ehcleanup193: ; preds = %lpad181, %cleanup.d br label %ehcleanup197 ehcleanup197: ; preds = %lpad89.loopexit, %lpad89.loopexit.split-lp, %ehcleanup193, %cleanup.action124, %ehcleanup121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378, %lpad86, %cleanup.action82, %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %lpad63, %cleanup.action, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.merged50 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged51, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged52, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged53, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] + %.merged51 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged52, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged53, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged54, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] call void @_ZN5folly16LogHandlerConfigD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %updatedConfig) #28 br label %ehcleanup199 ehcleanup199: ; preds = %ehcleanup197, %lpad45 - %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup197 ], [ %35, %lpad45 ] + %.merged50 = phi { ptr, i32 } [ %.merged51, %ehcleanup197 ], [ %35, %lpad45 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %updatedConfig) #28 br label %ehcleanup200 ehcleanup200: ; preds = %ehcleanup199, %lpad31 - %.merged = phi { ptr, i32 } [ %.merged49, %ehcleanup199 ], [ %33, %lpad31 ] + %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup199 ], [ %33, %lpad31 ] call void @_ZNSt12__shared_ptrIN5folly10LogHandlerELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %oldHandler) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %oldHandler) #28 br label %eh.resume @@ -15680,7 +15680,7 @@ ehcleanup262: ; preds = %lpad258 br i1 %cleanup.isactive260.0, label %cleanup.action265, label %eh.resume cleanup.action265: ; preds = %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup262.thread.body - %.merged54 = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %.merged = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] call void @__cxa_free_exception(ptr %exception253) #28 br label %eh.resume @@ -15695,7 +15695,7 @@ cleanup: ; preds = %if.end267.us, %if.e br i1 %cmp.i598.not, label %for.cond.cleanup222, label %for.body223 eh.resume: ; preds = %cleanup.action265, %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup200, %lpad - %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged, %ehcleanup200 ], [ %.merged54, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged49, %ehcleanup200 ], [ %.merged, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] resume { ptr, i32 } %lpad.val288.merged terminate.lpad: ; preds = %cleanup.done177 diff --git a/bench/folly/optimized/Singleton.cpp.ll b/bench/folly/optimized/Singleton.cpp.ll index 3ce1169dd00..46c91a34d24 100644 --- a/bench/folly/optimized/Singleton.cpp.ll +++ b/bench/folly/optimized/Singleton.cpp.ll @@ -19727,17 +19727,13 @@ if.end: ; preds = %_ZNSt20back_insert_ if.then6: ; preds = %if.end %sub = sub nsw i32 %width, %conv1.i.i - %cmp5.i.i.i = icmp sgt i32 %sub, 0 - br i1 %cmp5.i.i.i, label %for.body.lr.ph.i.i.i, label %_ZSt6fill_nISt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEicET_S7_T0_RKT1_.exit - -for.body.lr.ph.i.i.i: ; preds = %if.then6 %size_.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 16 %capacity_.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 24 %ptr_.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.copyload, i64 8 br label %for.body.i.i.i -for.body.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i, %for.body.lr.ph.i.i.i - %__n.addr.06.i.i.i = phi i32 [ %sub, %for.body.lr.ph.i.i.i ], [ %dec.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i ] +for.body.i.i.i: ; preds = %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i, %if.then6 + %__n.addr.06.i.i.i = phi i32 [ %sub, %if.then6 ], [ %dec.i.i.i, %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i ] %8 = load i64, ptr %size_.i.i.i.i.i, align 8, !tbaa !580 %add.i.i.i.i.i = add i64 %8, 1 %9 = load i64, ptr %capacity_.i.i.i.i.i.i, align 8, !tbaa !561 @@ -19763,7 +19759,7 @@ _ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc. %cmp.i.i.i = icmp sgt i32 %__n.addr.06.i.i.i, 1 br i1 %cmp.i.i.i, label %for.body.i.i.i, label %_ZSt6fill_nISt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEicET_S7_T0_RKT1_.exit, !llvm.loop !640 -_ZSt6fill_nISt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEicET_S7_T0_RKT1_.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i, %if.then6 +_ZSt6fill_nISt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEicET_S7_T0_RKT1_.exit: ; preds = %_ZNSt20back_insert_iteratorIN3fmt2v919basic_memory_bufferIcLm500ESaIcEEEEaSERKc.exit.i.i.i store ptr %agg.tmp.sroa.0.0.copyload, ptr %out, align 8 br label %if.end11 diff --git a/bench/g2o/optimized/optimizable_graph.cpp.ll b/bench/g2o/optimized/optimizable_graph.cpp.ll index f29046b11f8..56ff3a5839d 100644 --- a/bench/g2o/optimized/optimizable_graph.cpp.ll +++ b/bench/g2o/optimized/optimizable_graph.cpp.ll @@ -8927,157 +8927,155 @@ _ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_6Stri br i1 %3, label %.lr.ph104.split.us, label %.lr.ph104.split .lr.ph104.split.us: ; preds = %.lr.ph104, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us - %.0103.us = phi i64 [ %238, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us ], [ 0, %.lr.ph104 ] + %.0103.us = phi i64 [ %236, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us ], [ 0, %.lr.ph104 ] %186 = sub nsw i64 %7, %.0103.us %187 = load ptr, ptr %0, align 8, !noalias !84 %188 = getelementptr inbounds double, ptr %187, i64 %.0103.us %189 = icmp eq i64 %7, %.0103.us - br i1 %189, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, label %190 - -190: ; preds = %.lr.ph104.split.us - %191 = load double, ptr %188, align 8 - %192 = icmp sgt i64 %186, 1 - br i1 %192, label %.lr.ph.i.i.i.i77.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us - -.lr.ph.i.i.i.i77.us: ; preds = %190, %.lr.ph.i.i.i.i77.us - %.sroa.0.0.i.i.us = phi i64 [ %.sroa.0.1.i.i.us, %.lr.ph.i.i.i.i77.us ], [ 0, %190 ] - %193 = phi double [ %197, %.lr.ph.i.i.i.i77.us ], [ %191, %190 ] - %.02123.i.i.i.i.us = phi i64 [ %198, %.lr.ph.i.i.i.i77.us ], [ 1, %190 ] - %194 = getelementptr double, ptr %188, i64 %.02123.i.i.i.i.us - %195 = load double, ptr %194, align 8 - %196 = fcmp olt double %195, %193 - %.sroa.0.1.i.i.us = select i1 %196, i64 %.02123.i.i.i.i.us, i64 %.sroa.0.0.i.i.us - %197 = select i1 %196, double %195, double %193 - %198 = add nuw nsw i64 %.02123.i.i.i.i.us, 1 - %exitcond.not.i.i.us = icmp eq i64 %198, %186 + br i1 %189, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, label %.lr.ph.i.i.i.i77.preheader.us + +.lr.ph.i.i.i.i77.preheader.us: ; preds = %.lr.ph104.split.us + %190 = load double, ptr %188, align 8 + br label %.lr.ph.i.i.i.i77.us + +.lr.ph.i.i.i.i77.us: ; preds = %.lr.ph.i.i.i.i77.us, %.lr.ph.i.i.i.i77.preheader.us + %.sroa.0.0.i.i.us = phi i64 [ %.sroa.0.1.i.i.us, %.lr.ph.i.i.i.i77.us ], [ 0, %.lr.ph.i.i.i.i77.preheader.us ] + %191 = phi double [ %195, %.lr.ph.i.i.i.i77.us ], [ %190, %.lr.ph.i.i.i.i77.preheader.us ] + %.02123.i.i.i.i.us = phi i64 [ %196, %.lr.ph.i.i.i.i77.us ], [ 1, %.lr.ph.i.i.i.i77.preheader.us ] + %192 = getelementptr double, ptr %188, i64 %.02123.i.i.i.i.us + %193 = load double, ptr %192, align 8 + %194 = fcmp olt double %193, %191 + %.sroa.0.1.i.i.us = select i1 %194, i64 %.02123.i.i.i.i.us, i64 %.sroa.0.0.i.i.us + %195 = select i1 %194, double %193, double %191 + %196 = add nuw nsw i64 %.02123.i.i.i.i.us, 1 + %exitcond.not.i.i.us = icmp eq i64 %196, %186 br i1 %exitcond.not.i.i.us, label %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us, label %.lr.ph.i.i.i.i77.us, !llvm.loop !87 _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us: ; preds = %.lr.ph.i.i.i.i77.us %.not91.us = icmp eq i64 %.sroa.0.1.i.i.us, 0 - br i1 %.not91.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, label %199 - -199: ; preds = %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us - %200 = add nuw nsw i64 %.sroa.0.1.i.i.us, %.0103.us - %201 = getelementptr inbounds double, ptr %187, i64 %200 - %202 = load double, ptr %201, align 8 - store double %202, ptr %188, align 8 - store double %191, ptr %201, align 8 - %203 = load ptr, ptr %4, align 8, !noalias !88 - %204 = load i64, ptr %185, align 8, !noalias !88 - %205 = mul nsw i64 %204, %.0103.us - %206 = getelementptr inbounds double, ptr %203, i64 %205 - %207 = mul nsw i64 %204, %200 - %208 = getelementptr inbounds double, ptr %203, i64 %207 - %209 = ptrtoint ptr %206 to i64 - %210 = and i64 %209, 7 - %.not.i.i.i.i.i.i.i.us = icmp eq i64 %210, 0 - br i1 %.not.i.i.i.i.i.i.i.us, label %211, label %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us - -211: ; preds = %199 - %212 = lshr exact i64 %209, 3 - %213 = and i64 %212, 1 - %214 = tail call i64 @llvm.smin.i64(i64 %213, i64 %204) + br i1 %.not91.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, label %197 + +197: ; preds = %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us + %198 = add nuw nsw i64 %.sroa.0.1.i.i.us, %.0103.us + %199 = getelementptr inbounds double, ptr %187, i64 %198 + %200 = load double, ptr %199, align 8 + store double %200, ptr %188, align 8 + store double %190, ptr %199, align 8 + %201 = load ptr, ptr %4, align 8, !noalias !88 + %202 = load i64, ptr %185, align 8, !noalias !88 + %203 = mul nsw i64 %202, %.0103.us + %204 = getelementptr inbounds double, ptr %201, i64 %203 + %205 = mul nsw i64 %202, %198 + %206 = getelementptr inbounds double, ptr %201, i64 %205 + %207 = ptrtoint ptr %204 to i64 + %208 = and i64 %207, 7 + %.not.i.i.i.i.i.i.i.us = icmp eq i64 %208, 0 + br i1 %.not.i.i.i.i.i.i.i.us, label %209, label %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us + +209: ; preds = %197 + %210 = lshr exact i64 %207, 3 + %211 = and i64 %210, 1 + %212 = tail call i64 @llvm.smin.i64(i64 %211, i64 %202) br label %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us -_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us: ; preds = %211, %199 - %.0.i.i.i.i.i.i.i.us = phi i64 [ %214, %211 ], [ %204, %199 ] - %215 = sub nsw i64 %204, %.0.i.i.i.i.i.i.i.us - %216 = sdiv i64 %215, 2 - %217 = shl nsw i64 %216, 1 - %218 = add nsw i64 %217, %.0.i.i.i.i.i.i.i.us - %219 = icmp sgt i64 %.0.i.i.i.i.i.i.i.us, 0 - br i1 %219, label %.lr.ph.i.i.i.i.i.i.i.us, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us +_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us: ; preds = %209, %197 + %.0.i.i.i.i.i.i.i.us = phi i64 [ %212, %209 ], [ %202, %197 ] + %213 = sub nsw i64 %202, %.0.i.i.i.i.i.i.i.us + %214 = sdiv i64 %213, 2 + %215 = shl nsw i64 %214, 1 + %216 = add nsw i64 %215, %.0.i.i.i.i.i.i.i.us + %217 = icmp sgt i64 %.0.i.i.i.i.i.i.i.us, 0 + br i1 %217, label %.lr.ph.i.i.i.i.i.i.i.us, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us .lr.ph.i.i.i.i.i.i.i.us: ; preds = %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us, %.lr.ph.i.i.i.i.i.i.i.us - %.05.i.i.i.i.i.i.i.us = phi i64 [ %224, %.lr.ph.i.i.i.i.i.i.i.us ], [ 0, %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us ] - %220 = getelementptr inbounds double, ptr %206, i64 %.05.i.i.i.i.i.i.i.us - %221 = getelementptr inbounds double, ptr %208, i64 %.05.i.i.i.i.i.i.i.us - %222 = load double, ptr %220, align 8 - %223 = load double, ptr %221, align 8 - store double %223, ptr %220, align 8 - store double %222, ptr %221, align 8 - %224 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.us, 1 - %exitcond.not.i.i.i.i.i.i.i.us = icmp eq i64 %224, %.0.i.i.i.i.i.i.i.us + %.05.i.i.i.i.i.i.i.us = phi i64 [ %222, %.lr.ph.i.i.i.i.i.i.i.us ], [ 0, %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us ] + %218 = getelementptr inbounds double, ptr %204, i64 %.05.i.i.i.i.i.i.i.us + %219 = getelementptr inbounds double, ptr %206, i64 %.05.i.i.i.i.i.i.i.us + %220 = load double, ptr %218, align 8 + %221 = load double, ptr %219, align 8 + store double %221, ptr %218, align 8 + store double %220, ptr %219, align 8 + %222 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.us, 1 + %exitcond.not.i.i.i.i.i.i.i.us = icmp eq i64 %222, %.0.i.i.i.i.i.i.i.us br i1 %exitcond.not.i.i.i.i.i.i.i.us, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us, label %.lr.ph.i.i.i.i.i.i.i.us, !llvm.loop !91 _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us: ; preds = %.lr.ph.i.i.i.i.i.i.i.us, %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.us - %225 = icmp sgt i64 %215, 1 - br i1 %225, label %.lr.ph.i.i.i.i.i.i.us, label %._crit_edge.i.i.i.i.i.i.us + %223 = icmp sgt i64 %213, 1 + br i1 %223, label %.lr.ph.i.i.i.i.i.i.us, label %._crit_edge.i.i.i.i.i.i.us .lr.ph.i.i.i.i.i.i.us: ; preds = %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us, %.lr.ph.i.i.i.i.i.i.us - %.021.i.i.i.i.i.i.us = phi i64 [ %230, %.lr.ph.i.i.i.i.i.i.us ], [ %.0.i.i.i.i.i.i.i.us, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us ] - %226 = getelementptr inbounds double, ptr %208, i64 %.021.i.i.i.i.i.i.us - %227 = load <2 x double>, ptr %226, align 1 - %228 = getelementptr inbounds double, ptr %206, i64 %.021.i.i.i.i.i.i.us - %229 = load <2 x double>, ptr %228, align 16 - store <2 x double> %229, ptr %226, align 1 - store <2 x double> %227, ptr %228, align 16 - %230 = add nsw i64 %.021.i.i.i.i.i.i.us, 2 - %231 = icmp slt i64 %230, %218 - br i1 %231, label %.lr.ph.i.i.i.i.i.i.us, label %._crit_edge.i.i.i.i.i.i.us, !llvm.loop !92 + %.021.i.i.i.i.i.i.us = phi i64 [ %228, %.lr.ph.i.i.i.i.i.i.us ], [ %.0.i.i.i.i.i.i.i.us, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us ] + %224 = getelementptr inbounds double, ptr %206, i64 %.021.i.i.i.i.i.i.us + %225 = load <2 x double>, ptr %224, align 1 + %226 = getelementptr inbounds double, ptr %204, i64 %.021.i.i.i.i.i.i.us + %227 = load <2 x double>, ptr %226, align 16 + store <2 x double> %227, ptr %224, align 1 + store <2 x double> %225, ptr %226, align 16 + %228 = add nsw i64 %.021.i.i.i.i.i.i.us, 2 + %229 = icmp slt i64 %228, %216 + br i1 %229, label %.lr.ph.i.i.i.i.i.i.us, label %._crit_edge.i.i.i.i.i.i.us, !llvm.loop !92 ._crit_edge.i.i.i.i.i.i.us: ; preds = %.lr.ph.i.i.i.i.i.i.us, %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEEESA_NS0_14swap_assign_opIdEELi0EEEEEvRT_ll.exit.i.i.i.i.i.i.us - %232 = icmp slt i64 %218, %204 - br i1 %232, label %.lr.ph.i17.i.i.i.i.i.i.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us + %230 = icmp slt i64 %216, %202 + br i1 %230, label %.lr.ph.i17.i.i.i.i.i.i.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us .lr.ph.i17.i.i.i.i.i.i.us: ; preds = %._crit_edge.i.i.i.i.i.i.us, %.lr.ph.i17.i.i.i.i.i.i.us - %.05.i18.i.i.i.i.i.i.us = phi i64 [ %237, %.lr.ph.i17.i.i.i.i.i.i.us ], [ %218, %._crit_edge.i.i.i.i.i.i.us ] - %233 = getelementptr inbounds double, ptr %206, i64 %.05.i18.i.i.i.i.i.i.us - %234 = getelementptr inbounds double, ptr %208, i64 %.05.i18.i.i.i.i.i.i.us - %235 = load double, ptr %233, align 8 - %236 = load double, ptr %234, align 8 - store double %236, ptr %233, align 8 - store double %235, ptr %234, align 8 - %237 = add nsw i64 %.05.i18.i.i.i.i.i.i.us, 1 - %exitcond.not.i19.i.i.i.i.i.i.us = icmp eq i64 %237, %204 + %.05.i18.i.i.i.i.i.i.us = phi i64 [ %235, %.lr.ph.i17.i.i.i.i.i.i.us ], [ %216, %._crit_edge.i.i.i.i.i.i.us ] + %231 = getelementptr inbounds double, ptr %204, i64 %.05.i18.i.i.i.i.i.i.us + %232 = getelementptr inbounds double, ptr %206, i64 %.05.i18.i.i.i.i.i.i.us + %233 = load double, ptr %231, align 8 + %234 = load double, ptr %232, align 8 + store double %234, ptr %231, align 8 + store double %233, ptr %232, align 8 + %235 = add nsw i64 %.05.i18.i.i.i.i.i.i.us, 1 + %exitcond.not.i19.i.i.i.i.i.i.us = icmp eq i64 %235, %202 br i1 %exitcond.not.i19.i.i.i.i.i.i.us, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, label %.lr.ph.i17.i.i.i.i.i.i.us, !llvm.loop !91 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us: ; preds = %.lr.ph.i17.i.i.i.i.i.i.us, %._crit_edge.i.i.i.i.i.i.us, %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us, %190, %.lr.ph104.split.us - %238 = add nuw nsw i64 %.0103.us, 1 - %exitcond113.not = icmp eq i64 %238, %8 +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us: ; preds = %.lr.ph.i17.i.i.i.i.i.i.us, %._crit_edge.i.i.i.i.i.i.us, %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit.us, %.lr.ph104.split.us + %236 = add nuw nsw i64 %.0103.us, 1 + %exitcond113.not = icmp eq i64 %236, %8 br i1 %exitcond113.not, label %.loopexit, label %.lr.ph104.split.us, !llvm.loop !93 .lr.ph104.split: ; preds = %.lr.ph104, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit - %.0103 = phi i64 [ %256, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit ], [ 0, %.lr.ph104 ] - %239 = sub nsw i64 %7, %.0103 - %240 = load ptr, ptr %0, align 8, !noalias !84 - %241 = getelementptr inbounds double, ptr %240, i64 %.0103 - %242 = icmp eq i64 %7, %.0103 - br i1 %242, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %243 - -243: ; preds = %.lr.ph104.split - %244 = load double, ptr %241, align 8 - %245 = icmp sgt i64 %239, 1 - br i1 %245, label %.lr.ph.i.i.i.i77, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit - -.lr.ph.i.i.i.i77: ; preds = %243, %.lr.ph.i.i.i.i77 - %.sroa.0.0.i.i = phi i64 [ %.sroa.0.1.i.i, %.lr.ph.i.i.i.i77 ], [ 0, %243 ] - %246 = phi double [ %250, %.lr.ph.i.i.i.i77 ], [ %244, %243 ] - %.02123.i.i.i.i = phi i64 [ %251, %.lr.ph.i.i.i.i77 ], [ 1, %243 ] - %247 = getelementptr double, ptr %241, i64 %.02123.i.i.i.i - %248 = load double, ptr %247, align 8 - %249 = fcmp olt double %248, %246 - %.sroa.0.1.i.i = select i1 %249, i64 %.02123.i.i.i.i, i64 %.sroa.0.0.i.i - %250 = select i1 %249, double %248, double %246 - %251 = add nuw nsw i64 %.02123.i.i.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %251, %239 + %.0103 = phi i64 [ %252, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit ], [ 0, %.lr.ph104 ] + %237 = sub nsw i64 %7, %.0103 + %238 = load ptr, ptr %0, align 8, !noalias !84 + %239 = getelementptr inbounds double, ptr %238, i64 %.0103 + %240 = icmp eq i64 %7, %.0103 + br i1 %240, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %.lr.ph.i.i.i.i77.preheader + +.lr.ph.i.i.i.i77.preheader: ; preds = %.lr.ph104.split + %241 = load double, ptr %239, align 8 + br label %.lr.ph.i.i.i.i77 + +.lr.ph.i.i.i.i77: ; preds = %.lr.ph.i.i.i.i77.preheader, %.lr.ph.i.i.i.i77 + %.sroa.0.0.i.i = phi i64 [ %.sroa.0.1.i.i, %.lr.ph.i.i.i.i77 ], [ 0, %.lr.ph.i.i.i.i77.preheader ] + %242 = phi double [ %246, %.lr.ph.i.i.i.i77 ], [ %241, %.lr.ph.i.i.i.i77.preheader ] + %.02123.i.i.i.i = phi i64 [ %247, %.lr.ph.i.i.i.i77 ], [ 1, %.lr.ph.i.i.i.i77.preheader ] + %243 = getelementptr double, ptr %239, i64 %.02123.i.i.i.i + %244 = load double, ptr %243, align 8 + %245 = fcmp olt double %244, %242 + %.sroa.0.1.i.i = select i1 %245, i64 %.02123.i.i.i.i, i64 %.sroa.0.0.i.i + %246 = select i1 %245, double %244, double %242 + %247 = add nuw nsw i64 %.02123.i.i.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %247, %237 br i1 %exitcond.not.i.i, label %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit, label %.lr.ph.i.i.i.i77, !llvm.loop !87 _ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit: ; preds = %.lr.ph.i.i.i.i77 %.not91 = icmp eq i64 %.sroa.0.1.i.i, 0 - br i1 %.not91, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %252 - -252: ; preds = %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit - %253 = getelementptr inbounds double, ptr %240, i64 %.sroa.0.1.i.i - %254 = getelementptr inbounds double, ptr %253, i64 %.0103 - %255 = load double, ptr %254, align 8 - store double %255, ptr %241, align 8 - store double %244, ptr %254, align 8 + br i1 %.not91, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit, label %248 + +248: ; preds = %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit + %249 = getelementptr inbounds double, ptr %238, i64 %.sroa.0.1.i.i + %250 = getelementptr inbounds double, ptr %249, i64 %.0103 + %251 = load double, ptr %250, align 8 + store double %251, ptr %239, align 8 + store double %241, ptr %250, align 8 br label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit: ; preds = %252, %243, %.lr.ph104.split, %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit - %256 = add nuw nsw i64 %.0103, 1 - %exitcond110.not = icmp eq i64 %256, %8 +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit: ; preds = %248, %.lr.ph104.split, %_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE8minCoeffIlEEdPT_.exit + %252 = add nuw nsw i64 %.0103, 1 + %exitcond110.not = icmp eq i64 %252, %8 br i1 %exitcond110.not, label %.loopexit, label %.lr.ph104.split, !llvm.loop !93 .loopexit: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELi1ELb1EEEE4swapIS4_EEvRKNS0_IT_EE.exit.us, %.critedge.thread.thread, %.critedge.thread diff --git a/bench/git/optimized/mv.ll b/bench/git/optimized/mv.ll index 0969135045c..5bb9d7b1c9f 100644 --- a/bench/git/optimized/mv.ll +++ b/bench/git/optimized/mv.ll @@ -332,7 +332,7 @@ if.then132: ; preds = %if.end128 call void @free(ptr noundef %retval.0.i) #11 br label %for.body.lr.ph -for.body.lr.ph: ; preds = %if.end128, %if.then132 +for.body.lr.ph: ; preds = %if.then132, %if.end128 %st_mode219 = getelementptr inbounds i8, ptr %st, i64 24 %buf.i = getelementptr inbounds i8, ptr %submodule_dotgit.i, i64 16 br label %for.body @@ -962,21 +962,13 @@ remove_entry: ; preds = %if.end415.thread, % br i1 %cmp428, label %if.then430, label %for.inc459 if.then430: ; preds = %remove_entry - %sub432 = sub nsw i32 %dec427, %i.0534 - %add.ptr437 = getelementptr inbounds i8, ptr %arrayidx136, i64 8 - %conv438 = sext i32 %sub432 to i64 %tobool.not.i361 = icmp eq i32 %dec427, %i.0534 br i1 %tobool.not.i361, label %move_array.exit391, label %if.then.i362 if.then.i362: ; preds = %if.then430 - %mul.ov.i.i = icmp slt i32 %sub432, 0 - br i1 %mul.ov.i.i, label %if.then.i.i364, label %if.then.i366 - -if.then.i.i364: ; preds = %if.then.i362 - call void (ptr, ...) @die(ptr noundef nonnull @.str.36, i64 noundef range(i64 4, 9) 8, i64 noundef range(i64 -2147483646, 2147483648) %conv438) #12 - unreachable - -if.then.i366: ; preds = %if.then.i362 + %sub432 = sub nsw i32 %dec427, %i.0534 + %conv438 = sext i32 %sub432 to i64 + %add.ptr437 = getelementptr inbounds i8, ptr %arrayidx136, i64 8 %mul.i.i = shl nuw nsw i64 %conv438, 3 call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %arrayidx136, ptr nonnull readonly align 1 %add.ptr437, i64 %mul.i.i, i1 false) %add.ptr443 = getelementptr inbounds i8, ptr %arrayidx138, i64 8 @@ -990,7 +982,7 @@ if.then.i366: ; preds = %if.then.i362 call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr452, ptr nonnull readonly align 1 %add.ptr455, i64 %mul.i.i, i1 false) br label %move_array.exit391 -move_array.exit391: ; preds = %if.then430, %if.then.i366 +move_array.exit391: ; preds = %if.then430, %if.then.i362 %dec457 = add nsw i32 %i.0534, -1 br label %for.inc459 @@ -1026,7 +1018,7 @@ if.end467: ; preds = %if.then463, %for.en for.body471.lr.ph: ; preds = %if.end467 %force483 = getelementptr inbounds i8, ptr %state, i64 120 - %wide.trip.count577 = zext nneg i32 %argc.addr.3 to i64 + %wide.trip.count575 = zext nneg i32 %argc.addr.3 to i64 br label %for.body471 for.cond606.preheader.loopexit: ; preds = %for.inc603 @@ -1041,17 +1033,17 @@ for.cond606.preheader: ; preds = %for.cond606.prehead for.body609.lr.ph: ; preds = %for.cond606.preheader %buf = getelementptr inbounds i8, ptr %a_src_dir, i64 16 %len = getelementptr inbounds i8, ptr %a_src_dir, i64 8 - %wide.trip.count582 = zext nneg i32 %src_dir_nr.3 to i64 + %wide.trip.count580 = zext nneg i32 %src_dir_nr.3 to i64 br label %for.body609 for.body471: ; preds = %for.body471.lr.ph, %for.inc603 - %indvars.iv574 = phi i64 [ 0, %for.body471.lr.ph ], [ %indvars.iv.next575, %for.inc603 ] + %indvars.iv572 = phi i64 [ 0, %for.body471.lr.ph ], [ %indvars.iv.next573, %for.inc603 ] %gitmodules_modified.0544 = phi i32 [ 0, %for.body471.lr.ph ], [ %gitmodules_modified.1, %for.inc603 ] - %arrayidx474 = getelementptr inbounds ptr, ptr %source.3, i64 %indvars.iv574 + %arrayidx474 = getelementptr inbounds ptr, ptr %source.3, i64 %indvars.iv572 %83 = load ptr, ptr %arrayidx474, align 8 - %arrayidx477 = getelementptr inbounds ptr, ptr %destination.4, i64 %indvars.iv574 + %arrayidx477 = getelementptr inbounds ptr, ptr %destination.4, i64 %indvars.iv572 %84 = load ptr, ptr %arrayidx477, align 8 - %arrayidx479 = getelementptr inbounds i32, ptr %modes.3, i64 %indvars.iv574 + %arrayidx479 = getelementptr inbounds i32, ptr %modes.3, i64 %indvars.iv572 %85 = load i32, ptr %arrayidx479, align 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %state, ptr noundef nonnull align 8 dereferenceable(128) @__const.cmd_mv.state, i64 128, i1 false) store ptr @the_index, ptr %state, align 8 @@ -1109,7 +1101,7 @@ if.end507: ; preds = %if.then504 unreachable if.end509: ; preds = %if.end494, %land.lhs.true500 - %arrayidx511 = getelementptr inbounds ptr, ptr %submodule_gitfile.3, i64 %indvars.iv574 + %arrayidx511 = getelementptr inbounds ptr, ptr %submodule_gitfile.3, i64 %indvars.iv572 %91 = load ptr, ptr %arrayidx511, align 8 %tobool512.not = icmp eq ptr %91, null br i1 %tobool512.not, label %if.end526, label %if.then513 @@ -1233,13 +1225,13 @@ if.else592: ; preds = %if.then579 for.inc603: ; preds = %land.lhs.true552, %if.else570, %if.end543, %land.lhs.true576, %if.else592, %if.then588, %if.then555, %if.end526, %if.then504, %if.end491 %gitmodules_modified.1 = phi i32 [ %gitmodules_modified.0544, %if.end491 ], [ %gitmodules_modified.2, %if.end526 ], [ %gitmodules_modified.2, %if.then555 ], [ %gitmodules_modified.2, %land.lhs.true576 ], [ %gitmodules_modified.2, %if.else592 ], [ %gitmodules_modified.2, %if.then588 ], [ %gitmodules_modified.2, %if.else570 ], [ %gitmodules_modified.2, %if.end543 ], [ %gitmodules_modified.0544, %if.then504 ], [ %gitmodules_modified.2, %land.lhs.true552 ] - %indvars.iv.next575 = add nuw nsw i64 %indvars.iv574, 1 - %exitcond578.not = icmp eq i64 %indvars.iv.next575, %wide.trip.count577 - br i1 %exitcond578.not, label %for.cond606.preheader.loopexit, label %for.body471, !llvm.loop !8 + %indvars.iv.next573 = add nuw nsw i64 %indvars.iv572, 1 + %exitcond576.not = icmp eq i64 %indvars.iv.next573, %wide.trip.count575 + br i1 %exitcond576.not, label %for.cond606.preheader.loopexit, label %for.body471, !llvm.loop !8 for.body609: ; preds = %for.body609.lr.ph, %strbuf_setlen.exit - %indvars.iv579 = phi i64 [ 0, %for.body609.lr.ph ], [ %indvars.iv.next580, %strbuf_setlen.exit ] - %arrayidx611 = getelementptr inbounds ptr, ptr %src_dir.4, i64 %indvars.iv579 + %indvars.iv577 = phi i64 [ 0, %for.body609.lr.ph ], [ %indvars.iv.next578, %strbuf_setlen.exit ] + %arrayidx611 = getelementptr inbounds ptr, ptr %src_dir.4, i64 %indvars.iv577 %105 = load ptr, ptr %arrayidx611, align 8 %call.i399 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %105) #13 call void @strbuf_add(ptr noundef nonnull %a_src_dir, ptr noundef %105, i64 noundef %call.i399) #11 @@ -1265,9 +1257,9 @@ if.then4.i: ; preds = %if.end618 br label %strbuf_setlen.exit strbuf_setlen.exit: ; preds = %if.end618, %if.then4.i - %indvars.iv.next580 = add nuw nsw i64 %indvars.iv579, 1 - %exitcond583.not = icmp eq i64 %indvars.iv.next580, %wide.trip.count582 - br i1 %exitcond583.not, label %for.end621, label %for.body609, !llvm.loop !9 + %indvars.iv.next578 = add nuw nsw i64 %indvars.iv577, 1 + %exitcond581.not = icmp eq i64 %indvars.iv.next578, %wide.trip.count580 + br i1 %exitcond581.not, label %for.end621, label %for.body609, !llvm.loop !9 for.end621: ; preds = %strbuf_setlen.exit, %for.cond606.preheader call void @strbuf_release(ptr noundef nonnull %a_src_dir) #11 diff --git a/bench/gromacs/optimized/libxdrf.cpp.ll b/bench/gromacs/optimized/libxdrf.cpp.ll index f069831929c..d7218a68fa4 100644 --- a/bench/gromacs/optimized/libxdrf.cpp.ll +++ b/bench/gromacs/optimized/libxdrf.cpp.ll @@ -1848,11 +1848,11 @@ define internal fastcc void @_ZL8sendintsP10DataBufferiiPjS1_(ptr nocapture noun br label %.preheader97 .preheader97: ; preds = %.preheader97.preheader, %._crit_edge - %indvars.iv151 = phi i64 [ 1, %.preheader97.preheader ], [ %indvars.iv.next152, %._crit_edge ] + %indvars.iv149 = phi i64 [ 1, %.preheader97.preheader ], [ %indvars.iv.next150, %._crit_edge ] %.154119 = phi i32 [ %11, %.preheader97.preheader ], [ %.152.lcssa, %._crit_edge ] - %12 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv151 + %12 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv149 %13 = load i32, ptr %12, align 4 - %14 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv151 + %14 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv149 %15 = load i32, ptr %14, align 4 %.not66 = icmp ult i32 %13, %15 br i1 %.not66, label %.preheader96, label %17 @@ -1882,39 +1882,39 @@ define internal fastcc void @_ZL8sendintsP10DataBufferiiPjS1_(ptr nocapture noun br label %.lr.ph116 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv145 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next146, %.lr.ph ] + %indvars.iv143 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next144, %.lr.ph ] %.1111 = phi i32 [ %13, %.lr.ph.preheader ], [ %26, %.lr.ph ] - %21 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv145 + %21 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv143 %22 = load i32, ptr %21, align 4 %23 = mul i32 %22, %15 %24 = add i32 %23, %.1111 %25 = and i32 %24, 255 store i32 %25, ptr %21, align 4 %26 = lshr i32 %24, 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 %.preheader95, label %.lr.ph, !llvm.loop !22 .lr.ph116: ; preds = %.lr.ph116.preheader, %.lr.ph116 - %indvars.iv148 = phi i64 [ %20, %.lr.ph116.preheader ], [ %indvars.iv.next149, %.lr.ph116 ] + %indvars.iv146 = phi i64 [ %20, %.lr.ph116.preheader ], [ %indvars.iv.next147, %.lr.ph116 ] %.2115 = phi i32 [ %.1.lcssa, %.lr.ph116.preheader ], [ %29, %.lr.ph116 ] %27 = and i32 %.2115, 255 - %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 - %28 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv148 + %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 + %28 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv146 store i32 %27, ptr %28, align 4 %29 = lshr i32 %.2115, 8 %.not67 = icmp ult i32 %.2115, 256 br i1 %.not67, label %._crit_edge.loopexit, label %.lr.ph116, !llvm.loop !23 ._crit_edge.loopexit: ; preds = %.lr.ph116 - %30 = trunc nuw i64 %indvars.iv.next149 to i32 + %30 = trunc nuw i64 %indvars.iv.next147 to i32 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader95 %.152.lcssa = phi i32 [ %.051.lcssa, %.preheader95 ], [ %30, %._crit_edge.loopexit ] - %indvars.iv.next152 = add nuw nsw i64 %indvars.iv151, 1 - %exitcond154.not = icmp eq i64 %indvars.iv.next152, 3 - br i1 %exitcond154.not, label %31, label %.preheader97, !llvm.loop !24 + %indvars.iv.next150 = add nuw nsw i64 %indvars.iv149, 1 + %exitcond152.not = icmp eq i64 %indvars.iv.next150, 3 + br i1 %exitcond152.not, label %31, label %.preheader97, !llvm.loop !24 31: ; preds = %._crit_edge %32 = shl nsw i32 %.152.lcssa, 3 @@ -1929,7 +1929,7 @@ define internal fastcc void @_ZL8sendintsP10DataBufferiiPjS1_(ptr nocapture noun %34 = getelementptr inbounds i8, ptr %0, i64 8 %35 = getelementptr inbounds i8, ptr %0, i64 12 %36 = getelementptr inbounds i8, ptr %0, i64 16 - %wide.trip.count159 = zext nneg i32 %.152.lcssa to i64 + %wide.trip.count157 = zext nneg i32 %.152.lcssa to i64 br label %42 .preheader: ; preds = %31 @@ -1941,12 +1941,12 @@ define internal fastcc void @_ZL8sendintsP10DataBufferiiPjS1_(ptr nocapture noun %39 = getelementptr inbounds i8, ptr %0, i64 8 %40 = getelementptr inbounds i8, ptr %0, i64 12 %41 = getelementptr inbounds i8, ptr %0, i64 16 - %wide.trip.count164 = zext nneg i32 %37 to i64 + %wide.trip.count162 = zext nneg i32 %37 to i64 br label %96 42: ; preds = %_ZL8sendbitsP10DataBufferii.exit, %.lr.ph121 - %indvars.iv155 = phi i64 [ 0, %.lr.ph121 ], [ %indvars.iv.next156, %_ZL8sendbitsP10DataBufferii.exit ] - %43 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv155 + %indvars.iv153 = phi i64 [ 0, %.lr.ph121 ], [ %indvars.iv.next154, %_ZL8sendbitsP10DataBufferii.exit ] + %43 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv153 %44 = load i32, ptr %43, align 4 %45 = load i32, ptr %34, align 8 %46 = load i32, ptr %35, align 4 @@ -1976,9 +1976,9 @@ define internal fastcc void @_ZL8sendintsP10DataBufferiiPjS1_(ptr nocapture noun br label %_ZL8sendbitsP10DataBufferii.exit _ZL8sendbitsP10DataBufferii.exit: ; preds = %42, %56 - %indvars.iv.next156 = add nuw nsw i64 %indvars.iv155, 1 - %exitcond160.not = icmp eq i64 %indvars.iv.next156, %wide.trip.count159 - br i1 %exitcond160.not, label %._crit_edge122, label %42, !llvm.loop !25 + %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1 + %exitcond158.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count157 + br i1 %exitcond158.not, label %._crit_edge122, label %42, !llvm.loop !25 ._crit_edge122: ; preds = %_ZL8sendbitsP10DataBufferii.exit, %.preheader94 %63 = sub nsw i32 %1, %32 @@ -2043,8 +2043,8 @@ _ZL8sendbitsP10DataBufferii.exit: ; preds = %42, %56 br i1 %95, label %_ZL8sendbitsP10DataBufferii.exit73.sink.split, label %_ZL8sendbitsP10DataBufferii.exit73 96: ; preds = %_ZL8sendbitsP10DataBufferii.exit82, %.lr.ph124 - %indvars.iv161 = phi i64 [ 0, %.lr.ph124 ], [ %indvars.iv.next162, %_ZL8sendbitsP10DataBufferii.exit82 ] - %97 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv161 + %indvars.iv159 = phi i64 [ 0, %.lr.ph124 ], [ %indvars.iv.next160, %_ZL8sendbitsP10DataBufferii.exit82 ] + %97 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %indvars.iv159 %98 = load i32, ptr %97, align 4 %99 = load i32, ptr %39, align 8 %100 = load i32, ptr %40, align 4 @@ -2074,97 +2074,69 @@ _ZL8sendbitsP10DataBufferii.exit: ; preds = %42, %56 br label %_ZL8sendbitsP10DataBufferii.exit82 _ZL8sendbitsP10DataBufferii.exit82: ; preds = %96, %110 - %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1 - %exitcond165.not = icmp eq i64 %indvars.iv.next162, %wide.trip.count164 - br i1 %exitcond165.not, label %._crit_edge125.loopexit, label %96, !llvm.loop !26 + %indvars.iv.next160 = add nuw nsw i64 %indvars.iv159, 1 + %exitcond163.not = icmp eq i64 %indvars.iv.next160, %wide.trip.count162 + br i1 %exitcond163.not, label %._crit_edge125.loopexit, label %96, !llvm.loop !26 ._crit_edge125.loopexit: ; preds = %_ZL8sendbitsP10DataBufferii.exit82 %117 = zext nneg i32 %37 to i64 br label %._crit_edge125 -._crit_edge125: ; preds = %.preheader, %._crit_edge125.loopexit - %.257.lcssa = phi i64 [ %117, %._crit_edge125.loopexit ], [ 0, %.preheader ] +._crit_edge125: ; preds = %._crit_edge125.loopexit, %.preheader + %.257.lcssa = phi i64 [ 0, %.preheader ], [ %117, %._crit_edge125.loopexit ] %118 = shl nsw i32 %37, 3 %119 = sub nsw i32 %1, %118 - %120 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %.257.lcssa - %121 = load i32, ptr %120, align 4 - %122 = getelementptr inbounds i8, ptr %0, i64 8 - %123 = load i32, ptr %122, align 8 - %124 = getelementptr inbounds i8, ptr %0, i64 12 - %125 = load i32, ptr %124, align 4 - %126 = icmp sgt i32 %119, 7 - br i1 %126, label %.lr.ph.i88, label %._crit_edge.i83 - -.lr.ph.i88: ; preds = %._crit_edge125 - %127 = getelementptr inbounds i8, ptr %0, i64 16 - br label %128 - -128: ; preds = %128, %.lr.ph.i88 - %.03136.i89 = phi i32 [ %125, %.lr.ph.i88 ], [ %132, %128 ] - %.03235.i90 = phi i32 [ %119, %.lr.ph.i88 ], [ %130, %128 ] - %129 = shl i32 %.03136.i89, 8 - %130 = add nsw i32 %.03235.i90, -8 - %131 = ashr i32 %121, %130 - %132 = or i32 %131, %129 - %133 = lshr i32 %132, %123 - %134 = trunc i32 %133 to i8 - %135 = load ptr, ptr %127, align 8 - %136 = load i64, ptr %0, align 8 - %137 = add i64 %136, 1 - store i64 %137, ptr %0, align 8 - %138 = getelementptr inbounds i8, ptr %135, i64 %136 - store i8 %134, ptr %138, align 1 - %139 = icmp samesign ugt i32 %.03235.i90, 15 - br i1 %139, label %128, label %._crit_edge.i83, !llvm.loop !9 - -._crit_edge.i83: ; preds = %128, %._crit_edge125 - %.032.lcssa.i84 = phi i32 [ %119, %._crit_edge125 ], [ %130, %128 ] - %.031.lcssa.i85 = phi i32 [ %125, %._crit_edge125 ], [ %132, %128 ] - %140 = icmp sgt i32 %.032.lcssa.i84, 0 - br i1 %140, label %141, label %155 - -141: ; preds = %._crit_edge.i83 - %142 = shl i32 %.031.lcssa.i85, %.032.lcssa.i84 - %143 = or i32 %142, %121 - %144 = add nsw i32 %.032.lcssa.i84, %123 - %145 = icmp sgt i32 %144, 7 - br i1 %145, label %146, label %155 - -146: ; preds = %141 - %147 = add nsw i32 %144, -8 - %148 = lshr i32 %143, %147 - %149 = trunc i32 %148 to i8 - %150 = getelementptr inbounds i8, ptr %0, i64 16 - %151 = load ptr, ptr %150, align 8 - %152 = load i64, ptr %0, align 8 - %153 = add i64 %152, 1 - store i64 %153, ptr %0, align 8 - %154 = getelementptr inbounds i8, ptr %151, i64 %152 - store i8 %149, ptr %154, align 1 - br label %155 - -155: ; preds = %146, %141, %._crit_edge.i83 - %.1.i86 = phi i32 [ %143, %146 ], [ %143, %141 ], [ %.031.lcssa.i85, %._crit_edge.i83 ] - %.0.i87 = phi i32 [ %147, %146 ], [ %144, %141 ], [ %123, %._crit_edge.i83 ] - store i32 %.0.i87, ptr %122, align 8 - store i32 %.1.i86, ptr %124, align 4 - %156 = icmp sgt i32 %.0.i87, 0 - br i1 %156, label %_ZL8sendbitsP10DataBufferii.exit73.sink.split, label %_ZL8sendbitsP10DataBufferii.exit73 - -_ZL8sendbitsP10DataBufferii.exit73.sink.split: ; preds = %155, %94 - %.0.i87.sink = phi i32 [ %.0.i70, %94 ], [ %.0.i87, %155 ] - %.1.i86.sink = phi i32 [ %.1.i69, %94 ], [ %.1.i86, %155 ] - %157 = sub nsw i32 8, %.0.i87.sink - %158 = shl i32 %.1.i86.sink, %157 - %159 = trunc i32 %158 to i8 - %160 = getelementptr inbounds i8, ptr %0, i64 16 - %161 = load ptr, ptr %160, align 8 - %162 = load i64, ptr %0, align 8 - %163 = getelementptr inbounds i8, ptr %161, i64 %162 - store i8 %159, ptr %163, align 1 + %120 = getelementptr inbounds i8, ptr %0, i64 8 + %121 = load i32, ptr %120, align 8 + %122 = getelementptr inbounds i8, ptr %0, i64 12 + %123 = load i32, ptr %122, align 4 + %124 = icmp sgt i32 %119, 0 + br i1 %124, label %125, label %141 + +125: ; preds = %._crit_edge125 + %126 = getelementptr inbounds [32 x i32], ptr %5, i64 0, i64 %.257.lcssa + %127 = load i32, ptr %126, align 4 + %128 = shl i32 %123, %119 + %129 = or i32 %128, %127 + %130 = add nsw i32 %119, %121 + %131 = icmp sgt i32 %130, 7 + br i1 %131, label %132, label %141 + +132: ; preds = %125 + %133 = add nsw i32 %130, -8 + %134 = lshr i32 %129, %133 + %135 = trunc i32 %134 to i8 + %136 = getelementptr inbounds i8, ptr %0, i64 16 + %137 = load ptr, ptr %136, align 8 + %138 = load i64, ptr %0, align 8 + %139 = add i64 %138, 1 + store i64 %139, ptr %0, align 8 + %140 = getelementptr inbounds i8, ptr %137, i64 %138 + store i8 %135, ptr %140, align 1 + br label %141 + +141: ; preds = %132, %125, %._crit_edge125 + %.1.i86 = phi i32 [ %129, %132 ], [ %129, %125 ], [ %123, %._crit_edge125 ] + %.0.i87 = phi i32 [ %133, %132 ], [ %130, %125 ], [ %121, %._crit_edge125 ] + store i32 %.0.i87, ptr %120, align 8 + store i32 %.1.i86, ptr %122, align 4 + %142 = icmp sgt i32 %.0.i87, 0 + br i1 %142, label %_ZL8sendbitsP10DataBufferii.exit73.sink.split, label %_ZL8sendbitsP10DataBufferii.exit73 + +_ZL8sendbitsP10DataBufferii.exit73.sink.split: ; preds = %141, %94 + %.0.i87.sink = phi i32 [ %.0.i70, %94 ], [ %.0.i87, %141 ] + %.1.i86.sink = phi i32 [ %.1.i69, %94 ], [ %.1.i86, %141 ] + %143 = sub nsw i32 8, %.0.i87.sink + %144 = shl i32 %.1.i86.sink, %143 + %145 = trunc i32 %144 to i8 + %146 = getelementptr inbounds i8, ptr %0, i64 16 + %147 = load ptr, ptr %146, align 8 + %148 = load i64, ptr %0, align 8 + %149 = getelementptr inbounds i8, ptr %147, i64 %148 + store i8 %145, ptr %149, align 1 br label %_ZL8sendbitsP10DataBufferii.exit73 -_ZL8sendbitsP10DataBufferii.exit73: ; preds = %_ZL8sendbitsP10DataBufferii.exit73.sink.split, %155, %94 +_ZL8sendbitsP10DataBufferii.exit73: ; preds = %_ZL8sendbitsP10DataBufferii.exit73.sink.split, %141, %94 ret void } diff --git a/bench/gromacs/optimized/solvate.cpp.ll b/bench/gromacs/optimized/solvate.cpp.ll index 0bf5be117b4..5452329b256 100644 --- a/bench/gromacs/optimized/solvate.cpp.ll +++ b/bench/gromacs/optimized/solvate.cpp.ll @@ -2013,7 +2013,7 @@ _ZL14gmx_sfree_implIA3_fEvPKcS2_iPT_.exit64: ; preds = %_ZNSt6vectorIN3gmx1 cleanup br label %.body -.loopexit.split-lp: ; preds = %127, %130, %143, %1154, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163, %1188, %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit, %272, %.noexc72, %611, %807, %938, %1116, %1155, %1171, %1189, %1192 +.loopexit.split-lp: ; preds = %127, %130, %143, %1152, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163, %1186, %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit, %272, %.noexc72, %611, %807, %938, %1116, %1153, %1169, %1187, %1190 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.body @@ -4253,13 +4253,13 @@ _ZL34removeSolventOverlappingWithSoluteP7t_atomsPSt6vectorIN3gmx11BasicVectorIfE 1110: ; preds = %_ZL34removeSolventOverlappingWithSoluteP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_PS1_IfSaIfEERK5t_pbcRKS6_RKS9_.exit, %802 %1111 = icmp sgt i32 %11, 0 - br i1 %1111, label %1112, label %1154 + br i1 %1111, label %1112, label %1152 1112: ; preds = %1110 %1113 = getelementptr inbounds i8, ptr %82, i64 40 %1114 = load i32, ptr %1113, align 8 %1115 = icmp sgt i32 %1114, %11 - br i1 %1115, label %1116, label %1154 + br i1 %1115, label %1116, label %1152 1116: ; preds = %1112 %1117 = sub nsw i32 %1114, %11 @@ -4290,246 +4290,245 @@ _ZL34removeSolventOverlappingWithSoluteP7t_atomsPSt6vectorIN3gmx11BasicVectorIfE store i64 %1127, ptr %1128, align 8 %1129 = add nuw nsw i64 %.011.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %1129, 624 - br i1 %exitcond.not.i.i.i, label %1130, label %1121, !llvm.loop !40 + br i1 %exitcond.not.i.i.i, label %.lr.ph.i153.preheader, label %1121, !llvm.loop !40 -1130: ; preds = %1121 - %1131 = getelementptr inbounds i8, ptr %14, i64 4992 - store i64 624, ptr %1131, align 8 - %1132 = load i32, ptr %82, align 8 - %1133 = add nsw i32 %1132, -1 +.lr.ph.i153.preheader: ; preds = %1121 + %1130 = getelementptr inbounds i8, ptr %14, i64 4992 + store i64 624, ptr %1130, align 8 + %1131 = load i32, ptr %82, align 8 + %1132 = add nsw i32 %1131, -1 store i32 0, ptr %15, align 4 - %1134 = getelementptr inbounds i8, ptr %15, i64 4 - store i32 %1133, ptr %1134, align 4 - %1135 = icmp sgt i32 %1117, 0 - br i1 %1135, label %.lr.ph.i153, label %._crit_edge.i152 - -.lr.ph.i153: ; preds = %1130, %1145 - %.012.i = phi i32 [ %.1.i157, %1145 ], [ %1117, %1130 ] - %1136 = invoke noundef i32 @_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_RKNS0_10param_typeE(ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(5000) %14, ptr noundef nonnull align 4 dereferenceable(8) %15) + %1133 = getelementptr inbounds i8, ptr %15, i64 4 + store i32 %1132, ptr %1133, align 4 + br label %.lr.ph.i153 + +.lr.ph.i153: ; preds = %.lr.ph.i153.preheader, %1143 + %.012.i = phi i32 [ %.1.i157, %1143 ], [ %1117, %.lr.ph.i153.preheader ] + %1134 = invoke noundef i32 @_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_RKNS0_10param_typeE(ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(5000) %14, ptr noundef nonnull align 4 dereferenceable(8) %15) to label %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i unwind label %.loopexit.i154 _ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i: ; preds = %.lr.ph.i153 - %1137 = sext i32 %1136 to i64 - %1138 = load ptr, ptr %13, align 8 - %1139 = getelementptr inbounds i8, ptr %1138, i64 %1137 - %1140 = load i8, ptr %1139, align 1 - %.not.i156 = icmp eq i8 %1140, 0 - br i1 %.not.i156, label %1141, label %1145 - -1141: ; preds = %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i - invoke void @_ZN3gmx12AtomsRemover11markResidueERK7t_atomsib(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(72) %82, i32 noundef %1136, i1 noundef zeroext true) - to label %1142 unwind label %.loopexit.i154 - -1142: ; preds = %1141 - %1143 = add nsw i32 %.012.i, -1 - br label %1145 - -.loopexit.i154: ; preds = %1141, %.lr.ph.i153 + %1135 = sext i32 %1134 to i64 + %1136 = load ptr, ptr %13, align 8 + %1137 = getelementptr inbounds i8, ptr %1136, i64 %1135 + %1138 = load i8, ptr %1137, align 1 + %.not.i156 = icmp eq i8 %1138, 0 + br i1 %.not.i156, label %1139, label %1143 + +1139: ; preds = %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i + invoke void @_ZN3gmx12AtomsRemover11markResidueERK7t_atomsib(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(72) %82, i32 noundef %1134, i1 noundef zeroext true) + to label %1140 unwind label %.loopexit.i154 + +1140: ; preds = %1139 + %1141 = add nsw i32 %.012.i, -1 + br label %1143 + +.loopexit.i154: ; preds = %1139, %.lr.ph.i153 %lpad.loopexit.i155 = landingpad { ptr, i32 } cleanup - br label %1144 + br label %1142 -.loopexit.split-lp.i149: ; preds = %1153, %1152, %._crit_edge.i152, %.noexc158 +.loopexit.split-lp.i149: ; preds = %1151, %1150, %._crit_edge.i152, %.noexc158 %lpad.loopexit.split-lp.i150 = landingpad { ptr, i32 } cleanup - br label %1144 + br label %1142 -1144: ; preds = %.loopexit.split-lp.i149, %.loopexit.i154 +1142: ; preds = %.loopexit.split-lp.i149, %.loopexit.i154 %lpad.phi.i151 = phi { ptr, i32 } [ %lpad.loopexit.i155, %.loopexit.i154 ], [ %lpad.loopexit.split-lp.i150, %.loopexit.split-lp.i149 ] call void @_ZN3gmx12AtomsRemoverD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #22 br label %.body -1145: ; preds = %1142, %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i - %.1.i157 = phi i32 [ %.012.i, %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i ], [ %1143, %1142 ] - %1146 = icmp sgt i32 %.1.i157, 0 - br i1 %1146, label %.lr.ph.i153, label %._crit_edge.i152, !llvm.loop !41 +1143: ; preds = %1140, %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i + %.1.i157 = phi i32 [ %.012.i, %_ZNSt24uniform_int_distributionIiEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEiRT_.exit.i ], [ %1141, %1140 ] + %1144 = icmp sgt i32 %.1.i157, 0 + br i1 %1144, label %.lr.ph.i153, label %._crit_edge.i152, !llvm.loop !41 -._crit_edge.i152: ; preds = %1145, %1130 +._crit_edge.i152: ; preds = %1143 invoke void @_ZNK3gmx12AtomsRemover20removeMarkedElementsEPSt6vectorINS_11BasicVectorIfEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull %45) - to label %1147 unwind label %.loopexit.split-lp.i149 + to label %1145 unwind label %.loopexit.split-lp.i149 -1147: ; preds = %._crit_edge.i152 - %1148 = load ptr, ptr %46, align 8 - %1149 = getelementptr inbounds i8, ptr %46, i64 8 - %1150 = load ptr, ptr %1149, align 8 - %1151 = icmp eq ptr %1148, %1150 - br i1 %1151, label %1153, label %1152 +1145: ; preds = %._crit_edge.i152 + %1146 = load ptr, ptr %46, align 8 + %1147 = getelementptr inbounds i8, ptr %46, i64 8 + %1148 = load ptr, ptr %1147, align 8 + %1149 = icmp eq ptr %1146, %1148 + br i1 %1149, label %1151, label %1150 -1152: ; preds = %1147 +1150: ; preds = %1145 invoke void @_ZNK3gmx12AtomsRemover20removeMarkedElementsEPSt6vectorINS_11BasicVectorIfEESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull %46) - to label %1153 unwind label %.loopexit.split-lp.i149 + to label %1151 unwind label %.loopexit.split-lp.i149 -1153: ; preds = %1152, %1147 +1151: ; preds = %1150, %1145 invoke void @_ZNK3gmx12AtomsRemover17removeMarkedAtomsEP7t_atoms(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull %82) to label %_ZL27removeExtraSolventMoleculesP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_i.exit unwind label %.loopexit.split-lp.i149 -_ZL27removeExtraSolventMoleculesP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_i.exit: ; preds = %1153 +_ZL27removeExtraSolventMoleculesP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_i.exit: ; preds = %1151 call void @_ZN3gmx12AtomsRemoverD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #22 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) call void @llvm.lifetime.end.p0(i64 5000, ptr nonnull %14) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) - br label %1154 + br label %1152 -1154: ; preds = %_ZL27removeExtraSolventMoleculesP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_i.exit, %1112, %1110 +1152: ; preds = %_ZL27removeExtraSolventMoleculesP7t_atomsPSt6vectorIN3gmx11BasicVectorIfEESaIS4_EES7_i.exit, %1112, %1110 store ptr null, ptr %63, align 8 store ptr %82, ptr %64, align 8 invoke fastcc void @_ZL13sort_moleculePP7t_atomsS1_PSt6vectorIN3gmx11BasicVectorIfEESaIS5_EES8_(ptr noundef %64, ptr noundef %63, ptr noundef %45, ptr noundef %46) - to label %1155 unwind label %.loopexit.split-lp - -1155: ; preds = %1154 - %1156 = getelementptr inbounds i8, ptr %3, i64 8 - %1157 = load ptr, ptr %1156, align 8 - %1158 = load ptr, ptr %45, align 8 - %1159 = getelementptr inbounds i8, ptr %45, i64 8 - %1160 = load ptr, ptr %1159, align 8 - %1161 = load ptr, ptr %3, align 8 - %1162 = ptrtoint ptr %1157 to i64 - %1163 = ptrtoint ptr %1161 to i64 - %1164 = sub i64 %1162, %1163 - %1165 = getelementptr inbounds i8, ptr %1161, i64 %1164 - invoke void @_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr %1165, ptr %1158, ptr %1160) - to label %1166 unwind label %.loopexit.split-lp - -1166: ; preds = %1155 - %1167 = load ptr, ptr %4, align 8 - %1168 = getelementptr inbounds i8, ptr %4, i64 8 - %1169 = load ptr, ptr %1168, align 8 - %1170 = icmp eq ptr %1167, %1169 - br i1 %1170, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163, label %1171 - -1171: ; preds = %1166 - %1172 = load ptr, ptr %46, align 8 - %1173 = getelementptr inbounds i8, ptr %46, i64 8 - %1174 = load ptr, ptr %1173, align 8 - %1175 = ptrtoint ptr %1169 to i64 - %1176 = ptrtoint ptr %1167 to i64 - %1177 = sub i64 %1175, %1176 - %1178 = getelementptr inbounds i8, ptr %1167, i64 %1177 - invoke void @_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %1178, ptr %1172, ptr %1174) + to label %1153 unwind label %.loopexit.split-lp + +1153: ; preds = %1152 + %1154 = getelementptr inbounds i8, ptr %3, i64 8 + %1155 = load ptr, ptr %1154, align 8 + %1156 = load ptr, ptr %45, align 8 + %1157 = getelementptr inbounds i8, ptr %45, i64 8 + %1158 = load ptr, ptr %1157, align 8 + %1159 = load ptr, ptr %3, align 8 + %1160 = ptrtoint ptr %1155 to i64 + %1161 = ptrtoint ptr %1159 to i64 + %1162 = sub i64 %1160, %1161 + %1163 = getelementptr inbounds i8, ptr %1159, i64 %1162 + invoke void @_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr %1163, ptr %1156, ptr %1158) + to label %1164 unwind label %.loopexit.split-lp + +1164: ; preds = %1153 + %1165 = load ptr, ptr %4, align 8 + %1166 = getelementptr inbounds i8, ptr %4, i64 8 + %1167 = load ptr, ptr %1166, align 8 + %1168 = icmp eq ptr %1165, %1167 + br i1 %1168, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163, label %1169 + +1169: ; preds = %1164 + %1170 = load ptr, ptr %46, align 8 + %1171 = getelementptr inbounds i8, ptr %46, i64 8 + %1172 = load ptr, ptr %1171, align 8 + %1173 = ptrtoint ptr %1167 to i64 + %1174 = ptrtoint ptr %1165 to i64 + %1175 = sub i64 %1173, %1174 + %1176 = getelementptr inbounds i8, ptr %1165, i64 %1175 + invoke void @_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %1176, ptr %1170, ptr %1172) to label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163 unwind label %.loopexit.split-lp -_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163: ; preds = %1171, %1166 +_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163: ; preds = %1169, %1164 invoke void @_ZN3gmx12AtomsBuilderC1EP7t_atomsP8t_symtab(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull %1, ptr noundef nonnull %2) - to label %1179 unwind label %.loopexit.split-lp + to label %1177 unwind label %.loopexit.split-lp -1179: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163 - %1180 = load ptr, ptr %64, align 8 - invoke void @_ZN3gmx12AtomsBuilder10mergeAtomsERK7t_atoms(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(72) %1180) - to label %1181 unwind label %1190 +1177: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EE6insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEvEES9_NS7_IPKS2_S4_EET_SD_.exit163 + %1178 = load ptr, ptr %64, align 8 + invoke void @_ZN3gmx12AtomsBuilder10mergeAtomsERK7t_atoms(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(72) %1178) + to label %1179 unwind label %1188 -1181: ; preds = %1179 +1179: ; preds = %1177 call void @_ZN3gmx12AtomsBuilderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #22 - %1182 = load ptr, ptr @stderr, align 8 - %1183 = load i32, ptr %82, align 8 - %1184 = getelementptr inbounds i8, ptr %82, i64 40 - %1185 = load i32, ptr %1184, align 8 - %1186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1182, ptr noundef nonnull @.str.85, i32 noundef %1183, i32 noundef %1185) #23 - %1187 = load ptr, ptr %63, align 8 - %.not52 = icmp eq ptr %1187, null - br i1 %.not52, label %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit, label %1188 - -1188: ; preds = %1181 - invoke void @_Z9done_atomP7t_atoms(ptr noundef nonnull %1187) - to label %1189 unwind label %.loopexit.split-lp - -1189: ; preds = %1188 - invoke void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.63, i32 noundef 728, ptr noundef nonnull %1187) + %1180 = load ptr, ptr @stderr, align 8 + %1181 = load i32, ptr %82, align 8 + %1182 = getelementptr inbounds i8, ptr %82, i64 40 + %1183 = load i32, ptr %1182, align 8 + %1184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1180, ptr noundef nonnull @.str.85, i32 noundef %1181, i32 noundef %1183) #23 + %1185 = load ptr, ptr %63, align 8 + %.not52 = icmp eq ptr %1185, null + br i1 %.not52, label %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit, label %1186 + +1186: ; preds = %1179 + invoke void @_Z9done_atomP7t_atoms(ptr noundef nonnull %1185) + to label %1187 unwind label %.loopexit.split-lp + +1187: ; preds = %1186 + invoke void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.63, i32 noundef 728, ptr noundef nonnull %1185) to label %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit unwind label %.loopexit.split-lp -1190: ; preds = %1179 - %1191 = landingpad { ptr, i32 } +1188: ; preds = %1177 + %1189 = landingpad { ptr, i32 } cleanup call void @_ZN3gmx12AtomsBuilderD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #22 br label %.body -_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit: ; preds = %1181, %1189 +_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit: ; preds = %1179, %1187 invoke void @_Z9done_atomP7t_atoms(ptr noundef nonnull %82) - to label %1192 unwind label %.loopexit.split-lp + to label %1190 unwind label %.loopexit.split-lp -1192: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit +1190: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit invoke void @_Z9save_freePKcS0_iPv(ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.63, i32 noundef 733, ptr noundef nonnull %82) to label %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166 unwind label %.loopexit.split-lp -_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166: ; preds = %1192 - %1193 = load ptr, ptr %60, align 8 - %.not.i.i.i167 = icmp eq ptr %1193, null - br i1 %.not.i.i.i167, label %_ZNSt6vectorIfSaIfEED2Ev.exit, label %1194 +_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166: ; preds = %1190 + %1191 = load ptr, ptr %60, align 8 + %.not.i.i.i167 = icmp eq ptr %1191, null + br i1 %.not.i.i.i167, label %_ZNSt6vectorIfSaIfEED2Ev.exit, label %1192 -1194: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166 - call void @_ZdlPv(ptr noundef nonnull %1193) #27 +1192: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166 + call void @_ZdlPv(ptr noundef nonnull %1191) #27 br label %_ZNSt6vectorIfSaIfEED2Ev.exit -_ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166, %1194 - %1195 = load ptr, ptr %59, align 8 - %.not.i.i.i168 = icmp eq ptr %1195, null - br i1 %.not.i.i.i168, label %_ZNSt6vectorIfSaIfEED2Ev.exit169, label %1196 +_ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %_ZL14gmx_sfree_implI7t_atomsEvPKcS2_iPT_.exit166, %1192 + %1193 = load ptr, ptr %59, align 8 + %.not.i.i.i168 = icmp eq ptr %1193, null + br i1 %.not.i.i.i168, label %_ZNSt6vectorIfSaIfEED2Ev.exit169, label %1194 -1196: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %1195) #27 +1194: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit + call void @_ZdlPv(ptr noundef nonnull %1193) #27 br label %_ZNSt6vectorIfSaIfEED2Ev.exit169 -_ZNSt6vectorIfSaIfEED2Ev.exit169: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %1196 - %1197 = load ptr, ptr %46, align 8 - %.not.i.i.i170 = icmp eq ptr %1197, null - br i1 %.not.i.i.i170, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit, label %1198 +_ZNSt6vectorIfSaIfEED2Ev.exit169: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit, %1194 + %1195 = load ptr, ptr %46, align 8 + %.not.i.i.i170 = icmp eq ptr %1195, null + br i1 %.not.i.i.i170, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit, label %1196 -1198: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit169 - call void @_ZdlPv(ptr noundef nonnull %1197) #27 +1196: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit169 + call void @_ZdlPv(ptr noundef nonnull %1195) #27 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit -_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit169, %1198 - %1199 = load ptr, ptr %45, align 8 - %.not.i.i.i171 = icmp eq ptr %1199, null - br i1 %.not.i.i.i171, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit172, label %1200 +_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit169, %1196 + %1197 = load ptr, ptr %45, align 8 + %.not.i.i.i171 = icmp eq ptr %1197, null + br i1 %.not.i.i.i171, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit172, label %1198 -1200: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %1199) #27 +1198: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit + call void @_ZdlPv(ptr noundef nonnull %1197) #27 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit172 -_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit172: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit, %1200 +_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit172: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit, %1198 call void @_ZN10gmx_mtop_tD1Ev(ptr noundef nonnull align 8 dereferenceable(768) %44) #22 ret void -.body: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit150.i, %937, %1144, %1109, %801, %1190, %148 - %.pn54 = phi { ptr, i32 } [ %1191, %1190 ], [ %149, %148 ], [ %.pn.pn.pn.i, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit150.i ], [ %.pn.pn.pn.i84, %801 ], [ %.pn.pn.pn.i99, %937 ], [ %.pn.pn.pn.i128, %1109 ], [ %lpad.phi.i151, %1144 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %1201 = load ptr, ptr %60, align 8 - %.not.i.i.i173 = icmp eq ptr %1201, null - br i1 %.not.i.i.i173, label %_ZNSt6vectorIfSaIfEED2Ev.exit174, label %1202 +.body: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit150.i, %937, %1142, %1109, %801, %1188, %148 + %.pn54 = phi { ptr, i32 } [ %1189, %1188 ], [ %149, %148 ], [ %.pn.pn.pn.i, %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit150.i ], [ %.pn.pn.pn.i84, %801 ], [ %.pn.pn.pn.i99, %937 ], [ %.pn.pn.pn.i128, %1109 ], [ %lpad.phi.i151, %1142 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %1199 = load ptr, ptr %60, align 8 + %.not.i.i.i173 = icmp eq ptr %1199, null + br i1 %.not.i.i.i173, label %_ZNSt6vectorIfSaIfEED2Ev.exit174, label %1200 -1202: ; preds = %.body - call void @_ZdlPv(ptr noundef nonnull %1201) #27 +1200: ; preds = %.body + call void @_ZdlPv(ptr noundef nonnull %1199) #27 br label %_ZNSt6vectorIfSaIfEED2Ev.exit174 -_ZNSt6vectorIfSaIfEED2Ev.exit174: ; preds = %1202, %.body, %146 - %.pn54.pn = phi { ptr, i32 } [ %147, %146 ], [ %.pn54, %.body ], [ %.pn54, %1202 ] - %1203 = load ptr, ptr %59, align 8 - %.not.i.i.i175 = icmp eq ptr %1203, null - br i1 %.not.i.i.i175, label %_ZNSt6vectorIfSaIfEED2Ev.exit176, label %1204 +_ZNSt6vectorIfSaIfEED2Ev.exit174: ; preds = %1200, %.body, %146 + %.pn54.pn = phi { ptr, i32 } [ %147, %146 ], [ %.pn54, %.body ], [ %.pn54, %1200 ] + %1201 = load ptr, ptr %59, align 8 + %.not.i.i.i175 = icmp eq ptr %1201, null + br i1 %.not.i.i.i175, label %_ZNSt6vectorIfSaIfEED2Ev.exit176, label %1202 -1204: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit174 - call void @_ZdlPv(ptr noundef nonnull %1203) #27 +1202: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit174 + call void @_ZdlPv(ptr noundef nonnull %1201) #27 br label %_ZNSt6vectorIfSaIfEED2Ev.exit176 -_ZNSt6vectorIfSaIfEED2Ev.exit176: ; preds = %1204, %_ZNSt6vectorIfSaIfEED2Ev.exit174, %120, %111, %110, %101 - %.pn57 = phi { ptr, i32 } [ %112, %111 ], [ %102, %101 ], [ %121, %120 ], [ %.pn.pn, %110 ], [ %.pn54.pn, %_ZNSt6vectorIfSaIfEED2Ev.exit174 ], [ %.pn54.pn, %1204 ] - %1205 = load ptr, ptr %46, align 8 - %.not.i.i.i177 = icmp eq ptr %1205, null - br i1 %.not.i.i.i177, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178, label %1206 +_ZNSt6vectorIfSaIfEED2Ev.exit176: ; preds = %1202, %_ZNSt6vectorIfSaIfEED2Ev.exit174, %120, %111, %110, %101 + %.pn57 = phi { ptr, i32 } [ %112, %111 ], [ %102, %101 ], [ %121, %120 ], [ %.pn.pn, %110 ], [ %.pn54.pn, %_ZNSt6vectorIfSaIfEED2Ev.exit174 ], [ %.pn54.pn, %1202 ] + %1203 = load ptr, ptr %46, align 8 + %.not.i.i.i177 = icmp eq ptr %1203, null + br i1 %.not.i.i.i177, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178, label %1204 -1206: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit176 - call void @_ZdlPv(ptr noundef nonnull %1205) #27 +1204: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit176 + call void @_ZdlPv(ptr noundef nonnull %1203) #27 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178 -_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit176, %1206 - %1207 = load ptr, ptr %45, align 8 - %.not.i.i.i179 = icmp eq ptr %1207, null - br i1 %.not.i.i.i179, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit180, label %1208 +_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178: ; preds = %_ZNSt6vectorIfSaIfEED2Ev.exit176, %1204 + %1205 = load ptr, ptr %45, align 8 + %.not.i.i.i179 = icmp eq ptr %1205, null + br i1 %.not.i.i.i179, label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit180, label %1206 -1208: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178 - call void @_ZdlPv(ptr noundef nonnull %1207) #27 +1206: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178 + call void @_ZdlPv(ptr noundef nonnull %1205) #27 br label %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit180 -_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit180: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178, %1208 +_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit180: ; preds = %_ZNSt6vectorIN3gmx11BasicVectorIfEESaIS2_EED2Ev.exit178, %1206 call void @_ZN10gmx_mtop_tD1Ev(ptr noundef nonnull align 8 dereferenceable(768) %44) #22 resume { ptr, i32 } %.pn57 } diff --git a/bench/icu/optimized/collationruleparser.ll b/bench/icu/optimized/collationruleparser.ll index b51ca0a1188..ed474329023 100644 --- a/bench/icu/optimized/collationruleparser.ll +++ b/bench/icu/optimized/collationruleparser.ll @@ -1153,11 +1153,8 @@ if.else.i.i: ; preds = %invoke.cont15 br i1 %tobool4.not.i.i, label %land.rhs.i.i, label %if.end30.critedge land.rhs.i.i: ; preds = %if.else.i.i - %cmp5.i.i.i = icmp slt i32 %cond.i.i, 0 %spec.select10.i.i = call i32 @llvm.smin.i32(i32 %cond.i.i, i32 0) - %sub.i.i.i = sub nsw i32 %cond.i.i, %spec.select10.i.i - %spec.select11.i.i = call i32 @llvm.smin.i32(i32 %cond.i.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select11.i.i + %srcLength.addr.0.i.i = call i32 @llvm.smax.i32(i32 %cond.i.i, i32 0) %18 = and i16 %13, 2 %tobool.not.i.i.i143 = icmp eq i16 %18, 0 %fBuffer.i.i.i144 = getelementptr inbounds i8, ptr %ref.tmp, i64 10 diff --git a/bench/icu/optimized/collationsets.ll b/bench/icu/optimized/collationsets.ll index f63526b609a..268a98e2c1f 100644 --- a/bench/icu/optimized/collationsets.ll +++ b/bench/icu/optimized/collationsets.ll @@ -802,10 +802,7 @@ if.else.i.i: ; preds = %if.end32 %shr.i.i.i = sext i16 %15 to i32 %cond.i.i = select i1 %cmp.i.i.i, i32 %14, i32 %shr.i.i.i %spec.select.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 0) - %cmp5.i.i.i = icmp slt i32 %cond.i6.i, 0 - %sub.i.i.i = sub nsw i32 %cond.i6.i, %spec.select.i.i - %spec.select9.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i + %srcLength.addr.0.i.i = call i32 @llvm.smax.i32(i32 %cond.i6.i, i32 0) %16 = and i16 %9, 2 %tobool.not.i.i.i = icmp eq i16 %16, 0 %fBuffer.i.i.i = getelementptr inbounds i8, ptr %bp.128, i64 10 @@ -1088,10 +1085,7 @@ if.else.i.i: ; preds = %if.end34 %shr.i.i.i = sext i16 %14 to i32 %cond.i.i = select i1 %cmp.i.i.i, i32 %13, i32 %shr.i.i.i %spec.select.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 0) - %cmp5.i.i.i = icmp slt i32 %cond.i6.i, 0 - %sub.i.i.i = sub nsw i32 %cond.i6.i, %spec.select.i.i - %spec.select9.i.i = call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i + %srcLength.addr.0.i.i = call i32 @llvm.smax.i32(i32 %cond.i6.i, i32 0) %15 = and i16 %8, 2 %tobool.not.i.i.i = icmp eq i16 %15, 0 %fBuffer.i.i.i = getelementptr inbounds i8, ptr %bs.141, i64 10 @@ -2660,15 +2654,15 @@ declare void @_ZN6icu_7513UnicodeString7unBogusEv(ptr noundef nonnull align 8 de ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #7 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #7 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #7 - 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 = { "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 = { 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/icu/optimized/dtptngen.ll b/bench/icu/optimized/dtptngen.ll index 66dc3009ea8..2e3f411fc8e 100644 --- a/bench/icu/optimized/dtptngen.ll +++ b/bench/icu/optimized/dtptngen.ll @@ -8395,10 +8395,7 @@ if.else.i.i: ; preds = %do.body %shr.i.i.i = sext i16 %15 to i32 %cond.i.i = select i1 %cmp.i.i.i, i32 %14, i32 %shr.i.i.i %spec.select.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 0) - %cmp5.i.i.i = icmp slt i32 %cond.i6.i, 0 - %sub.i.i.i = sub nsw i32 %cond.i6.i, %spec.select.i.i - %spec.select9.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i + %srcLength.addr.0.i.i = tail call i32 @llvm.smax.i32(i32 %cond.i6.i, i32 0) %16 = and i16 %9, 2 %tobool.not.i.i.i8 = icmp eq i16 %16, 0 %fBuffer.i.i.i9 = getelementptr inbounds i8, ptr %curElem.0, i64 18 @@ -8751,10 +8748,7 @@ if.else.i.i.i: ; preds = %do.body.i %shr.i.i.i.i62 = sext i16 %26 to i32 %cond.i.i.i63 = select i1 %cmp.i.i.i.i61, i32 %25, i32 %shr.i.i.i.i62 %spec.select.i.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i.i, i32 0) - %cmp5.i.i.i.i = icmp slt i32 %cond.i6.i.i, 0 - %sub.i.i.i.i = sub nsw i32 %cond.i6.i.i, %spec.select.i.i.i - %spec.select9.i.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i.i, i32 %sub.i.i.i.i) - %srcLength.addr.0.i.i.i = select i1 %cmp5.i.i.i.i, i32 0, i32 %spec.select9.i.i.i + %srcLength.addr.0.i.i.i = tail call i32 @llvm.smax.i32(i32 %cond.i6.i.i, i32 0) %27 = and i16 %20, 2 %tobool.not.i.i.i.i = icmp eq i16 %27, 0 %fBuffer.i.i.i.i = getelementptr inbounds i8, ptr %curElem.0.i, i64 18 @@ -10655,10 +10649,7 @@ if.else.i.i: ; preds = %do.body %shr.i.i.i = sext i16 %7 to i32 %cond.i.i = select i1 %cmp.i.i.i, i32 %6, i32 %shr.i.i.i %spec.select.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 0) - %cmp5.i.i.i = icmp slt i32 %cond.i6.i, 0 - %sub.i.i.i = sub nsw i32 %cond.i6.i, %spec.select.i.i - %spec.select9.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i6.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i + %srcLength.addr.0.i.i = tail call i32 @llvm.smax.i32(i32 %cond.i6.i, i32 0) %8 = and i16 %1, 2 %tobool.not.i.i.i = icmp eq i16 %8, 0 %fBuffer.i.i.i = getelementptr inbounds i8, ptr %curElem.0, i64 18 diff --git a/bench/icu/optimized/number_decimalquantity.ll b/bench/icu/optimized/number_decimalquantity.ll index 1143576cf1c..a6867427d7a 100644 --- a/bench/icu/optimized/number_decimalquantity.ll +++ b/bench/icu/optimized/number_decimalquantity.ll @@ -1227,17 +1227,9 @@ if.then6: ; preds = %if.end4 %usingBytes.i6 = getelementptr inbounds i8, ptr %this, i64 64 %4 = load i8, ptr %usingBytes.i6, align 8 %tobool.i7 = trunc i8 %4 to i1 - br i1 %tobool.i7, label %if.then.i9, label %if.else.i + br i1 %tobool.i7, label %for.body.lr.ph.i, label %if.else.i -if.then.i9: ; preds = %if.then6 - %cmp.not.not6.i = icmp sgt i32 %sub, -1 - br i1 %cmp.not.not6.i, label %for.body.lr.ph.i, label %if.then.if.end_crit_edge.i - -if.then.if.end_crit_edge.i: ; preds = %if.then.i9 - %.pre9.i = sub nsw i32 %0, %add - br label %_ZN6icu_756number4impl15DecimalQuantity11popFromLeftEi.exit - -for.body.lr.ph.i: ; preds = %if.then.i9 +for.body.lr.ph.i: ; preds = %if.then6 %fBCD.i10 = getelementptr inbounds i8, ptr %this, i64 48 %5 = sext i32 %0 to i64 br label %for.body.i @@ -1266,8 +1258,8 @@ if.else.i: ; preds = %if.then6 store i64 %and.i, ptr %fBCD7.i, align 8 br label %_ZN6icu_756number4impl15DecimalQuantity11popFromLeftEi.exit -_ZN6icu_756number4impl15DecimalQuantity11popFromLeftEi.exit: ; preds = %for.body.i, %if.then.if.end_crit_edge.i, %if.else.i - %sub9.pre-phi.i = phi i32 [ %.pre9.i, %if.then.if.end_crit_edge.i ], [ %sub5.i, %if.else.i ], [ %sub3.i, %for.body.i ] +_ZN6icu_756number4impl15DecimalQuantity11popFromLeftEi.exit: ; preds = %for.body.i, %if.else.i + %sub9.pre-phi.i = phi i32 [ %sub5.i, %if.else.i ], [ %sub3.i, %for.body.i ] store i32 %sub9.pre-phi.i, ptr %precision, align 8 tail call void @_ZN6icu_756number4impl15DecimalQuantity7compactEv(ptr noundef nonnull align 8 dereferenceable(66) %this) br label %if.end7 diff --git a/bench/icu/optimized/reslist.ll b/bench/icu/optimized/reslist.ll index 9371ea3ed0d..72480f2323b 100644 --- a/bench/icu/optimized/reslist.ll +++ b/bench/icu/optimized/reslist.ll @@ -4585,11 +4585,8 @@ if.else.i.i: ; preds = %for.body32 br i1 %tobool4.not.i.i, label %land.rhs.i.i, label %for.end81.loopexit land.rhs.i.i: ; preds = %if.else.i.i - %cmp5.i.i.i = icmp slt i32 %cond.i8.i, 0 %spec.select10.i.i = call i32 @llvm.smin.i32(i32 %cond.i8.i, i32 0) - %sub.i.i.i = sub nsw i32 %cond.i8.i, %spec.select10.i.i - %spec.select11.i.i = call i32 @llvm.smin.i32(i32 %cond.i8.i, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select11.i.i + %srcLength.addr.0.i.i = call i32 @llvm.smax.i32(i32 %cond.i8.i, i32 0) %22 = and i16 %18, 2 %tobool.not.i.i.i = icmp eq i16 %22, 0 %fBuffer.i.i.i = getelementptr inbounds i8, ptr %14, i64 66 @@ -6408,10 +6405,7 @@ if.then.i.i: ; preds = %if.end14 if.else.i.i: ; preds = %if.end14 %fString = getelementptr inbounds i8, ptr %1, i64 56 %spec.select.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i.i16, i32 0) - %cmp5.i.i.i = icmp slt i32 %cond.i.i16, 0 - %sub.i.i.i = sub nsw i32 %cond.i.i16, %spec.select.i.i - %spec.select9.i.i = tail call i32 @llvm.smin.i32(i32 %cond.i.i16, i32 %sub.i.i.i) - %srcLength.addr.0.i.i = select i1 %cmp5.i.i.i, i32 0, i32 %spec.select9.i.i + %srcLength.addr.0.i.i = tail call i32 @llvm.smax.i32(i32 %cond.i.i16, i32 0) %15 = and i16 %8, 2 %tobool.not.i.i.i = icmp eq i16 %15, 0 %fBuffer.i.i.i = getelementptr inbounds i8, ptr %2, i64 66 @@ -6939,6 +6933,9 @@ declare i32 @llvm.scmp.i32.i32(i32, i32) #28 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #28 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #28 + 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,+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,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/icu/optimized/selfmt.ll b/bench/icu/optimized/selfmt.ll index 48905b06240..34f41eba65b 100644 --- a/bench/icu/optimized/selfmt.ll +++ b/bench/icu/optimized/selfmt.ll @@ -792,8 +792,8 @@ invoke.cont: ; preds = %if.end %fArray.i.i.i.i = getelementptr inbounds i8, ptr %keyword, i64 24 %fUnion.i.i.i.i16 = getelementptr inbounds i8, ptr %other, i64 8 %fLength.i.i.i31 = getelementptr inbounds i8, ptr %other, i64 12 - %fBuffer.i.i.i.i40 = getelementptr inbounds i8, ptr %other, i64 10 - %fArray.i.i.i.i41 = getelementptr inbounds i8, ptr %other, i64 24 + %fBuffer.i.i.i.i37 = getelementptr inbounds i8, ptr %other, i64 10 + %fArray.i.i.i.i38 = getelementptr inbounds i8, ptr %other, i64 24 %.pre = load ptr, ptr %parts.i, align 8 br label %do.body @@ -846,10 +846,7 @@ if.else.i.i.i: ; preds = %if.end9 %shr.i.i.i.i = sext i16 %15 to i32 %cond.i.i.i = select i1 %cmp.i.i.i.i, i32 %14, i32 %shr.i.i.i.i %spec.select.i.i.i = call i32 @llvm.smin.i32(i32 %cond.i.i.i, i32 0) - %cmp5.i.i.i.i = icmp slt i32 %cond.i.i.i, 0 - %sub.i.i.i.i = sub nsw i32 %cond.i.i.i, %spec.select.i.i.i - %spec.select9.i.i.i = call i32 @llvm.smin.i32(i32 %cond.i.i.i, i32 %sub.i.i.i.i) - %srcLength.addr.0.i.i.i = select i1 %cmp5.i.i.i.i, i32 0, i32 %spec.select9.i.i.i + %srcLength.addr.0.i.i.i = call i32 @llvm.smax.i32(i32 %cond.i.i.i, i32 0) %16 = and i16 %8, 2 %tobool.not.i.i.i.i = icmp eq i16 %16, 0 %17 = load ptr, ptr %fArray.i.i.i.i, align 8 @@ -891,19 +888,16 @@ if.else.i.i.i25: ; preds = %land.lhs.true %shr.i.i.i.i32 = sext i16 %25 to i32 %cond.i.i.i33 = select i1 %cmp.i.i.i.i30, i32 %24, i32 %shr.i.i.i.i32 %spec.select.i.i.i34 = call i32 @llvm.smin.i32(i32 %cond.i.i.i33, i32 0) - %cmp5.i.i.i.i35 = icmp slt i32 %cond.i.i.i33, 0 - %sub.i.i.i.i36 = sub nsw i32 %cond.i.i.i33, %spec.select.i.i.i34 - %spec.select9.i.i.i37 = call i32 @llvm.smin.i32(i32 %cond.i.i.i33, i32 %sub.i.i.i.i36) - %srcLength.addr.0.i.i.i38 = select i1 %cmp5.i.i.i.i35, i32 0, i32 %spec.select9.i.i.i37 + %srcLength.addr.0.i.i.i35 = call i32 @llvm.smax.i32(i32 %cond.i.i.i33, i32 0) %26 = and i16 %18, 2 - %tobool.not.i.i.i.i39 = icmp eq i16 %26, 0 - %27 = load ptr, ptr %fArray.i.i.i.i41, align 8 - %cond.i.i.i.i42 = select i1 %tobool.not.i.i.i.i39, ptr %27, ptr %fBuffer.i.i.i.i40 - %call5.i.i.i44 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString9doCompareEiiPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %msg.i, i32 noundef %23, i32 noundef %conv.i28, ptr noundef %cond.i.i.i.i42, i32 noundef %spec.select.i.i.i34, i32 noundef %srcLength.addr.0.i.i.i38) + %tobool.not.i.i.i.i36 = icmp eq i16 %26, 0 + %27 = load ptr, ptr %fArray.i.i.i.i38, align 8 + %cond.i.i.i.i39 = select i1 %tobool.not.i.i.i.i36, ptr %27, ptr %fBuffer.i.i.i.i37 + %call5.i.i.i41 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString9doCompareEiiPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %msg.i, i32 noundef %23, i32 noundef %conv.i28, ptr noundef %cond.i.i.i.i39, i32 noundef %spec.select.i.i.i34, i32 noundef %srcLength.addr.0.i.i.i35) to label %invoke.cont15 unwind label %lpad1 invoke.cont15: ; preds = %if.then.i.i.i19, %if.else.i.i.i25 - %retval.0.i.i.i22 = phi i8 [ %conv.i.i.i21, %if.then.i.i.i19 ], [ %call5.i.i.i44, %if.else.i.i.i25 ] + %retval.0.i.i.i22 = phi i8 [ %conv.i.i.i21, %if.then.i.i.i19 ], [ %call5.i.i.i41, %if.else.i.i.i25 ] %cmp.i23.not = icmp eq i8 %retval.0.i.i.i22, 0 %spec.select = select i1 %cmp.i23.not, i32 %inc, i32 0 br label %if.end20 diff --git a/bench/icu/optimized/umutablecptrie.ll b/bench/icu/optimized/umutablecptrie.ll index b811a823aab..25d20a5056b 100644 --- a/bench/icu/optimized/umutablecptrie.ll +++ b/bench/icu/optimized/umutablecptrie.ll @@ -3550,15 +3550,11 @@ if.else382.i.i.i: ; preds = %for.body373.i.i.i br i1 %cmp.not14.i.i.i.i, label %if.else391.i.i.i, label %while.body.lr.ph.i.i.i.i while.body.lr.ph.i.i.i.i: ; preds = %if.else382.i.i.i - %cmp5.i.i.i.i.i = icmp sgt i32 %sub375.i.i.i, 0 - br i1 %cmp5.i.i.i.i.i, label %while.body.us.preheader.i.i.i.i, label %while.body.lr.ph.split.i.i.i.i - -while.body.us.preheader.i.i.i.i: ; preds = %while.body.lr.ph.i.i.i.i %252 = add i32 %sub.i272.i.i.i, 1 br label %while.body.us.i.i.i.i -while.body.us.i.i.i.i: ; preds = %if.end.loopexit.us.i.i.i.i, %while.body.us.preheader.i.i.i.i - %indvars.iv.i276.i.i.i = phi i64 [ %249, %while.body.us.preheader.i.i.i.i ], [ %indvars.iv.next.i277.i.i.i, %if.end.loopexit.us.i.i.i.i ] +while.body.us.i.i.i.i: ; preds = %if.end.loopexit.us.i.i.i.i, %while.body.lr.ph.i.i.i.i + %indvars.iv.i276.i.i.i = phi i64 [ %249, %while.body.lr.ph.i.i.i.i ], [ %indvars.iv.next.i277.i.i.i, %if.end.loopexit.us.i.i.i.i ] %add.ptr2.us.i.i.i.i = getelementptr inbounds i16, ptr %251, i64 %indvars.iv.i276.i.i.i br label %land.rhs.i.us.i.i.i.i @@ -3584,22 +3580,18 @@ if.end.loopexit.us.i.i.i.i: ; preds = %land.rhs.i.us.i.i.i %exitcond.not.i.i151.i.i = icmp eq i32 %252, %lftr.wideiv.i.i.i.i br i1 %exitcond.not.i.i151.i.i, label %if.else391.i.i.i, label %while.body.us.i.i.i.i, !llvm.loop !52 -while.body.lr.ph.split.i.i.i.i: ; preds = %while.body.lr.ph.i.i.i.i - %cmp4.i.i.i.i.i = icmp eq i32 %sub375.i.i.i, 0 - br i1 %cmp4.i.i.i.i.i, label %if.end388.i.i.i, label %if.else391.i.i.i - return.loopexit.i.i.i.i: ; preds = %while.body.i.us.i.i.i.i %255 = trunc nsw i64 %indvars.iv.i276.i.i.i to i32 br label %if.end388.i.i.i -if.end388.i.i.i: ; preds = %return.loopexit.i.i.i.i, %while.body.lr.ph.split.i.i.i.i, %if.then377.i.i.i - %blockLength.1.i149.i.i = phi i32 [ %blockLength.0355.i.i.i, %if.then377.i.i.i ], [ %sub375.i.i.i, %return.loopexit.i.i.i.i ], [ 0, %while.body.lr.ph.split.i.i.i.i ] - %n374.0.i.i.i = phi i32 [ %call381.i.i.i, %if.then377.i.i.i ], [ %255, %return.loopexit.i.i.i.i ], [ %add92.i.i.i, %while.body.lr.ph.split.i.i.i.i ] +if.end388.i.i.i: ; preds = %return.loopexit.i.i.i.i, %if.then377.i.i.i + %blockLength.1.i149.i.i = phi i32 [ %blockLength.0355.i.i.i, %if.then377.i.i.i ], [ %sub375.i.i.i, %return.loopexit.i.i.i.i ] + %n374.0.i.i.i = phi i32 [ %call381.i.i.i, %if.then377.i.i.i ], [ %255, %return.loopexit.i.i.i.i ] %cmp389.i.i.i = icmp sgt i32 %n374.0.i.i.i, -1 br i1 %cmp389.i.i.i, label %if.end416.i.i.i, label %if.else391.i.i.i -if.else391.i.i.i: ; preds = %if.end.loopexit.us.i.i.i.i, %if.end388.i.i.i, %while.body.lr.ph.split.i.i.i.i, %if.else382.i.i.i - %blockLength.1313.i.i.i = phi i32 [ %blockLength.1.i149.i.i, %if.end388.i.i.i ], [ %sub375.i.i.i, %if.else382.i.i.i ], [ %sub375.i.i.i, %while.body.lr.ph.split.i.i.i.i ], [ %sub375.i.i.i, %if.end.loopexit.us.i.i.i.i ] +if.else391.i.i.i: ; preds = %if.end.loopexit.us.i.i.i.i, %if.end388.i.i.i, %if.else382.i.i.i + %blockLength.1313.i.i.i = phi i32 [ %blockLength.1.i149.i.i, %if.end388.i.i.i ], [ %sub375.i.i.i, %if.else382.i.i.i ], [ %sub375.i.i.i, %if.end.loopexit.us.i.i.i.i ] %cmp392.i.i.i = icmp eq i32 %indexLength.5354.i.i.i, %add92.i.i.i br i1 %cmp392.i.i.i, label %if.end399.i.i.i, label %if.else394.i.i.i diff --git a/bench/imgui/optimized/imgui_widgets.cpp.ll b/bench/imgui/optimized/imgui_widgets.cpp.ll index 7422b7f22ae..9ecae1c3913 100644 --- a/bench/imgui/optimized/imgui_widgets.cpp.ll +++ b/bench/imgui/optimized/imgui_widgets.cpp.ll @@ -37376,10 +37376,8 @@ if.then: ; preds = %_ZN5ImStbL18stb_tex if.then4: ; preds = %if.then %sub = sub nsw i32 %5, %6 %call.i.i = tail call fastcc noundef ptr @_ZN5ImStbL19stb_text_createundoEPNS_12StbUndoStateEiii(ptr noundef nonnull %undostate.i.i, i32 noundef %6, i32 noundef %sub, i32 noundef 0) - %tobool.not.i.i = icmp ne ptr %call.i.i, null - %cmp7.i.i = icmp sgt i32 %sub, 0 - %or.cond.i.i = and i1 %cmp7.i.i, %tobool.not.i.i - br i1 %or.cond.i.i, label %for.body.lr.ph.i.i, label %entry._ZN5ImStbL24stb_text_makeundo_deleteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEii.exit_crit_edge.i + %tobool.not.i.i.not = icmp eq ptr %call.i.i, null + br i1 %tobool.not.i.i.not, label %entry._ZN5ImStbL24stb_text_makeundo_deleteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEii.exit_crit_edge.i, label %for.body.lr.ph.i.i entry._ZN5ImStbL24stb_text_makeundo_deleteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEii.exit_crit_edge.i: ; preds = %if.then4 %.pre.i = sext i32 %6 to i64 diff --git a/bench/libquic/optimized/a_strex.c.ll b/bench/libquic/optimized/a_strex.c.ll index 267ff8d90f4..7a77d4b6cdd 100644 --- a/bench/libquic/optimized/a_strex.c.ll +++ b/bench/libquic/optimized/a_strex.c.ll @@ -215,13 +215,12 @@ if.end78: ; preds = %if.end72 if.then83: ; preds = %if.end78 %sub84 = sub nsw i32 %fld_len.0, %conv74 - %cmp2.i71 = icmp sgt i32 %sub84, 0 - br i1 %cmp2.i71, label %for.body.i73, label %if.end88 + br label %for.body.i73 for.cond.i77: ; preds = %for.body.i73 %inc.i78 = add nuw nsw i32 %i.03.i74, 1 %exitcond.not.i79 = icmp eq i32 %inc.i78, %sub84 - br i1 %exitcond.not.i79, label %if.end88, label %for.body.i73, !llvm.loop !7 + br i1 %exitcond.not.i79, label %if.end88.loopexit, label %for.body.i73, !llvm.loop !7 for.body.i73: ; preds = %if.then83, %for.cond.i77 %i.03.i74 = phi i32 [ %inc.i78, %for.cond.i77 ], [ 0, %if.then83 ] @@ -229,12 +228,12 @@ for.body.i73: ; preds = %if.then83, %for.con %tobool.not.i76 = icmp eq i32 %call.i75, 0 br i1 %tobool.not.i76, label %return, label %for.cond.i77 -if.end88: ; preds = %for.cond.i77, %if.then83 +if.end88.loopexit: ; preds = %for.cond.i77 %add90 = add nsw i32 %sub84, %outlen.1 br label %if.end91 -if.end91: ; preds = %if.end88, %if.end78 - %outlen.3 = phi i32 [ %add90, %if.end88 ], [ %outlen.1, %if.end78 ] +if.end91: ; preds = %if.end88.loopexit, %if.end78 + %outlen.3 = phi i32 [ %add90, %if.end88.loopexit ], [ %outlen.1, %if.end78 ] %call92 = call i32 %io_ch(ptr noundef %arg, ptr noundef nonnull %.str.7..str.6, i32 noundef %.) #10, !callees !9 %tobool93.not = icmp eq i32 %call92, 0 br i1 %tobool93.not, label %return, label %if.end95 diff --git a/bench/lightgbm/optimized/dataset.cpp.ll b/bench/lightgbm/optimized/dataset.cpp.ll index bdd07cc5438..839136a938b 100644 --- a/bench/lightgbm/optimized/dataset.cpp.ll +++ b/bench/lightgbm/optimized/dataset.cpp.ll @@ -20088,8 +20088,8 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EE9push_backEOS1_.exit: ; preds = %457, %467 cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke, %._crit_edge628, %514, %_ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229, %488, %529, %544, %640 - %.sroa.0323.1.ph.ph.ph = phi ptr [ %.sroa.0323.0.lcssa, %._crit_edge628 ], [ %.sroa.0323.0.lcssa, %514 ], [ %.sroa.0323.0.lcssa, %529 ], [ %.sroa.0323.0.lcssa, %544 ], [ %.sroa.0323.0.lcssa, %_ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229 ], [ %.sroa.0323.0.lcssa, %640 ], [ %.sroa.0323.2613, %488 ], [ %.sroa.0323.0.lcssa, %.invoke ] +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke, %._crit_edge628, %514, %_ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229, %488, %529, %544, %639 + %.sroa.0323.1.ph.ph.ph = phi ptr [ %.sroa.0323.0.lcssa, %._crit_edge628 ], [ %.sroa.0323.0.lcssa, %514 ], [ %.sroa.0323.0.lcssa, %529 ], [ %.sroa.0323.0.lcssa, %544 ], [ %.sroa.0323.0.lcssa, %_ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229 ], [ %.sroa.0323.0.lcssa, %639 ], [ %.sroa.0323.2613, %488 ], [ %.sroa.0323.0.lcssa, %.invoke ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -20282,7 +20282,7 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229: ; preds = %541 546: ; preds = %.lr.ph635, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 %.086634 = phi i32 [ 0, %.lr.ph635 ], [ %.187, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 ] %.088633 = phi i8 [ %22, %.lr.ph635 ], [ %.189, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 ] - %.sroa.0314.0632 = phi ptr [ %.sroa.0323.0.lcssa, %.lr.ph635 ], [ %622, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 ] + %.sroa.0314.0632 = phi ptr [ %.sroa.0323.0.lcssa, %.lr.ph635 ], [ %621, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 ] %547 = load i32, ptr %.sroa.0314.0632, align 4 %548 = load ptr, ptr %431, align 8 %549 = getelementptr inbounds i8, ptr %548, i64 -24 @@ -20308,7 +20308,7 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJEEEvDpOT_.exit229: ; preds = %541 %562 = icmp eq i64 %561, 9223372036854775804 br i1 %562, label %.invoke, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i231 -.invoke: ; preds = %557, %630 +.invoke: ; preds = %557, %629 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.20) #36 to label %.cont unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -20382,7 +20382,7 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit240: ; preds = %_ZNSt6vectorIiSaIiE 591: ; preds = %592 %indvars.iv.next.i250 = add nuw nsw i64 %indvars.iv.i244, 1 %exitcond.not.i251 = icmp eq i64 %indvars.iv.next.i250, %wide.trip.count.i243 - br i1 %exitcond.not.i251, label %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252, label %592, !llvm.loop !83 + br i1 %exitcond.not.i251, label %.lr.ph.i255, label %592, !llvm.loop !83 592: ; preds = %591, %.lr.ph.i242 %indvars.iv.i244 = phi i64 [ 0, %.lr.ph.i242 ], [ %indvars.iv.next.i250, %591 ] @@ -20410,131 +20410,130 @@ _ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread: ; preds %606 = add nsw i32 %.086634, -1 br label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 -_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252: ; preds = %591 - %607 = add nsw i32 %spec.select.i249, %.086634 - %608 = icmp sgt i32 %607, %23 - br i1 %608, label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262, label %.lr.ph.i255 - _ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426: ; preds = %580 - %609 = icmp sgt i32 %.086634, %23 - %spec.select = select i1 %609, i8 1, i8 %.088633 + %607 = icmp sgt i32 %.086634, %23 + %spec.select = select i1 %607, i8 1, i8 %.088633 br label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 -.lr.ph.i255: ; preds = %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252, %.lr.ph.i255 - %indvars.iv.i256 = phi i64 [ %indvars.iv.next.i260, %.lr.ph.i255 ], [ 0, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252 ] - %610 = getelementptr inbounds i32, ptr %586, i64 %indvars.iv.i256 - %611 = load i32, ptr %610, align 4 - %612 = sext i32 %611 to i64 - %613 = load ptr, ptr %583, align 8 - %614 = sdiv i32 %611, 64 - %.sext.i257 = sext i32 %614 to i64 - %615 = getelementptr inbounds i64, ptr %613, i64 %.sext.i257 - %616 = and i64 %612, -9223372036854775745 - %617 = icmp ugt i64 %616, -9223372036854775808 - %storemerge.idx.i.i.i.i.i.i258 = select i1 %617, i64 -8, i64 0 - %storemerge.i.i.i.i.i.i259 = getelementptr inbounds i8, ptr %615, i64 %storemerge.idx.i.i.i.i.i.i258 - %618 = and i64 %612, 63 - %619 = shl nuw i64 1, %618 - %620 = load i64, ptr %storemerge.i.i.i.i.i.i259, align 8 - %621 = or i64 %619, %620 - store i64 %621, ptr %storemerge.i.i.i.i.i.i259, align 8 +.lr.ph.i255: ; preds = %591, %.lr.ph.i255 + %indvars.iv.i256 = phi i64 [ %indvars.iv.next.i260, %.lr.ph.i255 ], [ 0, %591 ] + %608 = getelementptr inbounds i32, ptr %586, i64 %indvars.iv.i256 + %609 = load i32, ptr %608, align 4 + %610 = sext i32 %609 to i64 + %611 = load ptr, ptr %583, align 8 + %612 = sdiv i32 %609, 64 + %.sext.i257 = sext i32 %612 to i64 + %613 = getelementptr inbounds i64, ptr %611, i64 %.sext.i257 + %614 = and i64 %610, -9223372036854775745 + %615 = icmp ugt i64 %614, -9223372036854775808 + %storemerge.idx.i.i.i.i.i.i258 = select i1 %615, i64 -8, i64 0 + %storemerge.i.i.i.i.i.i259 = getelementptr inbounds i8, ptr %613, i64 %storemerge.idx.i.i.i.i.i.i258 + %616 = and i64 %610, 63 + %617 = shl nuw i64 1, %616 + %618 = load i64, ptr %storemerge.i.i.i.i.i.i259, align 8 + %619 = or i64 %617, %618 + store i64 %619, ptr %storemerge.i.i.i.i.i.i259, align 8 %indvars.iv.next.i260 = add nuw nsw i64 %indvars.iv.i256, 1 %exitcond.not.i261 = icmp eq i64 %indvars.iv.next.i260, %wide.trip.count.i243 - br i1 %exitcond.not.i261, label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262, label %.lr.ph.i255, !llvm.loop !84 + br i1 %exitcond.not.i261, label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262.loopexit, label %.lr.ph.i255, !llvm.loop !84 + +_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262.loopexit: ; preds = %.lr.ph.i255 + %620 = add nsw i32 %spec.select.i249, %.086634 + br label %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 -_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262: ; preds = %.lr.ph.i255, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 - %.189 = phi i8 [ %.088633, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 ], [ 1, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252 ], [ 1, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread ], [ %spec.select, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426 ], [ %.088633, %.lr.ph.i255 ] - %.187 = phi i32 [ %.086634, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 ], [ %607, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252 ], [ %606, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread ], [ %.086634, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426 ], [ %607, %.lr.ph.i255 ] - %622 = getelementptr inbounds i8, ptr %.sroa.0314.0632, i64 4 - %.not432 = icmp eq ptr %622, %.sroa.7.0.lcssa +_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262: ; preds = %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262.loopexit, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 + %.189 = phi i8 [ %.088633, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 ], [ 1, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread ], [ %spec.select, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426 ], [ %.088633, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262.loopexit ] + %.187 = phi i32 [ %.086634, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit240 ], [ %606, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread ], [ %.086634, %_ZN8LightGBM16GetConflictCountERKSt6vectorIbSaIbEEPKiii.exit252.thread426 ], [ %620, %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262.loopexit ] + %621 = getelementptr inbounds i8, ptr %.sroa.0314.0632, i64 4 + %.not432 = icmp eq ptr %621, %.sroa.7.0.lcssa br i1 %.not432, label %._crit_edge636, label %546 ._crit_edge636: ; preds = %_ZN8LightGBM8MarkUsedEPSt6vectorIbSaIbEEPKii.exit262 - %623 = and i8 %.189, 1 - %624 = load ptr, ptr %25, align 8 - %625 = getelementptr inbounds i8, ptr %10, i64 16 - %626 = load ptr, ptr %625, align 8 - %.not.i.i263 = icmp eq ptr %624, %626 - br i1 %.not.i.i263, label %630, label %627 - -627: ; preds = %._crit_edge636 - store i8 %623, ptr %624, align 1 - %628 = load ptr, ptr %25, align 8 - %629 = getelementptr inbounds i8, ptr %628, i64 1 - store ptr %629, ptr %25, align 8 + %622 = and i8 %.189, 1 + %623 = load ptr, ptr %25, align 8 + %624 = getelementptr inbounds i8, ptr %10, i64 16 + %625 = load ptr, ptr %624, align 8 + %.not.i.i263 = icmp eq ptr %623, %625 + br i1 %.not.i.i263, label %629, label %626 + +626: ; preds = %._crit_edge636 + store i8 %622, ptr %623, align 1 + %627 = load ptr, ptr %25, align 8 + %628 = getelementptr inbounds i8, ptr %627, i64 1 + store ptr %628, ptr %25, align 8 br label %_ZNSt6vectorIaSaIaEE9push_backEOa.exit -630: ; preds = %._crit_edge636 - %631 = load ptr, ptr %10, align 8 - %632 = ptrtoint ptr %624 to i64 - %633 = ptrtoint ptr %631 to i64 - %634 = sub i64 %632, %633 - %635 = icmp eq i64 %634, 9223372036854775807 - br i1 %635, label %.invoke, label %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i - -_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %630 - %.sroa.speculated.i.i.i.i264 = call i64 @llvm.umax.i64(i64 %634, i64 1) - %636 = add i64 %.sroa.speculated.i.i.i.i264, %634 - %637 = icmp ult i64 %636, %634 - %638 = call i64 @llvm.umin.i64(i64 %636, i64 9223372036854775807) - %639 = select i1 %637, i64 9223372036854775807, i64 %638 - %.not.i.i.i.i265 = icmp eq i64 %639, 0 - br i1 %.not.i.i.i.i265, label %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i, label %640 - -640: ; preds = %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i - %641 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %639) #34 +629: ; preds = %._crit_edge636 + %630 = load ptr, ptr %10, align 8 + %631 = ptrtoint ptr %623 to i64 + %632 = ptrtoint ptr %630 to i64 + %633 = sub i64 %631, %632 + %634 = icmp eq i64 %633, 9223372036854775807 + br i1 %634, label %.invoke, label %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i + +_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %629 + %.sroa.speculated.i.i.i.i264 = call i64 @llvm.umax.i64(i64 %633, i64 1) + %635 = add i64 %.sroa.speculated.i.i.i.i264, %633 + %636 = icmp ult i64 %635, %633 + %637 = call i64 @llvm.umin.i64(i64 %635, i64 9223372036854775807) + %638 = select i1 %636, i64 9223372036854775807, i64 %637 + %.not.i.i.i.i265 = icmp eq i64 %638, 0 + br i1 %.not.i.i.i.i265, label %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i, label %639 + +639: ; preds = %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i + %640 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %638) #34 to label %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i: ; preds = %640, %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i - %642 = phi ptr [ null, %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i ], [ %641, %640 ] - %643 = getelementptr inbounds i8, ptr %642, i64 %634 - store i8 %623, ptr %643, align 1 - %644 = icmp sgt i64 %634, 0 - br i1 %644, label %645, label %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i +_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i: ; preds = %639, %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i + %641 = phi ptr [ null, %_ZNKSt6vectorIaSaIaEE12_M_check_lenEmPKc.exit.i.i.i ], [ %640, %639 ] + %642 = getelementptr inbounds i8, ptr %641, i64 %633 + store i8 %622, ptr %642, align 1 + %643 = icmp sgt i64 %633, 0 + br i1 %643, label %644, label %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i -645: ; preds = %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %642, ptr align 1 %631, i64 %634, i1 false) +644: ; preds = %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %641, ptr align 1 %630, i64 %633, i1 false) br label %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i -_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i: ; preds = %645, %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i - %646 = getelementptr inbounds i8, ptr %643, i64 1 - %.not.i17.i.i.i266 = icmp eq ptr %631, null - br i1 %.not.i17.i.i.i266, label %_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i, label %647 +_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i: ; preds = %644, %_ZNSt12_Vector_baseIaSaIaEE11_M_allocateEm.exit.i.i.i + %645 = getelementptr inbounds i8, ptr %642, i64 1 + %.not.i17.i.i.i266 = icmp eq ptr %630, null + br i1 %.not.i17.i.i.i266, label %_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i, label %646 -647: ; preds = %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i - call void @_ZdlPv(ptr noundef nonnull %631) #35 +646: ; preds = %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i + call void @_ZdlPv(ptr noundef nonnull %630) #35 br label %_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i -_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i: ; preds = %647, %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i - store ptr %642, ptr %10, align 8 - store ptr %646, ptr %25, align 8 - %648 = getelementptr inbounds i8, ptr %642, i64 %639 - store ptr %648, ptr %625, align 8 +_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i: ; preds = %646, %_ZNSt6vectorIaSaIaEE11_S_relocateEPaS2_S2_RS0_.exit16.i.i.i + store ptr %641, ptr %10, align 8 + store ptr %645, ptr %25, align 8 + %647 = getelementptr inbounds i8, ptr %641, i64 %638 + store ptr %647, ptr %624, align 8 br label %_ZNSt6vectorIaSaIaEE9push_backEOa.exit -_ZNSt6vectorIaSaIaEE9push_backEOa.exit: ; preds = %_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i, %627, %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit226 - %649 = load ptr, ptr %19, align 8 - %650 = getelementptr inbounds i8, ptr %19, i64 8 - %651 = load ptr, ptr %650, align 8 - %.not4.i.i.i.i = icmp eq ptr %649, %651 +_ZNSt6vectorIaSaIaEE9push_backEOa.exit: ; preds = %_ZNSt6vectorIaSaIaEE17_M_realloc_insertIJaEEEvN9__gnu_cxx17__normal_iteratorIPaS1_EEDpOT_.exit.i.i, %626, %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit226 + %648 = load ptr, ptr %19, align 8 + %649 = getelementptr inbounds i8, ptr %19, i64 8 + %650 = load ptr, ptr %649, align 8 + %.not4.i.i.i.i = icmp eq ptr %648, %650 br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZNSt6vectorIaSaIaEE9push_backEOa.exit, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i - %.05.i.i.i.i = phi ptr [ %662, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i ], [ %649, %_ZNSt6vectorIaSaIaEE9push_backEOa.exit ] - %652 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %652, null - br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i, label %653 - -653: ; preds = %.lr.ph.i.i.i.i - %654 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 - %655 = load ptr, ptr %654, align 8 - %656 = ptrtoint ptr %655 to i64 - %657 = ptrtoint ptr %652 to i64 - %658 = sub i64 %656, %657 - %659 = ashr exact i64 %658, 3 - %660 = sub nsw i64 0, %659 - %661 = getelementptr inbounds i64, ptr %655, i64 %660 - call void @_ZdlPv(ptr noundef %661) #35 + %.05.i.i.i.i = phi ptr [ %661, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i ], [ %648, %_ZNSt6vectorIaSaIaEE9push_backEOa.exit ] + %651 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i.i.i.i.i.i = icmp eq ptr %651, null + br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i, label %652 + +652: ; preds = %.lr.ph.i.i.i.i + %653 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 + %654 = load ptr, ptr %653, align 8 + %655 = ptrtoint ptr %654 to i64 + %656 = ptrtoint ptr %651 to i64 + %657 = sub i64 %655, %656 + %658 = ashr exact i64 %657, 3 + %659 = sub nsw i64 0, %658 + %660 = getelementptr inbounds i64, ptr %654, i64 %659 + call void @_ZdlPv(ptr noundef %660) #35 store ptr null, ptr %.05.i.i.i.i, align 8 %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i269 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 8 store i32 0, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i269, align 8 @@ -20542,12 +20541,12 @@ _ZNSt6vectorIaSaIaEE9push_backEOa.exit: ; preds = %_ZNSt6vectorIaSaIaE store ptr null, ptr %.sroa.31.0..sroa_idx.i.i.i.i.i.i.i.i.i270, align 8 %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i.i271 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 24 store i32 0, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i.i271, align 8 - store ptr null, ptr %654, align 8 + store ptr null, ptr %653, align 8 br label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i -_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i: ; preds = %653, %.lr.ph.i.i.i.i - %662 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 40 - %.not.i.i.i.i272 = icmp eq ptr %662, %651 +_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i: ; preds = %652, %.lr.ph.i.i.i.i + %661 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 40 + %.not.i.i.i.i272 = icmp eq ptr %661, %650 br i1 %.not.i.i.i.i272, label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !91 _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i: ; preds = %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i @@ -20555,34 +20554,34 @@ _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i: ; pre br label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i, %_ZNSt6vectorIaSaIaEE9push_backEOa.exit - %663 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ %649, %_ZNSt6vectorIaSaIaEE9push_backEOa.exit ] - %.not.i.i.i273 = icmp eq ptr %663, null - br i1 %.not.i.i.i273, label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit, label %664 + %662 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ %648, %_ZNSt6vectorIaSaIaEE9push_backEOa.exit ] + %.not.i.i.i273 = icmp eq ptr %662, null + br i1 %.not.i.i.i273, label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit, label %663 -664: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i - call void @_ZdlPv(ptr noundef nonnull %663) #35 +663: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i + call void @_ZdlPv(ptr noundef nonnull %662) #35 br label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit -_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i, %664 - %665 = load ptr, ptr %18, align 8 - %666 = getelementptr inbounds i8, ptr %18, i64 8 - %667 = load ptr, ptr %666, align 8 - %.not4.i.i.i.i274 = icmp eq ptr %665, %667 +_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i, %663 + %664 = load ptr, ptr %18, align 8 + %665 = getelementptr inbounds i8, ptr %18, i64 8 + %666 = load ptr, ptr %665, align 8 + %.not4.i.i.i.i274 = icmp eq ptr %664, %666 br i1 %.not4.i.i.i.i274, label %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i275 .lr.ph.i.i.i.i275: ; preds = %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit, %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i - %.05.i.i.i.i276 = phi ptr [ %670, %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i ], [ %665, %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit ] - %668 = load ptr, ptr %.05.i.i.i.i276, align 8 - %.not.i.i.i.i.i.i.i.i277 = icmp eq ptr %668, null - br i1 %.not.i.i.i.i.i.i.i.i277, label %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i, label %669 + %.05.i.i.i.i276 = phi ptr [ %669, %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i ], [ %664, %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit ] + %667 = load ptr, ptr %.05.i.i.i.i276, align 8 + %.not.i.i.i.i.i.i.i.i277 = icmp eq ptr %667, null + br i1 %.not.i.i.i.i.i.i.i.i277, label %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i, label %668 -669: ; preds = %.lr.ph.i.i.i.i275 - call void @_ZdlPv(ptr noundef nonnull %668) #35 +668: ; preds = %.lr.ph.i.i.i.i275 + call void @_ZdlPv(ptr noundef nonnull %667) #35 br label %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i -_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i: ; preds = %669, %.lr.ph.i.i.i.i275 - %670 = getelementptr inbounds i8, ptr %.05.i.i.i.i276, i64 24 - %.not.i.i.i.i278 = icmp eq ptr %670, %667 +_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i: ; preds = %668, %.lr.ph.i.i.i.i275 + %669 = getelementptr inbounds i8, ptr %.05.i.i.i.i276, i64 24 + %.not.i.i.i.i278 = icmp eq ptr %669, %666 br i1 %.not.i.i.i.i278, label %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i275, !llvm.loop !76 _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i: ; preds = %_ZSt8_DestroyISt6vectorIiSaIiEEEvPT_.exit.i.i.i.i @@ -20590,69 +20589,69 @@ _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i: ; pre br label %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i _ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i, %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit - %671 = phi ptr [ %.pr.i279, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ %665, %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit ] - %.not.i.i.i280 = icmp eq ptr %671, null - br i1 %.not.i.i.i280, label %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit, label %672 + %670 = phi ptr [ %.pr.i279, %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i ], [ %664, %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit ] + %.not.i.i.i280 = icmp eq ptr %670, null + br i1 %.not.i.i.i280, label %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit, label %671 -672: ; preds = %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i - call void @_ZdlPv(ptr noundef nonnull %671) #35 +671: ; preds = %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i + call void @_ZdlPv(ptr noundef nonnull %670) #35 br label %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit -_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i, %672 +_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt6vectorIiSaIiEES2_EvT_S4_RSaIT0_E.exit.i, %671 %.not.i.i.i281 = icmp eq ptr %.sroa.0323.0.lcssa, null - br i1 %.not.i.i.i281, label %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit, label %673 + br i1 %.not.i.i.i281, label %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit, label %672 -673: ; preds = %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit +672: ; preds = %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit call void @_ZdlPv(ptr noundef nonnull %.sroa.0323.0.lcssa) #35 br label %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit -_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit: ; preds = %673, %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit, %427, %425, %423, %421 +_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit: ; preds = %672, %_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev.exit, %427, %425, %423, %421 %.not.i.i.i283 = icmp eq ptr %.sroa.0396.0.lcssa, null - br i1 %.not.i.i.i283, label %_ZNSt6vectorIiSaIiEED2Ev.exit284, label %674 + br i1 %.not.i.i.i283, label %_ZNSt6vectorIiSaIiEED2Ev.exit284, label %673 -674: ; preds = %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit +673: ; preds = %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit call void @_ZdlPv(ptr noundef nonnull %.sroa.0396.0.lcssa) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit284 -_ZNSt6vectorIiSaIiEED2Ev.exit284: ; preds = %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit, %674 +_ZNSt6vectorIiSaIiEED2Ev.exit284: ; preds = %_ZNSt6vectorIaSaIaEE6resizeEmRKa.exit, %673 %.not.i.i.i285 = icmp eq ptr %.sroa.0403.0.lcssa, null - br i1 %.not.i.i.i285, label %_ZNSt6vectorIiSaIiEED2Ev.exit286, label %675 + br i1 %.not.i.i.i285, label %_ZNSt6vectorIiSaIiEED2Ev.exit286, label %674 -675: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit284 +674: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit284 call void @_ZdlPv(ptr noundef nonnull %.sroa.0403.0.lcssa) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit286 -_ZNSt6vectorIiSaIiEED2Ev.exit286: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit284, %675 +_ZNSt6vectorIiSaIiEED2Ev.exit286: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit284, %674 %.not.i.i.i287 = icmp eq ptr %.sroa.0411.0.lcssa, null - br i1 %.not.i.i.i287, label %_ZNSt6vectorIiSaIiEED2Ev.exit288, label %676 + br i1 %.not.i.i.i287, label %_ZNSt6vectorIiSaIiEED2Ev.exit288, label %675 -676: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit286 +675: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit286 call void @_ZdlPv(ptr noundef nonnull %.sroa.0411.0.lcssa) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit288 -_ZNSt6vectorIiSaIiEED2Ev.exit288: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit286, %676 - %677 = load ptr, ptr %14, align 8 - %678 = getelementptr inbounds i8, ptr %14, i64 8 - %679 = load ptr, ptr %678, align 8 - %.not4.i.i.i.i289 = icmp eq ptr %677, %679 +_ZNSt6vectorIiSaIiEED2Ev.exit288: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit286, %675 + %676 = load ptr, ptr %14, align 8 + %677 = getelementptr inbounds i8, ptr %14, i64 8 + %678 = load ptr, ptr %677, align 8 + %.not4.i.i.i.i289 = icmp eq ptr %676, %678 br i1 %.not4.i.i.i.i289, label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300, label %.lr.ph.i.i.i.i290 .lr.ph.i.i.i.i290: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit288, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296 - %.05.i.i.i.i291 = phi ptr [ %690, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296 ], [ %677, %_ZNSt6vectorIiSaIiEED2Ev.exit288 ] - %680 = load ptr, ptr %.05.i.i.i.i291, align 8 - %.not.i.i.i.i.i.i.i.i292 = icmp eq ptr %680, null - br i1 %.not.i.i.i.i.i.i.i.i292, label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296, label %681 - -681: ; preds = %.lr.ph.i.i.i.i290 - %682 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 32 - %683 = load ptr, ptr %682, align 8 - %684 = ptrtoint ptr %683 to i64 - %685 = ptrtoint ptr %680 to i64 - %686 = sub i64 %684, %685 - %687 = ashr exact i64 %686, 3 - %688 = sub nsw i64 0, %687 - %689 = getelementptr inbounds i64, ptr %683, i64 %688 - call void @_ZdlPv(ptr noundef %689) #35 + %.05.i.i.i.i291 = phi ptr [ %689, %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296 ], [ %676, %_ZNSt6vectorIiSaIiEED2Ev.exit288 ] + %679 = load ptr, ptr %.05.i.i.i.i291, align 8 + %.not.i.i.i.i.i.i.i.i292 = icmp eq ptr %679, null + br i1 %.not.i.i.i.i.i.i.i.i292, label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296, label %680 + +680: ; preds = %.lr.ph.i.i.i.i290 + %681 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 32 + %682 = load ptr, ptr %681, align 8 + %683 = ptrtoint ptr %682 to i64 + %684 = ptrtoint ptr %679 to i64 + %685 = sub i64 %683, %684 + %686 = ashr exact i64 %685, 3 + %687 = sub nsw i64 0, %686 + %688 = getelementptr inbounds i64, ptr %682, i64 %687 + call void @_ZdlPv(ptr noundef %688) #35 store ptr null, ptr %.05.i.i.i.i291, align 8 %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i293 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 8 store i32 0, ptr %.sroa.2.0..sroa_idx.i.i.i.i.i.i.i.i.i293, align 8 @@ -20660,12 +20659,12 @@ _ZNSt6vectorIiSaIiEED2Ev.exit288: ; preds = %_ZNSt6vectorIiSaIiE store ptr null, ptr %.sroa.31.0..sroa_idx.i.i.i.i.i.i.i.i.i294, align 8 %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i.i295 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 24 store i32 0, ptr %.sroa.4.0..sroa_idx.i.i.i.i.i.i.i.i.i295, align 8 - store ptr null, ptr %682, align 8 + store ptr null, ptr %681, align 8 br label %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296 -_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296: ; preds = %681, %.lr.ph.i.i.i.i290 - %690 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 40 - %.not.i.i.i.i297 = icmp eq ptr %690, %679 +_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296: ; preds = %680, %.lr.ph.i.i.i.i290 + %689 = getelementptr inbounds i8, ptr %.05.i.i.i.i291, i64 40 + %.not.i.i.i.i297 = icmp eq ptr %689, %678 br i1 %.not.i.i.i.i297, label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298, label %.lr.ph.i.i.i.i290, !llvm.loop !91 _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298: ; preds = %_ZSt8_DestroyISt6vectorIbSaIbEEEvPT_.exit.i.i.i.i296 @@ -20673,15 +20672,15 @@ _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298: ; br label %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300 _ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298, %_ZNSt6vectorIiSaIiEED2Ev.exit288 - %691 = phi ptr [ %.pr.i299, %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298 ], [ %677, %_ZNSt6vectorIiSaIiEED2Ev.exit288 ] - %.not.i.i.i301 = icmp eq ptr %691, null - br i1 %.not.i.i.i301, label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit302, label %692 + %690 = phi ptr [ %.pr.i299, %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i298 ], [ %676, %_ZNSt6vectorIiSaIiEED2Ev.exit288 ] + %.not.i.i.i301 = icmp eq ptr %690, null + br i1 %.not.i.i.i301, label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit302, label %691 -692: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300 - call void @_ZdlPv(ptr noundef nonnull %691) #35 +691: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300 + call void @_ZdlPv(ptr noundef nonnull %690) #35 br label %_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit302 -_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit302: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300, %692 +_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev.exit302: ; preds = %_ZSt8_DestroyIPSt6vectorIbSaIbEES2_EvT_S4_RSaIT0_E.exit.i300, %691 ret void _ZNSt6vectorIiSaIiEED2Ev.exit204: ; preds = %476, %.loopexit.split-lp, %406, %_ZNSt6vectorIiSaIiEED2Ev.exit202, %428 @@ -20690,29 +20689,29 @@ _ZNSt6vectorIiSaIiEED2Ev.exit204: ; preds = %476, %.loopexit.spl %.sroa.0411.5 = phi ptr [ %.sroa.0411.0.lcssa, %428 ], [ %.sroa.0411.1, %_ZNSt6vectorIiSaIiEED2Ev.exit202 ], [ %.sroa.0411.1, %406 ], [ %.sroa.0411.0.lcssa, %.loopexit.split-lp ], [ %.sroa.0411.0.lcssa, %476 ] %.pn101.pn = phi { ptr, i32 } [ %429, %428 ], [ %.pn101, %_ZNSt6vectorIiSaIiEED2Ev.exit202 ], [ %.pn101, %406 ], [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.phi, %476 ] %.not.i.i.i303 = icmp eq ptr %.sroa.0396.0561, null - br i1 %.not.i.i.i303, label %_ZNSt6vectorIiSaIiEED2Ev.exit304, label %693 + br i1 %.not.i.i.i303, label %_ZNSt6vectorIiSaIiEED2Ev.exit304, label %692 -693: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit204 +692: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit204 call void @_ZdlPv(ptr noundef nonnull %.sroa.0396.0561) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit304 -_ZNSt6vectorIiSaIiEED2Ev.exit304: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit204, %693 +_ZNSt6vectorIiSaIiEED2Ev.exit304: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit204, %692 %.not.i.i.i305 = icmp eq ptr %.sroa.0403.5, null - br i1 %.not.i.i.i305, label %_ZNSt6vectorIiSaIiEED2Ev.exit306, label %694 + br i1 %.not.i.i.i305, label %_ZNSt6vectorIiSaIiEED2Ev.exit306, label %693 -694: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit304 +693: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit304 call void @_ZdlPv(ptr noundef nonnull %.sroa.0403.5) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit306 -_ZNSt6vectorIiSaIiEED2Ev.exit306: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit304, %694 +_ZNSt6vectorIiSaIiEED2Ev.exit306: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit304, %693 %.not.i.i.i307 = icmp eq ptr %.sroa.0411.5, null - br i1 %.not.i.i.i307, label %_ZNSt6vectorIiSaIiEED2Ev.exit308, label %695 + br i1 %.not.i.i.i307, label %_ZNSt6vectorIiSaIiEED2Ev.exit308, label %694 -695: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit306 +694: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit306 call void @_ZdlPv(ptr noundef nonnull %.sroa.0411.5) #35 br label %_ZNSt6vectorIiSaIiEED2Ev.exit308 -_ZNSt6vectorIiSaIiEED2Ev.exit308: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit306, %695 +_ZNSt6vectorIiSaIiEED2Ev.exit308: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit306, %694 call void @_ZNSt6vectorIS_IbSaIbEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #19 call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #19 resume { ptr, i32 } %.pn101.pn diff --git a/bench/llvm/optimized/MachinePipeliner.cpp.ll b/bench/llvm/optimized/MachinePipeliner.cpp.ll index 8584b84abe3..4508e885771 100644 --- a/bench/llvm/optimized/MachinePipeliner.cpp.ll +++ b/bench/llvm/optimized/MachinePipeliner.cpp.ll @@ -32157,7 +32157,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5SUnitESt4pairIjlENS_12DenseMapInfoIS3_v %63 = zext i32 %39 to i64 %64 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair.706", ptr %37, i64 %63 %.not = icmp eq ptr %.0.i.pn.i, %64 - br i1 %.not, label %293, label %65 + br i1 %.not, label %291, label %65 65: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5SUnitESt4pairIjlENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit %66 = getelementptr inbounds nuw i8, ptr %.0.i.pn.i, i64 8 @@ -32170,7 +32170,7 @@ _ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5SUnitESt4pairIjlENS_12DenseMapInfoIS3_v %70 = getelementptr inbounds i8, ptr %69, i64 736 %71 = load ptr, ptr %70, align 8 %72 = call noundef zeroext i1 %71(ptr noundef nonnull align 8 dereferenceable(80) %68, ptr noundef nonnull align 8 dereferenceable(70) %1, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) #25 - br i1 %72, label %73, label %293 + br i1 %72, label %73, label %291 73: ; preds = %65 %74 = load i32, ptr %5, align 4 @@ -32417,7 +32417,7 @@ _ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82: ; preds = %_ZNK4llvm10 %191 = phi i32 [ %171, %_ZNKSt8_Rb_treeIPN4llvm5SUnitESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS5_EPKSt18_Rb_tree_node_baseRS4_.exit.i.i.i78 ], [ %171, %185 ], [ 0, %_ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit.thread ] %.sroa.0.0.i.i.i81 = phi ptr [ %109, %_ZNKSt8_Rb_treeIPN4llvm5SUnitESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS5_EPKSt18_Rb_tree_node_baseRS4_.exit.i.i.i78 ], [ %spec.select.i.i.i79, %185 ], [ %109, %_ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit.thread ] %192 = icmp slt i32 %.0.i67104, %.0.i - br i1 %192, label %193, label %293 + br i1 %192, label %193, label %291 193: ; preds = %_ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82 %194 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i.i81, i64 40 @@ -32430,7 +32430,7 @@ _ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82: ; preds = %_ZNK4llvm10 store ptr %200, ptr %7, align 8 %201 = sub nsw i32 %.0.i, %.0.i67104 %202 = icmp slt i32 %191, %197 - br i1 %202, label %203, label %211 + br i1 %202, label %203, label %209 203: ; preds = %193 %204 = load i32, ptr %5, align 4 @@ -32439,156 +32439,154 @@ _ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82: ; preds = %_ZNK4llvm10 %207 = zext i32 %204 to i64 %208 = getelementptr inbounds %"class.llvm::MachineOperand", ptr %206, i64 %207 call void @_ZN4llvm14MachineOperand6setRegENS_8RegisterE(ptr noundef nonnull align 8 dereferenceable(32) %208, i32 %.sroa.012.0.copyload) #25 - %209 = icmp sgt i32 %201, 0 - %210 = sext i1 %209 to i32 - %spec.select = add nsw i32 %201, %210 - br label %211 + %spec.select = add nsw i32 %201, -1 + br label %209 -211: ; preds = %203, %193 +209: ; preds = %203, %193 %.0 = phi i32 [ %201, %193 ], [ %spec.select, %203 ] - %212 = load i32, ptr %6, align 4 - %213 = load ptr, ptr %75, align 8 - %214 = zext i32 %212 to i64 - %215 = getelementptr inbounds %"class.llvm::MachineOperand", ptr %213, i64 %214, i32 3 - %216 = load i64, ptr %215, align 8 - %217 = sext i32 %.0 to i64 - %218 = mul nsw i64 %.sroa.213.0.copyload, %217 - %219 = add nsw i64 %216, %218 - %220 = getelementptr inbounds nuw i8, ptr %200, i64 32 - %221 = load ptr, ptr %220, align 8 - %222 = getelementptr inbounds %"class.llvm::MachineOperand", ptr %221, i64 %214, i32 3 - store i64 %219, ptr %222, align 8 + %210 = load i32, ptr %6, align 4 + %211 = load ptr, ptr %75, align 8 + %212 = zext i32 %210 to i64 + %213 = getelementptr inbounds %"class.llvm::MachineOperand", ptr %211, i64 %212, i32 3 + %214 = load i64, ptr %213, align 8 + %215 = sext i32 %.0 to i64 + %216 = mul nsw i64 %.sroa.213.0.copyload, %215 + %217 = add nsw i64 %214, %216 + %218 = getelementptr inbounds nuw i8, ptr %200, i64 32 + %219 = load ptr, ptr %218, align 8 + %220 = getelementptr inbounds %"class.llvm::MachineOperand", ptr %219, i64 %212, i32 3 + store i64 %217, ptr %220, align 8 store ptr %200, ptr %.0.i.i, align 8 - %223 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 254 - %224 = load i8, ptr %223, align 2 - %225 = or i8 %224, 8 - store i8 %225, ptr %223, align 2 - %226 = load ptr, ptr %8, align 8 - %227 = load i32, ptr %10, align 8 - %228 = icmp eq i32 %227, 0 - br i1 %228, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i, label %229 - -229: ; preds = %211 - %230 = ptrtoint ptr %200 to i64 - %231 = trunc i64 %230 to i32 - %232 = lshr i32 %231, 4 - %233 = lshr i32 %231, 9 - %234 = xor i32 %232, %233 - %235 = add i32 %227, -1 - %.02733.i.i.i.i = and i32 %234, %235 - %236 = zext nneg i32 %.02733.i.i.i.i to i64 - %237 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair.834", ptr %226, i64 %236 - %238 = load ptr, ptr %237, align 8 - %239 = icmp eq ptr %200, %238 - br i1 %239, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit, label %.lr.ph.i.i.i.i83 - -.lr.ph.i.i.i.i83: ; preds = %229, %245 - %240 = phi ptr [ %252, %245 ], [ %238, %229 ] - %241 = phi ptr [ %251, %245 ], [ %237, %229 ] - %.02736.i.i.i.i = phi i32 [ %.027.i.i.i.i, %245 ], [ %.02733.i.i.i.i, %229 ] - %.02635.i.i.i.i = phi i32 [ %248, %245 ], [ 1, %229 ] - %.02834.i.i.i.i = phi ptr [ %spec.select.i.i.i.i, %245 ], [ null, %229 ] - %242 = icmp eq ptr %240, inttoptr (i64 -4096 to ptr) - br i1 %242, label %243, label %245 - -243: ; preds = %.lr.ph.i.i.i.i83 + %221 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 254 + %222 = load i8, ptr %221, align 2 + %223 = or i8 %222, 8 + store i8 %223, ptr %221, align 2 + %224 = load ptr, ptr %8, align 8 + %225 = load i32, ptr %10, align 8 + %226 = icmp eq i32 %225, 0 + br i1 %226, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i, label %227 + +227: ; preds = %209 + %228 = ptrtoint ptr %200 to i64 + %229 = trunc i64 %228 to i32 + %230 = lshr i32 %229, 4 + %231 = lshr i32 %229, 9 + %232 = xor i32 %230, %231 + %233 = add i32 %225, -1 + %.02733.i.i.i.i = and i32 %232, %233 + %234 = zext nneg i32 %.02733.i.i.i.i to i64 + %235 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair.834", ptr %224, i64 %234 + %236 = load ptr, ptr %235, align 8 + %237 = icmp eq ptr %200, %236 + br i1 %237, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit, label %.lr.ph.i.i.i.i83 + +.lr.ph.i.i.i.i83: ; preds = %227, %243 + %238 = phi ptr [ %250, %243 ], [ %236, %227 ] + %239 = phi ptr [ %249, %243 ], [ %235, %227 ] + %.02736.i.i.i.i = phi i32 [ %.027.i.i.i.i, %243 ], [ %.02733.i.i.i.i, %227 ] + %.02635.i.i.i.i = phi i32 [ %246, %243 ], [ 1, %227 ] + %.02834.i.i.i.i = phi ptr [ %spec.select.i.i.i.i, %243 ], [ null, %227 ] + %240 = icmp eq ptr %238, inttoptr (i64 -4096 to ptr) + br i1 %240, label %241, label %243 + +241: ; preds = %.lr.ph.i.i.i.i83 %.not.i.i.i.i85 = icmp eq ptr %.02834.i.i.i.i, null - %244 = select i1 %.not.i.i.i.i85, ptr %241, ptr %.02834.i.i.i.i + %242 = select i1 %.not.i.i.i.i85, ptr %239, ptr %.02834.i.i.i.i br label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i -245: ; preds = %.lr.ph.i.i.i.i83 - %246 = icmp eq ptr %240, inttoptr (i64 -8192 to ptr) - %247 = icmp eq ptr %.02834.i.i.i.i, null - %or.cond.not.i.i.i.i = select i1 %246, i1 %247, i1 false - %spec.select.i.i.i.i = select i1 %or.cond.not.i.i.i.i, ptr %241, ptr %.02834.i.i.i.i - %248 = add i32 %.02635.i.i.i.i, 1 - %249 = add i32 %.02635.i.i.i.i, %.02736.i.i.i.i - %.027.i.i.i.i = and i32 %249, %235 - %250 = zext i32 %.027.i.i.i.i to i64 - %251 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair.834", ptr %226, i64 %250 - %252 = load ptr, ptr %251, align 8 - %253 = icmp eq ptr %200, %252 - br i1 %253, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit, label %.lr.ph.i.i.i.i83, !llvm.loop !416 - -_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i: ; preds = %243, %211 - %.sink.i.i.i.i = phi ptr [ %244, %243 ], [ null, %211 ] - %254 = call noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E20InsertIntoBucketImplIS3_EEPSA_RKS3_RKT_SE_(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %.sink.i.i.i.i) - %255 = load ptr, ptr %7, align 8 - store ptr %255, ptr %254, align 8 - %256 = getelementptr inbounds nuw i8, ptr %254, i64 8 - store ptr null, ptr %256, align 8 +243: ; preds = %.lr.ph.i.i.i.i83 + %244 = icmp eq ptr %238, inttoptr (i64 -8192 to ptr) + %245 = icmp eq ptr %.02834.i.i.i.i, null + %or.cond.not.i.i.i.i = select i1 %244, i1 %245, i1 false + %spec.select.i.i.i.i = select i1 %or.cond.not.i.i.i.i, ptr %239, ptr %.02834.i.i.i.i + %246 = add i32 %.02635.i.i.i.i, 1 + %247 = add i32 %.02635.i.i.i.i, %.02736.i.i.i.i + %.027.i.i.i.i = and i32 %247, %233 + %248 = zext i32 %.027.i.i.i.i to i64 + %249 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair.834", ptr %224, i64 %248 + %250 = load ptr, ptr %249, align 8 + %251 = icmp eq ptr %200, %250 + br i1 %251, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit, label %.lr.ph.i.i.i.i83, !llvm.loop !416 + +_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i: ; preds = %241, %209 + %.sink.i.i.i.i = phi ptr [ %242, %241 ], [ null, %209 ] + %252 = call noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E20InsertIntoBucketImplIS3_EEPSA_RKS3_RKT_SE_(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %.sink.i.i.i.i) + %253 = load ptr, ptr %7, align 8 + store ptr %253, ptr %252, align 8 + %254 = getelementptr inbounds nuw i8, ptr %252, i64 8 + store ptr null, ptr %254, align 8 br label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit -_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit: ; preds = %245, %229, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i - %257 = phi ptr [ %255, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i ], [ %200, %229 ], [ %200, %245 ] - %.0.i.i84 = phi ptr [ %254, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i ], [ %237, %229 ], [ %251, %245 ] - %258 = getelementptr inbounds nuw i8, ptr %.0.i.i84, i64 8 - store ptr %.0.i.i, ptr %258, align 8 - %259 = getelementptr inbounds nuw i8, ptr %0, i64 3192 - %260 = load ptr, ptr %259, align 8 - %261 = getelementptr inbounds nuw i8, ptr %0, i64 3208 - %262 = load i32, ptr %261, align 8 - %263 = icmp eq i32 %262, 0 - br i1 %263, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i, label %264 - -264: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit - %265 = ptrtoint ptr %1 to i64 - %266 = trunc i64 %265 to i32 - %267 = lshr i32 %266, 4 - %268 = lshr i32 %266, 9 - %269 = xor i32 %267, %268 - %270 = add i32 %262, -1 - %.02733.i.i.i.i86 = and i32 %269, %270 - %271 = zext nneg i32 %.02733.i.i.i.i86 to i64 - %272 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair", ptr %260, i64 %271 - %273 = load ptr, ptr %272, align 8 - %274 = icmp eq ptr %1, %273 - br i1 %274, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, label %.lr.ph.i.i.i.i87 - -.lr.ph.i.i.i.i87: ; preds = %264, %280 - %275 = phi ptr [ %287, %280 ], [ %273, %264 ] - %276 = phi ptr [ %286, %280 ], [ %272, %264 ] - %.02736.i.i.i.i88 = phi i32 [ %.027.i.i.i.i93, %280 ], [ %.02733.i.i.i.i86, %264 ] - %.02635.i.i.i.i89 = phi i32 [ %283, %280 ], [ 1, %264 ] - %.02834.i.i.i.i90 = phi ptr [ %spec.select.i.i.i.i92, %280 ], [ null, %264 ] - %277 = icmp eq ptr %275, inttoptr (i64 -4096 to ptr) - br i1 %277, label %278, label %280 - -278: ; preds = %.lr.ph.i.i.i.i87 +_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit: ; preds = %243, %227, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i + %255 = phi ptr [ %253, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i ], [ %200, %227 ], [ %200, %243 ] + %.0.i.i84 = phi ptr [ %252, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E15LookupBucketForIS3_EEbRKT_RPSA_.exit.i.i ], [ %235, %227 ], [ %249, %243 ] + %256 = getelementptr inbounds nuw i8, ptr %.0.i.i84, i64 8 + store ptr %.0.i.i, ptr %256, align 8 + %257 = getelementptr inbounds nuw i8, ptr %0, i64 3192 + %258 = load ptr, ptr %257, align 8 + %259 = getelementptr inbounds nuw i8, ptr %0, i64 3208 + %260 = load i32, ptr %259, align 8 + %261 = icmp eq i32 %260, 0 + br i1 %261, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i, label %262 + +262: ; preds = %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit + %263 = ptrtoint ptr %1 to i64 + %264 = trunc i64 %263 to i32 + %265 = lshr i32 %264, 4 + %266 = lshr i32 %264, 9 + %267 = xor i32 %265, %266 + %268 = add i32 %260, -1 + %.02733.i.i.i.i86 = and i32 %267, %268 + %269 = zext nneg i32 %.02733.i.i.i.i86 to i64 + %270 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair", ptr %258, i64 %269 + %271 = load ptr, ptr %270, align 8 + %272 = icmp eq ptr %1, %271 + br i1 %272, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, label %.lr.ph.i.i.i.i87 + +.lr.ph.i.i.i.i87: ; preds = %262, %278 + %273 = phi ptr [ %285, %278 ], [ %271, %262 ] + %274 = phi ptr [ %284, %278 ], [ %270, %262 ] + %.02736.i.i.i.i88 = phi i32 [ %.027.i.i.i.i93, %278 ], [ %.02733.i.i.i.i86, %262 ] + %.02635.i.i.i.i89 = phi i32 [ %281, %278 ], [ 1, %262 ] + %.02834.i.i.i.i90 = phi ptr [ %spec.select.i.i.i.i92, %278 ], [ null, %262 ] + %275 = icmp eq ptr %273, inttoptr (i64 -4096 to ptr) + br i1 %275, label %276, label %278 + +276: ; preds = %.lr.ph.i.i.i.i87 %.not.i.i.i.i95 = icmp eq ptr %.02834.i.i.i.i90, null - %279 = select i1 %.not.i.i.i.i95, ptr %276, ptr %.02834.i.i.i.i90 + %277 = select i1 %.not.i.i.i.i95, ptr %274, ptr %.02834.i.i.i.i90 br label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i -280: ; preds = %.lr.ph.i.i.i.i87 - %281 = icmp eq ptr %275, inttoptr (i64 -8192 to ptr) - %282 = icmp eq ptr %.02834.i.i.i.i90, null - %or.cond.not.i.i.i.i91 = select i1 %281, i1 %282, i1 false - %spec.select.i.i.i.i92 = select i1 %or.cond.not.i.i.i.i91, ptr %276, ptr %.02834.i.i.i.i90 - %283 = add i32 %.02635.i.i.i.i89, 1 - %284 = add i32 %.02635.i.i.i.i89, %.02736.i.i.i.i88 - %.027.i.i.i.i93 = and i32 %284, %270 - %285 = zext i32 %.027.i.i.i.i93 to i64 - %286 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair", ptr %260, i64 %285 - %287 = load ptr, ptr %286, align 8 - %288 = icmp eq ptr %1, %287 - br i1 %288, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, label %.lr.ph.i.i.i.i87, !llvm.loop !417 - -_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i: ; preds = %278, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit - %.sink.i.i.i.i96 = phi ptr [ %279, %278 ], [ null, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit ] - %289 = call noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E20InsertIntoBucketImplIS3_EEPS8_RKS3_RKT_SC_(ptr noundef nonnull align 1 dereferenceable(1) %259, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %.sink.i.i.i.i96) - %290 = load ptr, ptr %4, align 8 - store ptr %290, ptr %289, align 8 - %291 = getelementptr inbounds nuw i8, ptr %289, i64 8 - store ptr null, ptr %291, align 8 +278: ; preds = %.lr.ph.i.i.i.i87 + %279 = icmp eq ptr %273, inttoptr (i64 -8192 to ptr) + %280 = icmp eq ptr %.02834.i.i.i.i90, null + %or.cond.not.i.i.i.i91 = select i1 %279, i1 %280, i1 false + %spec.select.i.i.i.i92 = select i1 %or.cond.not.i.i.i.i91, ptr %274, ptr %.02834.i.i.i.i90 + %281 = add i32 %.02635.i.i.i.i89, 1 + %282 = add i32 %.02635.i.i.i.i89, %.02736.i.i.i.i88 + %.027.i.i.i.i93 = and i32 %282, %268 + %283 = zext i32 %.027.i.i.i.i93 to i64 + %284 = getelementptr inbounds %"struct.llvm::detail::DenseMapPair", ptr %258, i64 %283 + %285 = load ptr, ptr %284, align 8 + %286 = icmp eq ptr %1, %285 + br i1 %286, label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, label %.lr.ph.i.i.i.i87, !llvm.loop !417 + +_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i: ; preds = %276, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit + %.sink.i.i.i.i96 = phi ptr [ %277, %276 ], [ null, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrEPNS_5SUnitENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_EixERKS3_.exit ] + %287 = call noundef ptr @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E20InsertIntoBucketImplIS3_EEPS8_RKS3_RKT_SC_(ptr noundef nonnull align 1 dereferenceable(1) %257, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %.sink.i.i.i.i96) + %288 = load ptr, ptr %4, align 8 + store ptr %288, ptr %287, align 8 + %289 = getelementptr inbounds nuw i8, ptr %287, i64 8 + store ptr null, ptr %289, align 8 br label %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit -_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit: ; preds = %280, %264, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i - %.0.i.i94 = phi ptr [ %289, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i ], [ %272, %264 ], [ %286, %280 ] - %292 = getelementptr inbounds nuw i8, ptr %.0.i.i94, i64 8 - store ptr %257, ptr %292, align 8 - br label %293 +_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit: ; preds = %278, %262, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i + %.0.i.i94 = phi ptr [ %287, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_E15LookupBucketForIS3_EEbRKT_RPS8_.exit.i.i ], [ %270, %262 ], [ %284, %278 ] + %290 = getelementptr inbounds nuw i8, ptr %.0.i.i94, i64 8 + store ptr %255, ptr %290, align 8 + br label %291 -293: ; preds = %_ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, %65, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5SUnitESt4pairIjlENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit +291: ; preds = %_ZNK4llvm10SMSchedule14cycleScheduledEPNS_5SUnitE.exit82, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_12MachineInstrES3_NS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S3_EEEES3_S3_S5_S8_EixERKS3_.exit, %65, %_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_5SUnitESt4pairIjlENS_12DenseMapInfoIS3_vEENS_6detail12DenseMapPairIS3_S5_EEEES3_S5_S7_SA_E4findEPKS2_.exit ret void } diff --git a/bench/llvm/optimized/RISCVISelLowering.cpp.ll b/bench/llvm/optimized/RISCVISelLowering.cpp.ll index 40832ef3205..ad4a2928f88 100644 --- a/bench/llvm/optimized/RISCVISelLowering.cpp.ll +++ b/bench/llvm/optimized/RISCVISelLowering.cpp.ll @@ -56117,7 +56117,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374: ; preds = %_ZL14getMaskTypeFor 248: ; preds = %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit367 %.sroa.0158.0 = phi ptr [ %.fca.0.extract99, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374 ], [ %.fca.0.extract121, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit367 ] %.sroa.7.0 = phi i32 [ %.fca.1.extract100, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374 ], [ %.fca.1.extract122, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit367 ] - %.merged = phi { ptr, i32 } [ %247, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374 ], [ %225, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit367 ] + %.merged350 = phi { ptr, i32 } [ %247, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit374 ], [ %225, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit367 ] br i1 %spec.select.i, label %249, label %331 249: ; preds = %248 @@ -56449,7 +56449,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392: ; preds = %_ZL14getMaskTypeFor 313: ; preds = %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit386 %.sroa.037.0 = phi ptr [ %.fca.0.extract5, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392 ], [ %.fca.0.extract27, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit386 ] %.sroa.5.0 = phi i32 [ %.fca.1.extract6, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392 ], [ %.fca.1.extract28, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit386 ] - %.merged350 = phi { ptr, i32 } [ %312, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392 ], [ %290, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit386 ] + %.merged = phi { ptr, i32 } [ %312, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit392 ], [ %290, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit386 ] br i1 %spec.select.i, label %314, label %331 314: ; preds = %313 @@ -56501,7 +56501,7 @@ _ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14R br label %331 331: ; preds = %313, %248, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit402, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit - %.fca.1.insert.merged = phi { ptr, i32 } [ %263, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit ], [ %328, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit402 ], [ %.merged, %248 ], [ %.merged350, %313 ] + %.fca.1.insert.merged = phi { ptr, i32 } [ %263, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit ], [ %328, %_ZL25convertFromScalableVectorN4llvm3EVTENS_7SDValueERNS_12SelectionDAGERKNS_14RISCVSubtargetE.exit402 ], [ %.merged350, %248 ], [ %.merged, %313 ] %332 = load ptr, ptr %26, align 8 %.not.i.i.i.i.i = icmp eq ptr %332, null br i1 %.not.i.i.i.i.i, label %_ZN4llvm5SDLocD2Ev.exit, label %333 diff --git a/bench/luau/optimized/ltablib.cpp.ll b/bench/luau/optimized/ltablib.cpp.ll index 355de32ae9f..9641a7bcd9b 100644 --- a/bench/luau/optimized/ltablib.cpp.ll +++ b/bench/luau/optimized/ltablib.cpp.ll @@ -1083,284 +1083,280 @@ define internal fastcc void @_ZL8sort_recP9lua_StateP5TableiiiPFiS0_PK10lua_TVal %16 = getelementptr inbounds i8, ptr %1, i64 8 br label %17 -17: ; preds = %.lr.ph, %128 - %.096160 = phi i32 [ %2, %.lr.ph ], [ %.197, %128 ] - %.098159 = phi i32 [ %3, %.lr.ph ], [ %.199, %128 ] - %.0100158 = phi i32 [ %4, %.lr.ph ], [ %120, %128 ] +17: ; preds = %.lr.ph, %126 + %.096160 = phi i32 [ %2, %.lr.ph ], [ %.197, %126 ] + %.098159 = phi i32 [ %3, %.lr.ph ], [ %.199, %126 ] + %.0100158 = phi i32 [ %4, %.lr.ph ], [ %118, %126 ] %18 = icmp eq i32 %.0100158, 0 - br i1 %18, label %19, label %34 + br i1 %18, label %.lr.ph.preheader.i, label %32 -19: ; preds = %17 - %20 = sub nsw i32 %.098159, %.096160 - %21 = icmp sgt i32 %20, 0 - br i1 %21, label %.lr.ph.preheader.i, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit - -.lr.ph.preheader.i: ; preds = %19 - %22 = add nuw nsw i32 %20, 1 - %23 = lshr i32 %22, 1 +.lr.ph.preheader.i: ; preds = %17 + %19 = sub nsw i32 %.098159, %.096160 + %20 = add nuw nsw i32 %19, 1 + %21 = lshr i32 %20, 1 br label %.lr.ph.i .preheader.i: ; preds = %.lr.ph.i %invariant.op.i = add i32 %.096160, -1 - %24 = sext i32 %.096160 to i64 - %25 = zext nneg i32 %20 to i64 - br label %27 + %22 = sext i32 %.096160 to i64 + %23 = zext nneg i32 %19 to i64 + br label %25 .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %.024.in25.i = phi i32 [ %.024.i, %.lr.ph.i ], [ %23, %.lr.ph.preheader.i ] + %.024.in25.i = phi i32 [ %.024.i, %.lr.ph.i ], [ %21, %.lr.ph.preheader.i ] %.024.i = add nsw i32 %.024.in25.i, -1 tail call fastcc void @_ZL13sort_siftheapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_Ei(ptr noundef %0, ptr noundef readonly %1, i32 noundef %.096160, i32 noundef %.098159, ptr noundef readonly %5, i32 noundef %.024.i) - %26 = icmp samesign ugt i32 %.024.in25.i, 1 - br i1 %26, label %.lr.ph.i, label %.preheader.i, !llvm.loop !20 + %24 = icmp samesign ugt i32 %.024.in25.i, 1 + br i1 %24, label %.lr.ph.i, label %.preheader.i, !llvm.loop !20 -27: ; preds = %27, %.preheader.i - %indvars.iv.i = phi i64 [ %25, %.preheader.i ], [ %indvars.iv.next.i, %27 ] +25: ; preds = %25, %.preheader.i + %indvars.iv.i = phi i64 [ %23, %.preheader.i ], [ %indvars.iv.next.i, %25 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) - %28 = load ptr, ptr %15, align 8 - %29 = getelementptr inbounds %struct.lua_TValue, ptr %28, i64 %24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %29, i64 16, i1 false) - %30 = getelementptr %struct.lua_TValue, ptr %28, i64 %indvars.iv.i - %31 = getelementptr %struct.lua_TValue, ptr %30, i64 %24 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %31, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 16, i1 false) + %26 = load ptr, ptr %15, align 8 + %27 = getelementptr inbounds %struct.lua_TValue, ptr %26, i64 %22 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %27, i64 16, i1 false) + %28 = getelementptr %struct.lua_TValue, ptr %26, i64 %indvars.iv.i + %29 = getelementptr %struct.lua_TValue, ptr %28, i64 %22 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %29, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) - %32 = trunc nuw nsw i64 %indvars.iv.i to i32 - %.reass.i = add i32 %invariant.op.i, %32 + %30 = trunc nuw nsw i64 %indvars.iv.i to i32 + %.reass.i = add i32 %invariant.op.i, %30 tail call fastcc void @_ZL13sort_siftheapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_Ei(ptr noundef %0, ptr noundef readonly %1, i32 noundef %.096160, i32 noundef %.reass.i, ptr noundef readonly %5, i32 noundef 0) %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %33 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %33, label %27, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, !llvm.loop !21 - -34: ; preds = %17 - %35 = load ptr, ptr %15, align 8 - %36 = load i32, ptr %16, align 8 - %37 = sext i32 %.098159 to i64 - %38 = getelementptr inbounds %struct.lua_TValue, ptr %35, i64 %37 - %39 = sext i32 %.096160 to i64 - %40 = getelementptr inbounds %struct.lua_TValue, ptr %35, i64 %39 - %41 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %38, ptr noundef %40) - %42 = load i32, ptr %16, align 8 - %.not.i = icmp eq i32 %42, %36 - br i1 %.not.i, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %43 - -43: ; preds = %34 + %31 = icmp samesign ugt i64 %indvars.iv.i, 1 + br i1 %31, label %25, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, !llvm.loop !21 + +32: ; preds = %17 + %33 = load ptr, ptr %15, align 8 + %34 = load i32, ptr %16, align 8 + %35 = sext i32 %.098159 to i64 + %36 = getelementptr inbounds %struct.lua_TValue, ptr %33, i64 %35 + %37 = sext i32 %.096160 to i64 + %38 = getelementptr inbounds %struct.lua_TValue, ptr %33, i64 %37 + %39 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %36, ptr noundef %38) + %40 = load i32, ptr %16, align 8 + %.not.i = icmp eq i32 %40, %34 + br i1 %.not.i, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %41 + +41: ; preds = %32 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.22) #6 unreachable -_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit: ; preds = %34 - %.not = icmp eq i32 %41, 0 - br i1 %.not, label %48, label %44 +_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit: ; preds = %32 + %.not = icmp eq i32 %39, 0 + br i1 %.not, label %46, label %42 -44: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit +42: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) - %45 = load ptr, ptr %15, align 8 - %46 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %37 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %46, i64 16, i1 false) - %47 = getelementptr inbounds %struct.lua_TValue, ptr %45, i64 %39 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 8 dereferenceable(16) %47, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %12, i64 16, i1 false) + %43 = load ptr, ptr %15, align 8 + %44 = getelementptr inbounds %struct.lua_TValue, ptr %43, i64 %35 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %44, i64 16, i1 false) + %45 = getelementptr inbounds %struct.lua_TValue, ptr %43, i64 %37 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %45, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %12, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) - br label %48 - -48: ; preds = %44, %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit - %49 = sub nsw i32 %.098159, %.096160 - %50 = icmp eq i32 %49, 1 - br i1 %50, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %51 - -51: ; preds = %48 - %52 = ashr i32 %49, 1 - %53 = add nsw i32 %52, %.096160 - %54 = load ptr, ptr %15, align 8 - %55 = load i32, ptr %16, align 8 - %56 = sext i32 %53 to i64 - %57 = getelementptr inbounds %struct.lua_TValue, ptr %54, i64 %56 - %58 = getelementptr inbounds %struct.lua_TValue, ptr %54, i64 %39 - %59 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %57, ptr noundef %58) - %60 = load i32, ptr %16, align 8 - %.not.i113 = icmp eq i32 %60, %55 - br i1 %.not.i113, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114, label %61 - -61: ; preds = %51 + br label %46 + +46: ; preds = %42, %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit + %47 = sub nsw i32 %.098159, %.096160 + %48 = icmp eq i32 %47, 1 + br i1 %48, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %49 + +49: ; preds = %46 + %50 = ashr i32 %47, 1 + %51 = add nsw i32 %50, %.096160 + %52 = load ptr, ptr %15, align 8 + %53 = load i32, ptr %16, align 8 + %54 = sext i32 %51 to i64 + %55 = getelementptr inbounds %struct.lua_TValue, ptr %52, i64 %54 + %56 = getelementptr inbounds %struct.lua_TValue, ptr %52, i64 %37 + %57 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %55, ptr noundef %56) + %58 = load i32, ptr %16, align 8 + %.not.i113 = icmp eq i32 %58, %53 + br i1 %.not.i113, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114, label %59 + +59: ; preds = %49 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.22) #6 unreachable -_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114: ; preds = %51 - %.not106 = icmp eq i32 %59, 0 - br i1 %.not106, label %66, label %62 +_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114: ; preds = %49 + %.not106 = icmp eq i32 %57, 0 + br i1 %.not106, label %64, label %60 -62: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114 +60: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) - %63 = load ptr, ptr %15, align 8 - %64 = getelementptr inbounds %struct.lua_TValue, ptr %63, i64 %56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %64, i64 16, i1 false) - %65 = getelementptr inbounds %struct.lua_TValue, ptr %63, i64 %39 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %65, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 16, i1 false) + %61 = load ptr, ptr %15, align 8 + %62 = getelementptr inbounds %struct.lua_TValue, ptr %61, i64 %54 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %62, i64 16, i1 false) + %63 = getelementptr inbounds %struct.lua_TValue, ptr %61, i64 %37 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 8 dereferenceable(16) %63, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) - br label %77 - -66: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114 - %67 = load ptr, ptr %15, align 8 - %68 = getelementptr inbounds %struct.lua_TValue, ptr %67, i64 %37 - %69 = getelementptr inbounds %struct.lua_TValue, ptr %67, i64 %56 - %70 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %68, ptr noundef %69) - %71 = load i32, ptr %16, align 8 - %.not.i115 = icmp eq i32 %71, %55 - br i1 %.not.i115, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116, label %72 - -72: ; preds = %66 + br label %75 + +64: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit114 + %65 = load ptr, ptr %15, align 8 + %66 = getelementptr inbounds %struct.lua_TValue, ptr %65, i64 %35 + %67 = getelementptr inbounds %struct.lua_TValue, ptr %65, i64 %54 + %68 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %66, ptr noundef %67) + %69 = load i32, ptr %16, align 8 + %.not.i115 = icmp eq i32 %69, %53 + br i1 %.not.i115, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116, label %70 + +70: ; preds = %64 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.22) #6 unreachable -_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116: ; preds = %66 - %.not107 = icmp eq i32 %70, 0 - br i1 %.not107, label %77, label %73 +_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116: ; preds = %64 + %.not107 = icmp eq i32 %68, 0 + br i1 %.not107, label %75, label %71 -73: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116 +71: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) - %74 = load ptr, ptr %15, align 8 - %75 = getelementptr inbounds %struct.lua_TValue, ptr %74, i64 %56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %75, i64 16, i1 false) - %76 = getelementptr inbounds %struct.lua_TValue, ptr %74, i64 %37 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(16) %76, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 16, i1 false) + %72 = load ptr, ptr %15, align 8 + %73 = getelementptr inbounds %struct.lua_TValue, ptr %72, i64 %54 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %73, i64 16, i1 false) + %74 = getelementptr inbounds %struct.lua_TValue, ptr %72, i64 %35 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef nonnull align 8 dereferenceable(16) %74, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull align 8 dereferenceable(16) %10, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) - br label %77 + br label %75 -77: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116, %73, %62 - %78 = icmp eq i32 %49, 2 - br i1 %78, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %79 +75: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit116, %71, %60 + %76 = icmp eq i32 %47, 2 + br i1 %76, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, label %77 -79: ; preds = %77 - %80 = add nsw i32 %.098159, -1 +77: ; preds = %75 + %78 = add nsw i32 %.098159, -1 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) - %81 = load ptr, ptr %15, align 8 - %82 = getelementptr inbounds %struct.lua_TValue, ptr %81, i64 %56 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %82, i64 16, i1 false) - %83 = sext i32 %80 to i64 - %84 = getelementptr inbounds %struct.lua_TValue, ptr %81, i64 %83 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 8 dereferenceable(16) %84, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %84, ptr noundef nonnull align 8 dereferenceable(16) %9, i64 16, i1 false) + %79 = load ptr, ptr %15, align 8 + %80 = getelementptr inbounds %struct.lua_TValue, ptr %79, i64 %54 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %80, i64 16, i1 false) + %81 = sext i32 %78 to i64 + %82 = getelementptr inbounds %struct.lua_TValue, ptr %79, i64 %81 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(16) %82, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %82, ptr noundef nonnull align 8 dereferenceable(16) %9, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) - br label %85 + br label %83 -85: ; preds = %108, %79 - %.094 = phi i32 [ %.096160, %79 ], [ %94, %108 ] - %.0 = phi i32 [ %80, %79 ], [ %109, %108 ] - %86 = sext i32 %.094 to i64 +83: ; preds = %106, %77 + %.094 = phi i32 [ %.096160, %77 ], [ %92, %106 ] + %.0 = phi i32 [ %78, %77 ], [ %107, %106 ] + %84 = sext i32 %.094 to i64 %.pre = load i32, ptr %16, align 8 - br label %87 + br label %85 -87: ; preds = %96, %85 - %indvars.iv = phi i64 [ %indvars.iv.next, %96 ], [ %86, %85 ] +85: ; preds = %94, %83 + %indvars.iv = phi i64 [ %indvars.iv.next, %94 ], [ %84, %83 ] %indvars.iv.next = add nsw i64 %indvars.iv, 1 - %88 = load ptr, ptr %15, align 8 - %89 = getelementptr inbounds %struct.lua_TValue, ptr %88, i64 %indvars.iv.next - %90 = getelementptr inbounds %struct.lua_TValue, ptr %88, i64 %83 - %91 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %89, ptr noundef %90) - %92 = load i32, ptr %16, align 8 - %.not.i117 = icmp eq i32 %92, %.pre - br i1 %.not.i117, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118, label %93 - -93: ; preds = %87 + %86 = load ptr, ptr %15, align 8 + %87 = getelementptr inbounds %struct.lua_TValue, ptr %86, i64 %indvars.iv.next + %88 = getelementptr inbounds %struct.lua_TValue, ptr %86, i64 %81 + %89 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %87, ptr noundef %88) + %90 = load i32, ptr %16, align 8 + %.not.i117 = icmp eq i32 %90, %.pre + br i1 %.not.i117, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118, label %91 + +91: ; preds = %85 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.22) #6 unreachable -_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118: ; preds = %87 - %.not108 = icmp eq i32 %91, 0 - br i1 %.not108, label %.preheader, label %96 +_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118: ; preds = %85 + %.not108 = icmp eq i32 %89, 0 + br i1 %.not108, label %.preheader, label %94 .preheader: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118 - %94 = trunc nsw i64 %indvars.iv.next to i32 - %95 = sext i32 %.0 to i64 - br label %98 + %92 = trunc nsw i64 %indvars.iv.next to i32 + %93 = sext i32 %.0 to i64 + br label %96 -96: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118 - %.not112 = icmp slt i64 %indvars.iv.next, %37 - br i1 %.not112, label %87, label %97, !llvm.loop !22 +94: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit118 + %.not112 = icmp slt i64 %indvars.iv.next, %35 + br i1 %.not112, label %85, label %95, !llvm.loop !22 -97: ; preds = %96 +95: ; preds = %94 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.21) #6 unreachable -98: ; preds = %.preheader, %105 - %indvars.iv201 = phi i64 [ %95, %.preheader ], [ %indvars.iv.next202, %105 ] +96: ; preds = %.preheader, %103 + %indvars.iv201 = phi i64 [ %93, %.preheader ], [ %indvars.iv.next202, %103 ] %indvars.iv.next202 = add nsw i64 %indvars.iv201, -1 - %99 = load ptr, ptr %15, align 8 - %100 = getelementptr inbounds %struct.lua_TValue, ptr %99, i64 %83 - %101 = getelementptr inbounds %struct.lua_TValue, ptr %99, i64 %indvars.iv.next202 - %102 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %100, ptr noundef %101) - %103 = load i32, ptr %16, align 8 - %.not.i119 = icmp eq i32 %103, %.pre - br i1 %.not.i119, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120, label %104 - -104: ; preds = %98 + %97 = load ptr, ptr %15, align 8 + %98 = getelementptr inbounds %struct.lua_TValue, ptr %97, i64 %81 + %99 = getelementptr inbounds %struct.lua_TValue, ptr %97, i64 %indvars.iv.next202 + %100 = tail call noundef i32 %5(ptr noundef %0, ptr noundef %98, ptr noundef %99) + %101 = load i32, ptr %16, align 8 + %.not.i119 = icmp eq i32 %101, %.pre + br i1 %.not.i119, label %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120, label %102 + +102: ; preds = %96 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.22) #6 unreachable -_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120: ; preds = %98 - %.not109 = icmp eq i32 %102, 0 - br i1 %.not109, label %107, label %105 +_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120: ; preds = %96 + %.not109 = icmp eq i32 %100, 0 + br i1 %.not109, label %105, label %103 -105: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120 - %.not111 = icmp sgt i64 %indvars.iv.next202, %39 - br i1 %.not111, label %98, label %106, !llvm.loop !23 +103: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120 + %.not111 = icmp sgt i64 %indvars.iv.next202, %37 + br i1 %.not111, label %96, label %104, !llvm.loop !23 -106: ; preds = %105 +104: ; preds = %103 tail call void (ptr, ptr, ...) @_Z11luaL_errorLP9lua_StatePKcz(ptr noundef %0, ptr noundef nonnull @.str.21) #6 unreachable -107: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120 +105: ; preds = %_Z9sort_lessP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit120 %.not110 = icmp sgt i64 %indvars.iv201, %indvars.iv.next - br i1 %.not110, label %108, label %113 + br i1 %.not110, label %106, label %111 -108: ; preds = %107 - %109 = trunc nsw i64 %indvars.iv.next202 to i32 +106: ; preds = %105 + %107 = trunc nsw i64 %indvars.iv.next202 to i32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) - %110 = load ptr, ptr %15, align 8 - %111 = getelementptr inbounds %struct.lua_TValue, ptr %110, i64 %indvars.iv.next - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %111, i64 16, i1 false) - %112 = getelementptr inbounds %struct.lua_TValue, ptr %110, i64 %indvars.iv.next202 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 8 dereferenceable(16) %112, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 16, i1 false) + %108 = load ptr, ptr %15, align 8 + %109 = getelementptr inbounds %struct.lua_TValue, ptr %108, i64 %indvars.iv.next + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %109, i64 16, i1 false) + %110 = getelementptr inbounds %struct.lua_TValue, ptr %108, i64 %indvars.iv.next202 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 8 dereferenceable(16) %110, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef nonnull align 8 dereferenceable(16) %8, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) - br label %85, !llvm.loop !24 + br label %83, !llvm.loop !24 -113: ; preds = %107 - %114 = trunc nsw i64 %indvars.iv to i32 +111: ; preds = %105 + %112 = trunc nsw i64 %indvars.iv to i32 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) - %115 = load ptr, ptr %15, align 8 - %116 = getelementptr inbounds %struct.lua_TValue, ptr %115, i64 %83 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %116, i64 16, i1 false) - %117 = getelementptr inbounds %struct.lua_TValue, ptr %115, i64 %indvars.iv.next - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %117, i64 16, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull align 8 dereferenceable(16) %7, i64 16, i1 false) + %113 = load ptr, ptr %15, align 8 + %114 = getelementptr inbounds %struct.lua_TValue, ptr %113, i64 %81 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %114, i64 16, i1 false) + %115 = getelementptr inbounds %struct.lua_TValue, ptr %113, i64 %indvars.iv.next + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull align 8 dereferenceable(16) %115, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull align 8 dereferenceable(16) %7, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - %118 = lshr i32 %.0100158, 1 - %119 = lshr i32 %.0100158, 2 - %120 = add nuw nsw i32 %118, %119 - %121 = sub nsw i32 %94, %.096160 - %122 = sub nsw i32 %.098159, %94 - %123 = icmp slt i32 %121, %122 - br i1 %123, label %124, label %126 - -124: ; preds = %113 - tail call fastcc void @_ZL8sort_recP9lua_StateP5TableiiiPFiS0_PK10lua_TValueS5_E(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %.096160, i32 noundef %114, i32 noundef %120, ptr noundef %5) - %125 = add nsw i32 %114, 2 - br label %128 - -126: ; preds = %113 - %127 = add nsw i32 %114, 2 - tail call fastcc void @_ZL8sort_recP9lua_StateP5TableiiiPFiS0_PK10lua_TValueS5_E(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %127, i32 noundef %.098159, i32 noundef %120, ptr noundef %5) - br label %128 - -128: ; preds = %126, %124 - %.199 = phi i32 [ %.098159, %124 ], [ %114, %126 ] - %.197 = phi i32 [ %125, %124 ], [ %.096160, %126 ] - %129 = icmp slt i32 %.197, %.199 - br i1 %129, label %17, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, !llvm.loop !25 - -_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit: ; preds = %128, %48, %77, %27, %6, %19 + %116 = lshr i32 %.0100158, 1 + %117 = lshr i32 %.0100158, 2 + %118 = add nuw nsw i32 %116, %117 + %119 = sub nsw i32 %92, %.096160 + %120 = sub nsw i32 %.098159, %92 + %121 = icmp slt i32 %119, %120 + br i1 %121, label %122, label %124 + +122: ; preds = %111 + tail call fastcc void @_ZL8sort_recP9lua_StateP5TableiiiPFiS0_PK10lua_TValueS5_E(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %.096160, i32 noundef %112, i32 noundef %118, ptr noundef %5) + %123 = add nsw i32 %112, 2 + br label %126 + +124: ; preds = %111 + %125 = add nsw i32 %112, 2 + tail call fastcc void @_ZL8sort_recP9lua_StateP5TableiiiPFiS0_PK10lua_TValueS5_E(ptr noundef %0, ptr noundef nonnull %1, i32 noundef %125, i32 noundef %.098159, i32 noundef %118, ptr noundef %5) + br label %126 + +126: ; preds = %124, %122 + %.199 = phi i32 [ %.098159, %122 ], [ %112, %124 ] + %.197 = phi i32 [ %123, %122 ], [ %.096160, %124 ] + %127 = icmp slt i32 %.197, %.199 + br i1 %127, label %17, label %_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit, !llvm.loop !25 + +_ZL9sort_heapP9lua_StateP5TableiiPFiS0_PK10lua_TValueS5_E.exit: ; preds = %126, %46, %75, %25, %6 ret void } diff --git a/bench/meshlab/optimized/filter_func.cpp.ll b/bench/meshlab/optimized/filter_func.cpp.ll index 677a48bbbcc..f8b110bac87 100644 --- a/bench/meshlab/optimized/filter_func.cpp.ll +++ b/bench/meshlab/optimized/filter_func.cpp.ll @@ -18143,17 +18143,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit: ; preds = %_ZN11GLLogStream br label %_ZN7QStringD2Ev.exit1034 534: ; preds = %510, %491, %489 - %.merged922 = phi { ptr, i32 } [ %490, %489 ], [ %.pn917.pn2197, %510 ], [ %492, %491 ] + %.merged957 = phi { ptr, i32 } [ %490, %489 ], [ %.pn917.pn2197, %510 ], [ %492, %491 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %39) #28 br label %535 535: ; preds = %534, %487 - %.merged921 = phi { ptr, i32 } [ %.merged922, %534 ], [ %488, %487 ] + %.merged956 = phi { ptr, i32 } [ %.merged957, %534 ], [ %488, %487 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #28 br label %536 536: ; preds = %535, %485 - %.merged920 = phi { ptr, i32 } [ %.merged921, %535 ], [ %486, %485 ] + %.merged955 = phi { ptr, i32 } [ %.merged956, %535 ], [ %486, %485 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -18411,12 +18411,12 @@ _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i1029: ; preds = %_ZN9QtPrivate8RefC br label %_ZN7QStringD2Ev.exit1034 620: ; preds = %592, %573, %572, %566 - %.merged937 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] + %.merged976 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %45) #28 br label %621 621: ; preds = %620, %564 - %.merged936 = phi { ptr, i32 } [ %.merged937, %620 ], [ %565, %564 ] + %.merged975 = phi { ptr, i32 } [ %.merged976, %620 ], [ %565, %564 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -19597,32 +19597,32 @@ _ZN7QStringD2Ev.exit1138: ; preds = %_ZNK19MeshLabPlugin br label %_ZN7QStringD2Ev.exit1034 .loopexit: ; preds = %862, %837, %819, %801, %.loopexit2435, %.loopexit.split-lp, %877, %861, %836, %818, %890 - %.merged989 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] + %.merged982 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #28 br label %1033 1033: ; preds = %.loopexit, %799, %797, %795, %793, %791 - %.merged988 = phi { ptr, i32 } [ %.merged989, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] + %.merged981 = phi { ptr, i32 } [ %.merged982, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %72) #28 br label %1034 1034: ; preds = %1033, %789 - %.merged987 = phi { ptr, i32 } [ %.merged988, %1033 ], [ %790, %789 ] + %.merged980 = phi { ptr, i32 } [ %.merged981, %1033 ], [ %790, %789 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %71) #28 br label %1035 1035: ; preds = %1034, %787 - %.merged986 = phi { ptr, i32 } [ %.merged987, %1034 ], [ %788, %787 ] + %.merged979 = phi { ptr, i32 } [ %.merged980, %1034 ], [ %788, %787 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %70) #28 br label %1036 1036: ; preds = %1035, %785 - %.merged985 = phi { ptr, i32 } [ %.merged986, %1035 ], [ %786, %785 ] + %.merged978 = phi { ptr, i32 } [ %.merged979, %1035 ], [ %786, %785 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %69) #28 br label %1037 1037: ; preds = %734, %736, %1036, %731, %703, %698, %693, %688, %682 - %.merged984 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged985, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] + %.merged977 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged978, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #28 @@ -20311,12 +20311,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1225: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1270: ; preds = %.loopexit2436, %.loopexit.split-lp2437, %1150, %1250, %1200, %1131, %1129 - %.merged983 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] + %.merged974 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %88) #28 br label %1271 1271: ; preds = %1087, %1089, %1270, %1084, %1082 - %.merged982 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged983, %1270 ], [ %1085, %1084 ] + %.merged973 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged974, %1270 ], [ %1085, %1084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -20827,22 +20827,22 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1276: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1451: ; preds = %1430, %1411, %1409 - %.merged941 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] + %.merged942 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %104) #28 br label %1452 1452: ; preds = %1451, %1407 - %.merged940 = phi { ptr, i32 } [ %.merged941, %1451 ], [ %1408, %1407 ] + %.merged941 = phi { ptr, i32 } [ %.merged942, %1451 ], [ %1408, %1407 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %103) #28 br label %1453 1453: ; preds = %1340, %1342, %1452, %1337, %1335 - %.merged939 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged940, %1452 ], [ %1338, %1337 ] + %.merged940 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged941, %1452 ], [ %1338, %1337 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #28 br label %1454 1454: ; preds = %1453, %1334, %1328 - %.merged938 = phi { ptr, i32 } [ %.merged939, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] + %.merged939 = phi { ptr, i32 } [ %.merged940, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -21832,62 +21832,62 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1387: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1768: ; preds = %1747, %1728, %1726, %1724, %1722, %1720, %1718, %1716, %1714 - %.merged966 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] + %.merged954 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %133) #28 br label %1769 1769: ; preds = %1768, %1712 - %.merged965 = phi { ptr, i32 } [ %.merged966, %1768 ], [ %1713, %1712 ] + %.merged953 = phi { ptr, i32 } [ %.merged954, %1768 ], [ %1713, %1712 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %132) #28 br label %1770 1770: ; preds = %1769, %1710 - %.merged964 = phi { ptr, i32 } [ %.merged965, %1769 ], [ %1711, %1710 ] + %.merged952 = phi { ptr, i32 } [ %.merged953, %1769 ], [ %1711, %1710 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %131) #28 br label %1771 1771: ; preds = %1770, %1708 - %.merged963 = phi { ptr, i32 } [ %.merged964, %1770 ], [ %1709, %1708 ] + %.merged951 = phi { ptr, i32 } [ %.merged952, %1770 ], [ %1709, %1708 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %130) #28 br label %1772 1772: ; preds = %1771, %1706 - %.merged962 = phi { ptr, i32 } [ %.merged963, %1771 ], [ %1707, %1706 ] + %.merged950 = phi { ptr, i32 } [ %.merged951, %1771 ], [ %1707, %1706 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %129) #28 br label %1773 1773: ; preds = %1772, %1704 - %.merged961 = phi { ptr, i32 } [ %.merged962, %1772 ], [ %1705, %1704 ] + %.merged949 = phi { ptr, i32 } [ %.merged950, %1772 ], [ %1705, %1704 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %128) #28 br label %1774 1774: ; preds = %1595, %1597, %1773, %1592, %1590 - %.merged960 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged961, %1773 ], [ %1593, %1592 ] + %.merged948 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged949, %1773 ], [ %1593, %1592 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #28 br label %1775 1775: ; preds = %1774, %1589, %1583 - %.merged959 = phi { ptr, i32 } [ %.merged960, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] + %.merged947 = phi { ptr, i32 } [ %.merged948, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #28 br label %1776 1776: ; preds = %1775, %1582, %1576 - %.merged958 = phi { ptr, i32 } [ %.merged959, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] + %.merged946 = phi { ptr, i32 } [ %.merged947, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #28 br label %1777 1777: ; preds = %1776, %1575, %1569 - %.merged957 = phi { ptr, i32 } [ %.merged958, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] + %.merged945 = phi { ptr, i32 } [ %.merged946, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #28 br label %1778 1778: ; preds = %1777, %1568, %1562 - %.merged956 = phi { ptr, i32 } [ %.merged957, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] + %.merged944 = phi { ptr, i32 } [ %.merged945, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #28 br label %1779 1779: ; preds = %1778, %1561, %1555 - %.merged955 = phi { ptr, i32 } [ %.merged956, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] + %.merged943 = phi { ptr, i32 } [ %.merged944, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -22614,32 +22614,32 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1463: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2443: ; preds = %1946, %1928, %1910, %.loopexit2444, %.loopexit.split-lp2445, %1973, %1945, %1927, %1974, %1908, %1906, %1904 - %.merged954 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] + %.merged938 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %156) #28 br label %2003 2003: ; preds = %.loopexit2443, %1902 - %.merged953 = phi { ptr, i32 } [ %.merged954, %.loopexit2443 ], [ %1903, %1902 ] + %.merged937 = phi { ptr, i32 } [ %.merged938, %.loopexit2443 ], [ %1903, %1902 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %155) #28 br label %2004 2004: ; preds = %2003, %1900 - %.merged952 = phi { ptr, i32 } [ %.merged953, %2003 ], [ %1901, %1900 ] + %.merged936 = phi { ptr, i32 } [ %.merged937, %2003 ], [ %1901, %1900 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %154) #28 br label %2005 2005: ; preds = %1863, %1865, %2004, %1860, %1858 - %.merged951 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged952, %2004 ], [ %1861, %1860 ] + %.merged935 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged936, %2004 ], [ %1861, %1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #28 br label %2006 2006: ; preds = %2005, %1857, %1851 - %.merged950 = phi { ptr, i32 } [ %.merged951, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] + %.merged934 = phi { ptr, i32 } [ %.merged935, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #28 br label %2007 2007: ; preds = %2006, %1850, %1844 - %.merged949 = phi { ptr, i32 } [ %.merged950, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] + %.merged933 = phi { ptr, i32 } [ %.merged934, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -23542,42 +23542,42 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1557: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2449: ; preds = %2219, %2201, %2183, %2165, %.loopexit2450, %.loopexit.split-lp2451, %2246, %2218, %2200, %2182, %2247, %2163, %2161, %2159, %2157 - %.merged935 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] + %.merged932 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %181) #28 br label %2285 2285: ; preds = %.loopexit2449, %2155 - %.merged934 = phi { ptr, i32 } [ %.merged935, %.loopexit2449 ], [ %2156, %2155 ] + %.merged931 = phi { ptr, i32 } [ %.merged932, %.loopexit2449 ], [ %2156, %2155 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %180) #28 br label %2286 2286: ; preds = %2285, %2153 - %.merged933 = phi { ptr, i32 } [ %.merged934, %2285 ], [ %2154, %2153 ] + %.merged930 = phi { ptr, i32 } [ %.merged931, %2285 ], [ %2154, %2153 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %179) #28 br label %2287 2287: ; preds = %2286, %2151 - %.merged932 = phi { ptr, i32 } [ %.merged933, %2286 ], [ %2152, %2151 ] + %.merged929 = phi { ptr, i32 } [ %.merged930, %2286 ], [ %2152, %2151 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %178) #28 br label %2288 2288: ; preds = %2110, %2112, %2287, %2107, %2105 - %.merged931 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged932, %2287 ], [ %2108, %2107 ] + %.merged928 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged929, %2287 ], [ %2108, %2107 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #28 br label %2289 2289: ; preds = %2288, %2104, %2098 - %.merged930 = phi { ptr, i32 } [ %.merged931, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] + %.merged927 = phi { ptr, i32 } [ %.merged928, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #28 br label %2290 2290: ; preds = %2289, %2097, %2091 - %.merged929 = phi { ptr, i32 } [ %.merged930, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] + %.merged926 = phi { ptr, i32 } [ %.merged927, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #28 br label %2291 2291: ; preds = %2290, %2090, %2084 - %.merged928 = phi { ptr, i32 } [ %.merged929, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] + %.merged925 = phi { ptr, i32 } [ %.merged926, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24198,12 +24198,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1634: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2456: ; preds = %2379, %.loopexit2457, %.loopexit.split-lp2458, %2406, %2495, %2483, %2407, %2377 - %.merged924 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] + %.merged921 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %196) #28 br label %2515 2515: ; preds = %2337, %2339, %.loopexit2456, %2334, %2332 - %.merged923 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged924, %.loopexit2456 ], [ %2335, %2334 ] + %.merged920 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged921, %.loopexit2456 ], [ %2335, %2334 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24842,17 +24842,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1684: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2736: ; preds = %2647, %2628, %2626, %2624 - %.merged927 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] + %.merged972 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %211) #28 br label %2737 2737: ; preds = %2585, %2587, %2736, %2594, %.body, %2582 - %.merged926 = phi { ptr, i32 } [ %.merged927, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] + %.merged971 = phi { ptr, i32 } [ %.merged972, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #28 br label %2738 2738: ; preds = %2737, %2581, %2575 - %.merged925 = phi { ptr, i32 } [ %.merged926, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] + %.merged970 = phi { ptr, i32 } [ %.merged971, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -25316,17 +25316,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1728: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2890: ; preds = %2869, %2850, %2848, %2846 - %.merged981 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] + %.merged924 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %225) #28 br label %2891 2891: ; preds = %2808, %2810, %2890, %2816, %.body1711, %2805 - %.merged980 = phi { ptr, i32 } [ %.merged981, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] + %.merged923 = phi { ptr, i32 } [ %.merged924, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #28 br label %2892 2892: ; preds = %2891, %2804, %2798 - %.merged979 = phi { ptr, i32 } [ %.merged980, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] + %.merged922 = phi { ptr, i32 } [ %.merged923, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26042,37 +26042,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1805: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3120: ; preds = %3099, %3080, %3078, %3076, %3074, %3072 - %.merged978 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] + %.merged969 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %247) #28 br label %3121 3121: ; preds = %3120, %3070 - %.merged977 = phi { ptr, i32 } [ %.merged978, %3120 ], [ %3071, %3070 ] + %.merged968 = phi { ptr, i32 } [ %.merged969, %3120 ], [ %3071, %3070 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %246) #28 br label %3122 3122: ; preds = %3121, %3068 - %.merged976 = phi { ptr, i32 } [ %.merged977, %3121 ], [ %3069, %3068 ] + %.merged967 = phi { ptr, i32 } [ %.merged968, %3121 ], [ %3069, %3068 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %245) #28 br label %3123 3123: ; preds = %3000, %3002, %3122, %3008, %.body1783, %2997 - %.merged975 = phi { ptr, i32 } [ %.merged976, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] + %.merged966 = phi { ptr, i32 } [ %.merged967, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #28 br label %3124 3124: ; preds = %3123, %2996, %2990 - %.merged974 = phi { ptr, i32 } [ %.merged975, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] + %.merged965 = phi { ptr, i32 } [ %.merged966, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #28 br label %3125 3125: ; preds = %3124, %2989, %2983 - %.merged973 = phi { ptr, i32 } [ %.merged974, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] + %.merged964 = phi { ptr, i32 } [ %.merged965, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #28 br label %3126 3126: ; preds = %3125, %2982, %2976 - %.merged972 = phi { ptr, i32 } [ %.merged973, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] + %.merged963 = phi { ptr, i32 } [ %.merged964, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26788,37 +26788,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1882: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3354: ; preds = %3333, %3314, %3312, %3310, %3308, %3306 - %.merged948 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] + %.merged989 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %271) #28 br label %3355 3355: ; preds = %3354, %3304 - %.merged947 = phi { ptr, i32 } [ %.merged948, %3354 ], [ %3305, %3304 ] + %.merged988 = phi { ptr, i32 } [ %.merged989, %3354 ], [ %3305, %3304 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %270) #28 br label %3356 3356: ; preds = %3355, %3302 - %.merged946 = phi { ptr, i32 } [ %.merged947, %3355 ], [ %3303, %3302 ] + %.merged987 = phi { ptr, i32 } [ %.merged988, %3355 ], [ %3303, %3302 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %269) #28 br label %3357 3357: ; preds = %3234, %3236, %3356, %3242, %.body1860, %3231 - %.merged945 = phi { ptr, i32 } [ %.merged946, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] + %.merged986 = phi { ptr, i32 } [ %.merged987, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #28 br label %3358 3358: ; preds = %3357, %3230, %3224 - %.merged944 = phi { ptr, i32 } [ %.merged945, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] + %.merged985 = phi { ptr, i32 } [ %.merged986, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #28 br label %3359 3359: ; preds = %3358, %3223, %3217 - %.merged943 = phi { ptr, i32 } [ %.merged944, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] + %.merged984 = phi { ptr, i32 } [ %.merged985, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %257) #28 br label %3360 3360: ; preds = %3359, %3216, %3210 - %.merged942 = phi { ptr, i32 } [ %.merged943, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] + %.merged983 = phi { ptr, i32 } [ %.merged984, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -28202,17 +28202,17 @@ _ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev. br label %_ZN7QStringD2Ev.exit1034 3834: ; preds = %3761, %.split.us, %3745, %3743, %3741 - %.merged971 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] + %.merged962 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #28 br label %3835 3835: ; preds = %3834, %3740, %3735, %3727, %3719, %3710 - %.merged970 = phi { ptr, i32 } [ %.merged971, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] + %.merged961 = phi { ptr, i32 } [ %.merged962, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %293) #28 br label %3836 3836: ; preds = %3694, %3696, %3698, %3700, %3702, %3704, %3706, %3708, %3835 - %.merged968 = phi { ptr, i32 } [ %.merged970, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] + %.merged959 = phi { ptr, i32 } [ %.merged961, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] call void @_ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(172) %285) #28 %3837 = load ptr, ptr %3487, align 8 %.not.i.i.i.i2025 = icmp eq ptr %3837, null @@ -28739,7 +28739,7 @@ _ZN7QStringD2Ev.exit1034: ; preds = %_ZN3vcg3tri14Update ret void _ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026: ; preds = %3838, %3836, %3407, %3409, %3967, %3909, %3444, %3404, %3402, %3400, %3398, %3360, %3209, %3126, %2975, %2892, %2797, %2738, %2574, %2515, %2331, %2291, %2083, %2007, %1843, %1779, %1554, %1454, %1327, %1271, %1081, %1037, %621, %562, %536, %484, %373 - %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged942, %3360 ], [ %.pn777, %3209 ], [ %.merged972, %3126 ], [ %.pn790, %2975 ], [ %.merged979, %2892 ], [ %.pn803, %2797 ], [ %.merged925, %2738 ], [ %.pn812, %2574 ], [ %.merged923, %2515 ], [ %.pn821, %2331 ], [ %.merged928, %2291 ], [ %.pn827, %2083 ], [ %.merged949, %2007 ], [ %.pn845, %1843 ], [ %.merged955, %1779 ], [ %.pn859, %1554 ], [ %.merged938, %1454 ], [ %.pn876, %1327 ], [ %.merged982, %1271 ], [ %.pn885, %1081 ], [ %.merged984, %1037 ], [ %.merged936, %621 ], [ %563, %562 ], [ %.merged920, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged968, %3836 ], [ %.merged968, %3838 ] + %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged983, %3360 ], [ %.pn777, %3209 ], [ %.merged963, %3126 ], [ %.pn790, %2975 ], [ %.merged922, %2892 ], [ %.pn803, %2797 ], [ %.merged970, %2738 ], [ %.pn812, %2574 ], [ %.merged920, %2515 ], [ %.pn821, %2331 ], [ %.merged925, %2291 ], [ %.pn827, %2083 ], [ %.merged933, %2007 ], [ %.pn845, %1843 ], [ %.merged943, %1779 ], [ %.pn859, %1554 ], [ %.merged939, %1454 ], [ %.pn876, %1327 ], [ %.merged973, %1271 ], [ %.pn885, %1081 ], [ %.merged977, %1037 ], [ %.merged975, %621 ], [ %563, %562 ], [ %.merged955, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged959, %3836 ], [ %.merged959, %3838 ] resume { ptr, i32 } %.merged 3973: ; preds = %3761, %3333, %3099, %2869, %2647, %2406, %2246, %2218, %2200, %2182, %1973, %1945, %1927, %1747, %1430, %1150, %877, %861, %836, %818, %592, %510 diff --git a/bench/minetest/optimized/c_content.cpp.ll b/bench/minetest/optimized/c_content.cpp.ll index ecd205f4d58..fbd37a0ef18 100644 --- a/bench/minetest/optimized/c_content.cpp.ll +++ b/bench/minetest/optimized/c_content.cpp.ll @@ -7170,7 +7170,7 @@ if.then.i.i7.i: ; preds = %lpad2.i br label %common.resume common.resume: ; preds = %ehcleanup34, %ehcleanup141, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150, %cleanup.action, %if.then.i.i8.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216, %if.then.i.i7.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged21, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged23, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] resume { ptr, i32 } %common.resume.op if.end5: ; preds = %if.end @@ -7443,7 +7443,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.th br label %return ehcleanup32: ; preds = %lpad19, %lpad29, %catch.dispatch - %.merged22 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] + %.merged21 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] %40 = load ptr, ptr %itemstring, align 8, !tbaa !11 %cmp.i.i.i242 = icmp eq ptr %40, %17 br i1 %cmp.i.i.i242, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, label %if.then.i.i243 @@ -7459,7 +7459,7 @@ if.then.i.i243: ; preds = %ehcleanup32 br label %ehcleanup34 ehcleanup34: ; preds = %if.then.i.i243, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, %lpad - %.merged21 = phi { ptr, i32 } [ %27, %lpad ], [ %.merged22, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged22, %if.then.i.i243 ] + %.merged = phi { ptr, i32 } [ %27, %lpad ], [ %.merged21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged21, %if.then.i.i243 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %itemstring) #31 br label %common.resume @@ -8055,7 +8055,7 @@ ehcleanup150: ; preds = %lpad147 br i1 %cleanup.isactive.0, label %cleanup.action, label %common.resume cleanup.action: ; preds = %ehcleanup150, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150.thread - %.merged = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %.merged23 = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] call void @__cxa_free_exception(ptr %exception) #31 br label %common.resume diff --git a/bench/minetest/optimized/test_serialization.cpp.ll b/bench/minetest/optimized/test_serialization.cpp.ll index 204f790305e..915a5c3b205 100644 --- a/bench/minetest/optimized/test_serialization.cpp.ll +++ b/bench/minetest/optimized/test_serialization.cpp.ll @@ -3908,7 +3908,7 @@ ehcleanup83: ; preds = %lpad79 br i1 %cleanup.isactive81.0, label %cleanup.action87, label %ehcleanup90 cleanup.action87: ; preds = %ehcleanup83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267, %ehcleanup83.thread - %.merged24 = phi { ptr, i32 } [ %58, %ehcleanup83.thread ], [ %59, %ehcleanup83 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] + %.merged27 = phi { ptr, i32 } [ %58, %ehcleanup83.thread ], [ %59, %ehcleanup83 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] call void @__cxa_free_exception(ptr %exception74) #27 br label %ehcleanup90 @@ -3971,12 +3971,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit284: ; preds = %if to label %invoke.cont119 unwind label %ehcleanup124.thread ehcleanup90: ; preds = %cleanup.action87, %ehcleanup83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267, %lpad70, %lpad68 - %.merged23 = phi { ptr, i32 } [ %.merged24, %cleanup.action87 ], [ %59, %ehcleanup83 ], [ %57, %lpad70 ], [ %52, %lpad68 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] + %.merged26 = phi { ptr, i32 } [ %.merged27, %cleanup.action87 ], [ %59, %ehcleanup83 ], [ %57, %lpad70 ], [ %52, %lpad68 ], [ %59, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i267 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is62) #27 br label %ehcleanup92 ehcleanup92: ; preds = %ehcleanup90, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 - %.merged = phi { ptr, i32 } [ %.merged23, %ehcleanup90 ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 ] + %.merged25 = phi { ptr, i32 } [ %.merged26, %ehcleanup90 ], [ %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit264 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is62) #27 br label %eh.resume @@ -4057,7 +4057,7 @@ ehcleanup124: ; preds = %lpad120 br i1 %cleanup.isactive122.0, label %cleanup.action128, label %ehcleanup131 cleanup.action128: ; preds = %ehcleanup124, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293, %ehcleanup124.thread - %.merged27 = phi { ptr, i32 } [ %77, %ehcleanup124.thread ], [ %78, %ehcleanup124 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] + %.merged30 = phi { ptr, i32 } [ %77, %ehcleanup124.thread ], [ %78, %ehcleanup124 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] call void @__cxa_free_exception(ptr %exception115) #27 br label %ehcleanup131 @@ -4120,12 +4120,12 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit310: ; preds = %if to label %invoke.cont160 unwind label %ehcleanup165.thread ehcleanup131: ; preds = %cleanup.action128, %ehcleanup124, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293, %lpad109, %lpad101 - %.merged26 = phi { ptr, i32 } [ %.merged27, %cleanup.action128 ], [ %78, %ehcleanup124 ], [ %76, %lpad109 ], [ %72, %lpad101 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] + %.merged29 = phi { ptr, i32 } [ %.merged30, %cleanup.action128 ], [ %78, %ehcleanup124 ], [ %76, %lpad109 ], [ %72, %lpad101 ], [ %78, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i293 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is93) #27 br label %ehcleanup133 ehcleanup133: ; preds = %ehcleanup131, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 - %.merged25 = phi { ptr, i32 } [ %.merged26, %ehcleanup131 ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 ] + %.merged28 = phi { ptr, i32 } [ %.merged29, %ehcleanup131 ], [ %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit290 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is93) #27 br label %eh.resume @@ -4206,7 +4206,7 @@ ehcleanup165: ; preds = %lpad161 br i1 %cleanup.isactive163.0, label %cleanup.action169, label %ehcleanup172 cleanup.action169: ; preds = %ehcleanup165, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319, %ehcleanup165.thread - %.merged30 = phi { ptr, i32 } [ %96, %ehcleanup165.thread ], [ %97, %ehcleanup165 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] + %.merged24 = phi { ptr, i32 } [ %96, %ehcleanup165.thread ], [ %97, %ehcleanup165 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] call void @__cxa_free_exception(ptr %exception156) #27 br label %ehcleanup172 @@ -4216,17 +4216,17 @@ if.end171: ; preds = %catch147 ret void ehcleanup172: ; preds = %cleanup.action169, %ehcleanup165, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319, %lpad150, %lpad142 - %.merged29 = phi { ptr, i32 } [ %.merged30, %cleanup.action169 ], [ %97, %ehcleanup165 ], [ %95, %lpad150 ], [ %91, %lpad142 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] + %.merged23 = phi { ptr, i32 } [ %.merged24, %cleanup.action169 ], [ %97, %ehcleanup165 ], [ %95, %lpad150 ], [ %91, %lpad142 ], [ %97, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i319 ] call void @_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(120) %is134) #27 br label %ehcleanup174 ehcleanup174: ; preds = %ehcleanup172, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 - %.merged28 = phi { ptr, i32 } [ %.merged29, %ehcleanup172 ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 ] + %.merged = phi { ptr, i32 } [ %.merged23, %ehcleanup172 ], [ %88, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit316 ] call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %is134) #27 br label %eh.resume eh.resume: ; preds = %ehcleanup174, %ehcleanup133, %ehcleanup92, %ehcleanup61 - %lpad.val177.merged = phi { ptr, i32 } [ %.pn192.pn.pn, %ehcleanup61 ], [ %.merged28, %ehcleanup174 ], [ %.merged25, %ehcleanup133 ], [ %.merged, %ehcleanup92 ] + %lpad.val177.merged = phi { ptr, i32 } [ %.pn192.pn.pn, %ehcleanup61 ], [ %.merged, %ehcleanup174 ], [ %.merged28, %ehcleanup133 ], [ %.merged25, %ehcleanup92 ] resume { ptr, i32 } %lpad.val177.merged unreachable: ; preds = %invoke.cont162, %invoke.cont121, %invoke.cont80, %invoke.cont50, %invoke.cont25, %invoke.cont12 diff --git a/bench/nix/optimized/nix-build.ll b/bench/nix/optimized/nix-build.ll index 2aea9685a38..c6493e0bd49 100644 --- a/bench/nix/optimized/nix-build.ll +++ b/bench/nix/optimized/nix-build.ll @@ -7226,7 +7226,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i10 br label %.loopexit1864 .loopexit1864: ; preds = %1487, %1731, %1562 - %.merged831 = phi { ptr, i32 } [ %.pn647.pn, %1731 ], [ %1563, %1562 ], [ %.pn640, %1487 ] + %.merged833 = phi { ptr, i32 } [ %.pn647.pn, %1731 ], [ %1563, %1562 ], [ %.pn640, %1487 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #35 br label %1737 @@ -7257,7 +7257,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1062: ; preds = %_ br i1 %1736, label %.loopexit1860, label %1351 1737: ; preds = %.loopexit1864, %1481, %1438 - %.merged830 = phi { ptr, i32 } [ %.pn650, %1438 ], [ %.merged831, %.loopexit1864 ], [ %1482, %1481 ] + %.merged832 = phi { ptr, i32 } [ %.pn650, %1438 ], [ %.merged833, %.loopexit1864 ], [ %1482, %1481 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #35 br label %_ZNSt8functionIFbRKN3nix5ValueEEED2Ev.exit1085 @@ -11380,13 +11380,13 @@ _ZNSt6vectorIPcSaIS0_EED2Ev.exit1303: ; preds = %3077, %_ZNSt6vector unreachable _ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305: ; preds = %3085, %.body1152, %2178, %2176, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 - %.merged833 = phi { ptr, i32 } [ %2177, %2176 ], [ %.pn702, %2178 ], [ %.pn698.pn.pn, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 ], [ %.pn807.pn, %.body1152 ], [ %.pn807.pn, %3085 ] + %.merged831 = phi { ptr, i32 } [ %2177, %2176 ], [ %.pn702, %2178 ], [ %.pn698.pn.pn, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 ], [ %.pn807.pn, %.body1152 ], [ %.pn807.pn, %3085 ] call void @_ZNSt8optionalIN3nix9StorePathEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %151) #35 call void @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %148) #35 br label %3090 3090: ; preds = %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305, %1949 - %.merged832 = phi { ptr, i32 } [ %.merged833, %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305 ], [ %.pn684, %1949 ] + %.merged830 = phi { ptr, i32 } [ %.merged831, %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305 ], [ %.pn684, %1949 ] call void @_ZNSt3setIN3nix12RealisedPathESt4lessIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %147) #35 call void @_ZNSt6vectorIN3nix11DerivedPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #35 call void @_ZN3nix10DerivationD2Ev(ptr noundef nonnull align 8 dereferenceable(320) %144) #35 @@ -13789,7 +13789,7 @@ _ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit _ZNSt8functionIFbRKN3nix5ValueEEED2Ev.exit1085: ; preds = %.loopexit1853, %.loopexit.split-lp1854.loopexit.split-lp, %.loopexit.split-lp1854.loopexit, %1825, %1823, %.loopexit1858, %1844, %1846, %3728, %3090, %1943, %1737 %.sroa.01653.2 = phi ptr [ %.sroa.01653.1, %3090 ], [ %.sroa.01653.1, %1943 ], [ %.sroa.01653.1, %1846 ], [ %.sroa.01653.1, %1844 ], [ %.sroa.01653.1, %3728 ], [ %.sroa.01653.1, %.loopexit1858 ], [ %.sroa.01653.32054, %1737 ], [ %.sroa.01653.1, %1823 ], [ %.sroa.01653.1, %1825 ], [ %.sroa.01653.1, %.loopexit1853 ], [ %.sroa.01653.32054, %.loopexit.split-lp1854.loopexit ], [ %.sroa.01653.0.ph.ph, %.loopexit.split-lp1854.loopexit.split-lp ] - %.merged829 = phi { ptr, i32 } [ %.merged832, %3090 ], [ %1944, %1943 ], [ %.pn8101706, %1846 ], [ %1845, %1844 ], [ %.pn677.pn.pn.pn.pn, %3728 ], [ %.pn652, %.loopexit1858 ], [ %.merged830, %1737 ], [ %.pn812.pn, %1823 ], [ %.pn812.pn, %1825 ], [ %lpad.loopexit1855, %.loopexit1853 ], [ %lpad.loopexit1861, %.loopexit.split-lp1854.loopexit ], [ %lpad.loopexit.split-lp1862, %.loopexit.split-lp1854.loopexit.split-lp ] + %.merged829 = phi { ptr, i32 } [ %.merged830, %3090 ], [ %1944, %1943 ], [ %.pn8101706, %1846 ], [ %1845, %1844 ], [ %.pn677.pn.pn.pn.pn, %3728 ], [ %.pn652, %.loopexit1858 ], [ %.merged832, %1737 ], [ %.pn812.pn, %1823 ], [ %.pn812.pn, %1825 ], [ %lpad.loopexit1855, %.loopexit1853 ], [ %lpad.loopexit1861, %.loopexit.split-lp1854.loopexit ], [ %lpad.loopexit.split-lp1862, %.loopexit.split-lp1854.loopexit.split-lp ] %.not.i.i.i1576 = icmp eq ptr %.sroa.01653.2, null br i1 %.not.i.i.i1576, label %_ZNSt6vectorIPN3nix4ExprESaIS2_EED2Ev.exit1577, label %3877 diff --git a/bench/nuklear/optimized/unity.c.ll b/bench/nuklear/optimized/unity.c.ll index d042462e6f4..3b7f1c62ec6 100644 --- a/bench/nuklear/optimized/unity.c.ll +++ b/bench/nuklear/optimized/unity.c.ll @@ -7436,23 +7436,19 @@ if.end: ; preds = %entry if.end.i: ; preds = %if.end %sub = sub nsw i32 %0, %len - %cmp.i = icmp slt i32 %sub, 0 - %memory.phi.trans.insert = getelementptr inbounds i8, ptr %str, i64 64 - %.pre = load ptr, ptr %memory.phi.trans.insert, align 8 - %allocated.phi.trans.insert = getelementptr inbounds i8, ptr %str, i64 88 - %.pre18 = load i64, ptr %allocated.phi.trans.insert, align 8 - br i1 %cmp.i, label %nk_str_at_rune.exit, label %if.end5.i - -if.end5.i: ; preds = %if.end.i - %conv.i = trunc i64 %.pre18 to i32 - %call.i = call i32 @nk_utf_decode(ptr noundef %.pre, ptr noundef nonnull %unicode, i32 noundef %conv.i) + %memory.i = getelementptr inbounds i8, ptr %str, i64 64 + %1 = load ptr, ptr %memory.i, align 8 + %allocated.i = getelementptr inbounds i8, ptr %str, i64 88 + %2 = load i64, ptr %allocated.i, align 8 + %conv.i = trunc i64 %2 to i32 + %call.i = call i32 @nk_utf_decode(ptr noundef %1, ptr noundef nonnull %unicode, i32 noundef %conv.i) %tobool7.not26.i = icmp eq i32 %call.i, 0 br i1 %tobool7.not26.i, label %while.end.i, label %while.body.i -while.body.i: ; preds = %if.end5.i, %if.end11.i - %i.029.i = phi i32 [ %inc.i, %if.end11.i ], [ 0, %if.end5.i ] - %glyph_len.028.i = phi i32 [ %call12.i, %if.end11.i ], [ %call.i, %if.end5.i ] - %src_len.027.i = phi i32 [ %add.i, %if.end11.i ], [ 0, %if.end5.i ] +while.body.i: ; preds = %if.end.i, %if.end11.i + %i.029.i = phi i32 [ %inc.i, %if.end11.i ], [ 0, %if.end.i ] + %glyph_len.028.i = phi i32 [ %call12.i, %if.end11.i ], [ %call.i, %if.end.i ] + %src_len.027.i = phi i32 [ %add.i, %if.end11.i ], [ 0, %if.end.i ] %cmp8.i = icmp eq i32 %i.029.i, %sub br i1 %cmp8.i, label %if.end16.i, label %if.end11.i @@ -7460,29 +7456,28 @@ if.end11.i: ; preds = %while.body.i %inc.i = add nuw nsw i32 %i.029.i, 1 %add.i = add nsw i32 %src_len.027.i, %glyph_len.028.i %idx.ext.i = sext i32 %add.i to i64 - %add.ptr.i = getelementptr inbounds i8, ptr %.pre, i64 %idx.ext.i + %add.ptr.i = getelementptr inbounds i8, ptr %1, i64 %idx.ext.i %sub.i = sub nsw i32 %conv.i, %add.i %call12.i = call i32 @nk_utf_decode(ptr noundef %add.ptr.i, ptr noundef nonnull %unicode, i32 noundef %sub.i) %tobool7.not.i = icmp eq i32 %call12.i, 0 br i1 %tobool7.not.i, label %while.end.i, label %while.body.i, !llvm.loop !36 -while.end.i: ; preds = %if.end11.i, %if.end5.i - %src_len.025.i = phi i32 [ 0, %if.end5.i ], [ %add.i, %if.end11.i ] - %i.022.i = phi i32 [ 0, %if.end5.i ], [ %inc.i, %if.end11.i ] +while.end.i: ; preds = %if.end11.i, %if.end.i + %src_len.025.i = phi i32 [ 0, %if.end.i ], [ %add.i, %if.end11.i ] + %i.022.i = phi i32 [ 0, %if.end.i ], [ %inc.i, %if.end11.i ] %cmp13.not.i = icmp eq i32 %i.022.i, %sub br i1 %cmp13.not.i, label %if.end16.i, label %nk_str_at_rune.exit if.end16.i: ; preds = %while.body.i, %while.end.i %src_len.02537.i = phi i32 [ %src_len.025.i, %while.end.i ], [ %src_len.027.i, %while.body.i ] %idx.ext17.i = sext i32 %src_len.02537.i to i64 - %add.ptr18.i = getelementptr inbounds i8, ptr %.pre, i64 %idx.ext17.i - %1 = ptrtoint ptr %add.ptr18.i to i64 + %add.ptr18.i = getelementptr inbounds i8, ptr %1, i64 %idx.ext17.i + %3 = ptrtoint ptr %add.ptr18.i to i64 br label %nk_str_at_rune.exit -nk_str_at_rune.exit: ; preds = %if.end.i, %while.end.i, %if.end16.i - %retval.0.i = phi i64 [ %1, %if.end16.i ], [ 0, %while.end.i ], [ 0, %if.end.i ] - %allocated = getelementptr inbounds i8, ptr %str, i64 88 - %add.ptr = getelementptr inbounds i8, ptr %.pre, i64 %.pre18 +nk_str_at_rune.exit: ; preds = %while.end.i, %if.end16.i + %retval.0.i = phi i64 [ %3, %if.end16.i ], [ 0, %while.end.i ] + %add.ptr = getelementptr inbounds i8, ptr %1, i64 %2 %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %retval.0.i %conv = trunc i64 %sub.ptr.sub to i32 @@ -7492,14 +7487,14 @@ nk_str_at_rune.exit: ; preds = %if.end.i, %while.en lor.lhs.false1.i: ; preds = %nk_str_at_rune.exit %add = add i64 %sub.ptr.sub, 1 %conv.i10 = and i64 %add, 4294967295 - %cmp2.i = icmp ult i64 %.pre18, %conv.i10 + %cmp2.i = icmp ult i64 %2, %conv.i10 br i1 %cmp2.i, label %return, label %if.end.i12 if.end.i12: ; preds = %lor.lhs.false1.i - %sub.i13 = sub nuw i64 %.pre18, %conv.i10 - store i64 %sub.i13, ptr %allocated, align 8 + %sub.i13 = sub nuw i64 %2, %conv.i10 + store i64 %sub.i13, ptr %allocated.i, align 8 %conv10.i = trunc i64 %sub.i13 to i32 - %call.i15 = call i32 @nk_utf_len(ptr noundef %.pre, i32 noundef %conv10.i) + %call.i15 = call i32 @nk_utf_len(ptr noundef %1, i32 noundef %conv10.i) br label %return.sink.split return.sink.split: ; preds = %if.end, %if.end.i12 @@ -52639,10 +52634,8 @@ nk_text_clamp.exit122.thread.i: ; preds = %nk_utf_decode.exit. %spec.select160.i = select i1 %tobool18.not.i75.i, i32 %add.i92172.i, i32 %sep_len.1.i102174.i %48 = select i1 %cmp2.lcssa.i74.i, i32 %spec.select160.i, i32 %add.i92172.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %unicode.i61.i) - %cmp48.i = icmp slt i32 %add60.i, %len - %tobool49.i = icmp ne i32 %48, 0 - %or.cond1.i = select i1 %cmp48.i, i1 %tobool49.i, i1 false - br i1 %or.cond1.i, label %lor.lhs.false50.i, label %return, !llvm.loop !212 + %tobool49.i.not = icmp eq i32 %48, 0 + br i1 %tobool49.i.not, label %return, label %lor.lhs.false50.i, !llvm.loop !212 return: ; preds = %nk_text_clamp.exit122.thread.i, %lor.lhs.false50.i, %nk_text_clamp.exit122.thread.thread.i, %nk_text_clamp.exit.thread.i, %nk_text_clamp.exit.thread.thread.i, %entry, %lor.lhs.false, %lor.lhs.false2 ret void diff --git a/bench/openblas/optimized/dgelqf.c.ll b/bench/openblas/optimized/dgelqf.c.ll index ac3d06e7614..a3a6ef35912 100644 --- a/bench/openblas/optimized/dgelqf.c.ll +++ b/bench/openblas/optimized/dgelqf.c.ll @@ -77,10 +77,10 @@ define void @dgelqf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %43 = sub nsw i32 0, %42 store i32 %43, ptr %9, align 4, !tbaa !3 %44 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9, i32 noundef 6) #5 - br label %136 + br label %135 45: ; preds = %39 - br i1 %26, label %136, label %46 + br i1 %26, label %135, label %46 46: ; preds = %45 %47 = tail call i32 @llvm.umin.i32(i32 %22, i32 %29) @@ -89,7 +89,7 @@ define void @dgelqf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef 49: ; preds = %46 store double 1.000000e+00, ptr %5, align 8, !tbaa !7 - br label %136 + br label %135 50: ; preds = %46 %51 = icmp sgt i32 %21, 1 @@ -129,102 +129,99 @@ define void @dgelqf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %74 = and i1 %72, %73 %75 = icmp samesign ult i32 %70, %47 %76 = and i1 %74, %75 - br i1 %76, label %77, label %.loopexit - -77: ; preds = %67 - %78 = sub nuw nsw i32 %47, %70 - store i32 %78, ptr %9, align 4, !tbaa !3 - %79 = icmp sgt i32 %78, 0 - br i1 %79, label %.preheader.preheader, label %.loopexit - -.preheader.preheader: ; preds = %77 - %80 = icmp slt i32 %69, 0 - br label %.preheader - -.preheader: ; preds = %.preheader.preheader, %114 - %81 = phi i32 [ %116, %114 ], [ -1, %.preheader.preheader ] - %82 = phi i32 [ %115, %114 ], [ 1, %.preheader.preheader ] - %83 = sub nsw i32 %47, %82 - %84 = add nsw i32 %83, 1 - %85 = call i32 @llvm.smin.i32(i32 %84, i32 %69) - store i32 %85, ptr %14, align 4, !tbaa !3 - %86 = load i32, ptr %1, align 4, !tbaa !3 - %87 = add i32 %81, 1 - %88 = add i32 %86, %87 - store i32 %88, ptr %11, align 4, !tbaa !3 - %89 = mul nsw i32 %82, %16 - %90 = add nsw i32 %89, %82 - %91 = sext i32 %90 to i64 - %92 = getelementptr inbounds double, ptr %19, i64 %91 - %93 = sext i32 %82 to i64 - %94 = getelementptr inbounds double, ptr %20, i64 %93 - call void @dgelq2_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef %92, ptr noundef nonnull %3, ptr noundef nonnull %94, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 - %95 = load i32, ptr %14, align 4, !tbaa !3 - %96 = add nsw i32 %95, %82 - %97 = load i32, ptr %0, align 4, !tbaa !3 - %98 = icmp sgt i32 %96, %97 - br i1 %98, label %114, label %99 - -99: ; preds = %.preheader - %100 = load i32, ptr %1, align 4, !tbaa !3 - %101 = add i32 %100, %87 - store i32 %101, ptr %11, align 4, !tbaa !3 - call void @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %92, ptr noundef nonnull %3, ptr noundef nonnull %94, ptr noundef nonnull %5, ptr noundef nonnull %15) #5 - %102 = load i32, ptr %0, align 4, !tbaa !3 - %103 = load i32, ptr %14, align 4, !tbaa !3 - %104 = add i32 %103, %82 - %105 = add i32 %102, 1 - %106 = sub i32 %105, %104 - store i32 %106, ptr %11, align 4, !tbaa !3 - %107 = load i32, ptr %1, align 4, !tbaa !3 - %108 = add i32 %107, %87 - store i32 %108, ptr %12, align 4, !tbaa !3 - %109 = add nsw i32 %104, %89 - %110 = sext i32 %109 to i64 - %111 = getelementptr inbounds double, ptr %19, i64 %110 - %112 = sext i32 %103 to i64 - %113 = getelementptr double, ptr %5, i64 %112 - call void @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %92, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %111, ptr noundef nonnull %3, ptr noundef %113, ptr noundef nonnull %15) #5 - br label %114 - -114: ; preds = %99, %.preheader - %115 = add nsw i32 %69, %82 - %116 = sub i32 0, %115 - %117 = load i32, ptr %9, align 4 - %118 = icmp sge i32 %115, %117 - %119 = icmp sle i32 %115, %117 - %120 = select i1 %80, i1 %118, i1 %119 - br i1 %120, label %.preheader, label %.loopexit, !llvm.loop !9 - -.loopexit: ; preds = %114, %77, %67 - %121 = phi i32 [ 1, %67 ], [ 1, %77 ], [ %115, %114 ] - %122 = icmp sgt i32 %121, %47 - br i1 %122, label %134, label %123 - -123: ; preds = %.loopexit - %124 = load i32, ptr %0, align 4, !tbaa !3 - %reass.sub = sub i32 %124, %121 - %125 = add i32 %reass.sub, 1 - store i32 %125, ptr %10, align 4, !tbaa !3 - %126 = load i32, ptr %1, align 4, !tbaa !3 - %reass.sub13 = sub i32 %126, %121 - %127 = add i32 %reass.sub13, 1 - store i32 %127, ptr %9, align 4, !tbaa !3 - %128 = add i32 %16, 1 - %129 = mul i32 %121, %128 - %130 = sext i32 %129 to i64 - %131 = getelementptr inbounds double, ptr %19, i64 %130 - %132 = sext i32 %121 to i64 - %133 = getelementptr inbounds double, ptr %20, i64 %132 - call void @dgelq2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %131, ptr noundef nonnull %3, ptr noundef nonnull %133, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 - br label %134 - -134: ; preds = %123, %.loopexit - %135 = sitofp i32 %71 to double - store double %135, ptr %5, align 8, !tbaa !7 - br label %136 - -136: ; preds = %134, %49, %45, %41 + br i1 %76, label %.preheader, label %.loopexit + +.preheader: ; preds = %67 + %77 = sub nuw nsw i32 %47, %70 + store i32 %77, ptr %9, align 4, !tbaa !3 + store i32 %69, ptr %10, align 4, !tbaa !3 + %78 = icmp slt i32 %69, 0 + br label %79 + +79: ; preds = %.preheader, %113 + %80 = phi i32 [ %115, %113 ], [ -1, %.preheader ] + %81 = phi i32 [ %114, %113 ], [ 1, %.preheader ] + %82 = sub nsw i32 %47, %81 + %83 = add nsw i32 %82, 1 + %84 = call i32 @llvm.smin.i32(i32 %83, i32 %69) + store i32 %84, ptr %14, align 4, !tbaa !3 + %85 = load i32, ptr %1, align 4, !tbaa !3 + %86 = add i32 %80, 1 + %87 = add i32 %85, %86 + store i32 %87, ptr %11, align 4, !tbaa !3 + %88 = mul nsw i32 %81, %16 + %89 = add nsw i32 %88, %81 + %90 = sext i32 %89 to i64 + %91 = getelementptr inbounds double, ptr %19, i64 %90 + %92 = sext i32 %81 to i64 + %93 = getelementptr inbounds double, ptr %20, i64 %92 + call void @dgelq2_(ptr noundef nonnull %14, ptr noundef nonnull %11, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %93, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 + %94 = load i32, ptr %14, align 4, !tbaa !3 + %95 = add nsw i32 %94, %81 + %96 = load i32, ptr %0, align 4, !tbaa !3 + %97 = icmp sgt i32 %95, %96 + br i1 %97, label %113, label %98 + +98: ; preds = %79 + %99 = load i32, ptr %1, align 4, !tbaa !3 + %100 = add i32 %99, %86 + store i32 %100, ptr %11, align 4, !tbaa !3 + call void @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %93, ptr noundef nonnull %5, ptr noundef nonnull %15) #5 + %101 = load i32, ptr %0, align 4, !tbaa !3 + %102 = load i32, ptr %14, align 4, !tbaa !3 + %103 = add i32 %102, %81 + %104 = add i32 %101, 1 + %105 = sub i32 %104, %103 + store i32 %105, ptr %11, align 4, !tbaa !3 + %106 = load i32, ptr %1, align 4, !tbaa !3 + %107 = add i32 %106, %86 + store i32 %107, ptr %12, align 4, !tbaa !3 + %108 = add nsw i32 %103, %88 + %109 = sext i32 %108 to i64 + %110 = getelementptr inbounds double, ptr %19, i64 %109 + %111 = sext i32 %102 to i64 + %112 = getelementptr double, ptr %5, i64 %111 + call void @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %110, ptr noundef nonnull %3, ptr noundef %112, ptr noundef nonnull %15) #5 + br label %113 + +113: ; preds = %98, %79 + %114 = add nsw i32 %69, %81 + %115 = sub i32 0, %114 + %116 = load i32, ptr %9, align 4 + %117 = icmp sge i32 %114, %116 + %118 = icmp sle i32 %114, %116 + %119 = select i1 %78, i1 %117, i1 %118 + br i1 %119, label %79, label %.loopexit, !llvm.loop !9 + +.loopexit: ; preds = %113, %67 + %120 = phi i32 [ 1, %67 ], [ %114, %113 ] + %121 = icmp sgt i32 %120, %47 + br i1 %121, label %133, label %122 + +122: ; preds = %.loopexit + %123 = load i32, ptr %0, align 4, !tbaa !3 + %reass.sub = sub i32 %123, %120 + %124 = add i32 %reass.sub, 1 + store i32 %124, ptr %10, align 4, !tbaa !3 + %125 = load i32, ptr %1, align 4, !tbaa !3 + %reass.sub13 = sub i32 %125, %120 + %126 = add i32 %reass.sub13, 1 + store i32 %126, ptr %9, align 4, !tbaa !3 + %127 = add i32 %16, 1 + %128 = mul i32 %120, %127 + %129 = sext i32 %128 to i64 + %130 = getelementptr inbounds double, ptr %19, i64 %129 + %131 = sext i32 %120 to i64 + %132 = getelementptr inbounds double, ptr %20, i64 %131 + call void @dgelq2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %130, ptr noundef nonnull %3, ptr noundef nonnull %132, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 + br label %133 + +133: ; preds = %122, %.loopexit + %134 = sitofp i32 %71 to double + store double %134, ptr %5, align 8, !tbaa !7 + br label %135 + +135: ; preds = %133, %49, %45, %41 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5 diff --git a/bench/openblas/optimized/dgeqrf.c.ll b/bench/openblas/optimized/dgeqrf.c.ll index eda4115ec81..c97802e6660 100644 --- a/bench/openblas/optimized/dgeqrf.c.ll +++ b/bench/openblas/optimized/dgeqrf.c.ll @@ -78,10 +78,10 @@ define void @dgeqrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %44 = sub nsw i32 0, %43 store i32 %44, ptr %9, align 4, !tbaa !3 %45 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9, i32 noundef 6) #5 - br label %140 + br label %138 46: ; preds = %40 - br i1 %26, label %140, label %47 + br i1 %26, label %138, label %47 47: ; preds = %46 %48 = tail call i32 @llvm.umin.i32(i32 %27, i32 %22) @@ -90,7 +90,7 @@ define void @dgeqrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef 50: ; preds = %47 store double 1.000000e+00, ptr %5, align 8, !tbaa !7 - br label %140 + br label %138 51: ; preds = %47 %52 = icmp sgt i32 %21, 1 @@ -135,98 +135,95 @@ define void @dgeqrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef 78: ; preds = %68 %79 = sub nuw nsw i32 %48, %71 store i32 %79, ptr %9, align 4, !tbaa !3 - %80 = icmp sgt i32 %79, 0 - br i1 %80, label %81, label %.loopexit - -81: ; preds = %78 - %82 = add i32 %16, 1 - %83 = icmp slt i32 %70, 0 - br label %84 - -84: ; preds = %118, %81 - %85 = phi i32 [ -1, %81 ], [ %120, %118 ] - %86 = phi i32 [ 1, %81 ], [ %119, %118 ] - %87 = sub nsw i32 %48, %86 - %88 = add nsw i32 %87, 1 - %89 = call i32 @llvm.smin.i32(i32 %88, i32 %70) - store i32 %89, ptr %14, align 4, !tbaa !3 - %90 = load i32, ptr %0, align 4, !tbaa !3 - %91 = add i32 %85, 1 - %92 = add i32 %90, %91 - store i32 %92, ptr %11, align 4, !tbaa !3 - %93 = mul i32 %86, %82 - %94 = sext i32 %93 to i64 - %95 = getelementptr inbounds double, ptr %19, i64 %94 - %96 = sext i32 %86 to i64 - %97 = getelementptr inbounds double, ptr %20, i64 %96 - call void @dgeqr2_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %95, ptr noundef nonnull %3, ptr noundef nonnull %97, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 - %98 = load i32, ptr %14, align 4, !tbaa !3 - %99 = add nsw i32 %98, %86 - %100 = load i32, ptr %1, align 4, !tbaa !3 - %101 = icmp sgt i32 %99, %100 - br i1 %101, label %118, label %102 - -102: ; preds = %84 + store i32 %70, ptr %10, align 4, !tbaa !3 + %80 = add i32 %16, 1 + %81 = icmp slt i32 %70, 0 + br label %82 + +82: ; preds = %116, %78 + %83 = phi i32 [ -1, %78 ], [ %118, %116 ] + %84 = phi i32 [ 1, %78 ], [ %117, %116 ] + %85 = sub nsw i32 %48, %84 + %86 = add nsw i32 %85, 1 + %87 = call i32 @llvm.smin.i32(i32 %86, i32 %70) + store i32 %87, ptr %14, align 4, !tbaa !3 + %88 = load i32, ptr %0, align 4, !tbaa !3 + %89 = add i32 %83, 1 + %90 = add i32 %88, %89 + store i32 %90, ptr %11, align 4, !tbaa !3 + %91 = mul i32 %84, %80 + %92 = sext i32 %91 to i64 + %93 = getelementptr inbounds double, ptr %19, i64 %92 + %94 = sext i32 %84 to i64 + %95 = getelementptr inbounds double, ptr %20, i64 %94 + call void @dgeqr2_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %93, ptr noundef nonnull %3, ptr noundef nonnull %95, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 + %96 = load i32, ptr %14, align 4, !tbaa !3 + %97 = add nsw i32 %96, %84 + %98 = load i32, ptr %1, align 4, !tbaa !3 + %99 = icmp sgt i32 %97, %98 + br i1 %99, label %116, label %100 + +100: ; preds = %82 + %101 = load i32, ptr %0, align 4, !tbaa !3 + %102 = add i32 %101, %89 + store i32 %102, ptr %11, align 4, !tbaa !3 + call void @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %93, ptr noundef nonnull %3, ptr noundef nonnull %95, ptr noundef nonnull %5, ptr noundef nonnull %15) #5 %103 = load i32, ptr %0, align 4, !tbaa !3 - %104 = add i32 %103, %91 + %104 = add i32 %103, %89 store i32 %104, ptr %11, align 4, !tbaa !3 - call void @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %95, ptr noundef nonnull %3, ptr noundef nonnull %97, ptr noundef nonnull %5, ptr noundef nonnull %15) #5 - %105 = load i32, ptr %0, align 4, !tbaa !3 - %106 = add i32 %105, %91 - store i32 %106, ptr %11, align 4, !tbaa !3 - %107 = load i32, ptr %1, align 4, !tbaa !3 - %108 = load i32, ptr %14, align 4, !tbaa !3 - %109 = add i32 %108, %86 - %110 = add i32 %107, 1 - %111 = sub i32 %110, %109 - store i32 %111, ptr %12, align 4, !tbaa !3 - %112 = mul nsw i32 %109, %16 - %113 = add nsw i32 %112, %86 - %114 = sext i32 %113 to i64 - %115 = getelementptr inbounds double, ptr %19, i64 %114 - %116 = sext i32 %108 to i64 - %117 = getelementptr double, ptr %5, i64 %116 - call void @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %95, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %115, ptr noundef nonnull %3, ptr noundef %117, ptr noundef nonnull %15) #5 - br label %118 - -118: ; preds = %102, %84 - %119 = add nsw i32 %70, %86 - %120 = sub i32 0, %119 - %121 = load i32, ptr %9, align 4 - %122 = icmp sge i32 %119, %121 - %123 = icmp sle i32 %119, %121 - %124 = select i1 %83, i1 %122, i1 %123 - br i1 %124, label %84, label %.loopexit, !llvm.loop !9 - -.loopexit: ; preds = %118, %78, %68 - %125 = phi i32 [ 1, %68 ], [ 1, %78 ], [ %119, %118 ] - %126 = icmp sgt i32 %125, %48 - br i1 %126, label %138, label %127 - -127: ; preds = %.loopexit - %128 = load i32, ptr %0, align 4, !tbaa !3 - %reass.sub = sub i32 %128, %125 - %129 = add i32 %reass.sub, 1 - store i32 %129, ptr %10, align 4, !tbaa !3 - %130 = load i32, ptr %1, align 4, !tbaa !3 - %reass.sub13 = sub i32 %130, %125 - %131 = add i32 %reass.sub13, 1 - store i32 %131, ptr %9, align 4, !tbaa !3 - %132 = add i32 %16, 1 - %133 = mul i32 %125, %132 - %134 = sext i32 %133 to i64 - %135 = getelementptr inbounds double, ptr %19, i64 %134 - %136 = sext i32 %125 to i64 - %137 = getelementptr inbounds double, ptr %20, i64 %136 - call void @dgeqr2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %135, ptr noundef nonnull %3, ptr noundef nonnull %137, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 + %105 = load i32, ptr %1, align 4, !tbaa !3 + %106 = load i32, ptr %14, align 4, !tbaa !3 + %107 = add i32 %106, %84 + %108 = add i32 %105, 1 + %109 = sub i32 %108, %107 + store i32 %109, ptr %12, align 4, !tbaa !3 + %110 = mul nsw i32 %107, %16 + %111 = add nsw i32 %110, %84 + %112 = sext i32 %111 to i64 + %113 = getelementptr inbounds double, ptr %19, i64 %112 + %114 = sext i32 %106 to i64 + %115 = getelementptr double, ptr %5, i64 %114 + call void @dlarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %93, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %113, ptr noundef nonnull %3, ptr noundef %115, ptr noundef nonnull %15) #5 + br label %116 + +116: ; preds = %100, %82 + %117 = add nsw i32 %70, %84 + %118 = sub i32 0, %117 + %119 = load i32, ptr %9, align 4 + %120 = icmp sge i32 %117, %119 + %121 = icmp sle i32 %117, %119 + %122 = select i1 %81, i1 %120, i1 %121 + br i1 %122, label %82, label %.loopexit, !llvm.loop !9 + +.loopexit: ; preds = %116, %68 + %123 = phi i32 [ 1, %68 ], [ %117, %116 ] + %124 = icmp sgt i32 %123, %48 + br i1 %124, label %136, label %125 + +125: ; preds = %.loopexit + %126 = load i32, ptr %0, align 4, !tbaa !3 + %reass.sub = sub i32 %126, %123 + %127 = add i32 %reass.sub, 1 + store i32 %127, ptr %10, align 4, !tbaa !3 + %128 = load i32, ptr %1, align 4, !tbaa !3 + %reass.sub13 = sub i32 %128, %123 + %129 = add i32 %reass.sub13, 1 + store i32 %129, ptr %9, align 4, !tbaa !3 + %130 = add i32 %16, 1 + %131 = mul i32 %123, %130 + %132 = sext i32 %131 to i64 + %133 = getelementptr inbounds double, ptr %19, i64 %132 + %134 = sext i32 %123 to i64 + %135 = getelementptr inbounds double, ptr %20, i64 %134 + call void @dgeqr2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %133, ptr noundef nonnull %3, ptr noundef nonnull %135, ptr noundef nonnull %5, ptr noundef nonnull %13) #5 + br label %136 + +136: ; preds = %125, %.loopexit + %137 = sitofp i32 %72 to double + store double %137, ptr %5, align 8, !tbaa !7 br label %138 -138: ; preds = %127, %.loopexit - %139 = sitofp i32 %72 to double - store double %139, ptr %5, align 8, !tbaa !7 - br label %140 - -140: ; preds = %138, %50, %46, %42 +138: ; preds = %136, %50, %46, %42 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5 diff --git a/bench/opencv/optimized/keypoint.cpp.ll b/bench/opencv/optimized/keypoint.cpp.ll index 6db12e3ce29..8c7b6967680 100644 --- a/bench/opencv/optimized/keypoint.cpp.ll +++ b/bench/opencv/optimized/keypoint.cpp.ll @@ -232,72 +232,67 @@ define void @_ZN2cv15KeyPointsFilter16runByImageBorderERSt6vectorINS_8KeyPointES 11: ; preds = %5 %12 = sub nsw i32 %.sroa.013.0.extract.trunc, %2 %13 = sub nsw i32 %.sroa.3.0.extract.trunc, %2 - %14 = tail call i32 @llvm.smin.i32(i32 %12, i32 %2) - %15 = tail call i32 @llvm.smin.i32(i32 %13, i32 %2) - %16 = tail call i32 @llvm.smax.i32(i32 %2, i32 %12) - %17 = sub nsw i32 %16, %14 - %18 = tail call i32 @llvm.smax.i32(i32 %2, i32 %13) - %19 = sub nsw i32 %18, %15 - %.sroa.231.0.insert.ext = zext i32 %15 to i64 - %.sroa.231.0.insert.shift = shl nuw i64 %.sroa.231.0.insert.ext, 32 - %.sroa.030.0.insert.ext = zext i32 %14 to i64 - %.sroa.030.0.insert.insert = or disjoint i64 %.sroa.231.0.insert.shift, %.sroa.030.0.insert.ext - %.sroa.5.8.insert.ext = zext i32 %19 to i64 + %14 = sub nsw i32 %12, %2 + %15 = sub nsw i32 %13, %2 + %.sroa.231.0.insert.ext = zext nneg i32 %2 to i64 + %.sroa.231.0.insert.shift = shl nuw nsw i64 %.sroa.231.0.insert.ext, 32 + %.sroa.030.0.insert.insert = or disjoint i64 %.sroa.231.0.insert.shift, %.sroa.231.0.insert.ext + %.sroa.5.8.insert.ext = zext i32 %15 to i64 %.sroa.5.8.insert.shift = shl nuw i64 %.sroa.5.8.insert.ext, 32 - %.sroa.332.8.insert.ext = zext i32 %17 to i64 + %.sroa.332.8.insert.ext = zext i32 %14 to i64 %.sroa.332.8.insert.insert = or disjoint i64 %.sroa.5.8.insert.shift, %.sroa.332.8.insert.ext - %20 = tail call ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_12RoiPredicateEEEET_SD_SD_T0_St26random_access_iterator_tag(ptr %7, ptr %9, i64 %.sroa.030.0.insert.insert, i64 %.sroa.332.8.insert.insert) - %21 = icmp eq ptr %20, %9 - %.sroa.07.022.i.i = getelementptr inbounds i8, ptr %20, i64 28 + %16 = tail call ptr @_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS0_5__ops10_Iter_predINS2_12RoiPredicateEEEET_SD_SD_T0_St26random_access_iterator_tag(ptr %7, ptr %9, i64 %.sroa.030.0.insert.insert, i64 %.sroa.332.8.insert.insert) + %17 = icmp eq ptr %16, %9 + %.sroa.07.022.i.i = getelementptr inbounds i8, ptr %16, i64 28 %.not23.i.i = icmp eq ptr %.sroa.07.022.i.i, %9 - %or.cond35 = select i1 %21, i1 true, i1 %.not23.i.i + %or.cond35 = select i1 %17, i1 true, i1 %.not23.i.i br i1 %or.cond35, label %_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS2_12RoiPredicateEET_SA_SA_T0_.exit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %11, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i %.sroa.07.026.i.i = phi ptr [ %.sroa.07.0.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ], [ %.sroa.07.022.i.i, %11 ] - %.sroa.013.125.i.i = phi ptr [ %.sroa.013.2.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ], [ %20, %11 ] - %.pn24.i.i = phi ptr [ %.sroa.07.026.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ], [ %20, %11 ] - %22 = load <4 x float>, ptr %.sroa.07.026.i.i, align 4 - %23 = tail call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %22) - %24 = getelementptr inbounds i8, ptr %.pn24.i.i, i64 32 - %25 = load <4 x float>, ptr %24, align 4 - %26 = tail call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %25) - %.not.i.i.i.i.i = icmp slt i32 %23, %14 - %27 = icmp sge i32 %23, %16 - %or.cond.not21.i.i = or i1 %.not.i.i.i.i.i, %27 - %.not8.i.i.i.i.i = icmp slt i32 %26, %15 - %28 = icmp sge i32 %26, %18 - %29 = or i1 %.not8.i.i.i.i.i, %28 - %or.cond19.i.i = select i1 %or.cond.not21.i.i, i1 true, i1 %29 - br i1 %or.cond19.i.i, label %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i, label %30 - -30: ; preds = %.lr.ph.i.i + %.sroa.013.125.i.i = phi ptr [ %.sroa.013.2.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ], [ %16, %11 ] + %.pn24.i.i = phi ptr [ %.sroa.07.026.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ], [ %16, %11 ] + %18 = load <4 x float>, ptr %.sroa.07.026.i.i, align 4 + %19 = tail call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %18) + %20 = getelementptr inbounds i8, ptr %.pn24.i.i, i64 32 + %21 = load <4 x float>, ptr %20, align 4 + %22 = tail call noundef i32 @llvm.x86.sse.cvtss2si(<4 x float> %21) + %.not.i.i.i.i.i = icmp slt i32 %19, %2 + %23 = icmp sge i32 %19, %12 + %or.cond.not21.i.i = or i1 %.not.i.i.i.i.i, %23 + %.not8.i.i.i.i.i = icmp slt i32 %22, %2 + %24 = icmp sge i32 %22, %13 + %25 = or i1 %.not8.i.i.i.i.i, %24 + %or.cond19.i.i = select i1 %or.cond.not21.i.i, i1 true, i1 %25 + br i1 %or.cond19.i.i, label %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i, label %26 + +26: ; preds = %.lr.ph.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %.sroa.013.125.i.i, ptr noundef nonnull align 4 dereferenceable(28) %.sroa.07.026.i.i, i64 28, i1 false) - %31 = getelementptr inbounds i8, ptr %.sroa.013.125.i.i, i64 28 + %27 = getelementptr inbounds i8, ptr %.sroa.013.125.i.i, i64 28 br label %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i -_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i: ; preds = %30, %.lr.ph.i.i - %.sroa.013.2.i.i = phi ptr [ %31, %30 ], [ %.sroa.013.125.i.i, %.lr.ph.i.i ] +_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i: ; preds = %26, %.lr.ph.i.i + %.sroa.013.2.i.i = phi ptr [ %27, %26 ], [ %.sroa.013.125.i.i, %.lr.ph.i.i ] %.sroa.07.0.i.i = getelementptr inbounds i8, ptr %.sroa.07.026.i.i, i64 28 %.not.i.i18 = icmp eq ptr %.sroa.07.0.i.i, %9 br i1 %.not.i.i18, label %_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS2_12RoiPredicateEET_SA_SA_T0_.exit, label %.lr.ph.i.i, !llvm.loop !8 _ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS2_12RoiPredicateEET_SA_SA_T0_.exit: ; preds = %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i, %11 - %.sroa.013.0.i.i = phi ptr [ %20, %11 ], [ %.sroa.013.2.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ] - %32 = load ptr, ptr %8, align 8 - %.not.i.i19 = icmp eq ptr %.sroa.013.0.i.i, %32 + %.sroa.013.0.i.i = phi ptr [ %16, %11 ], [ %.sroa.013.2.i.i, %_ZN9__gnu_cxx5__ops10_Iter_predIN2cv12RoiPredicateEEclINS_17__normal_iteratorIPNS2_8KeyPointESt6vectorIS7_SaIS7_EEEEEEbT_.exit.thread.i.i ] + %28 = load ptr, ptr %8, align 8 + %.not.i.i19 = icmp eq ptr %.sroa.013.0.i.i, %28 br i1 %.not.i.i19, label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPN2cv8KeyPointESt6vectorIS3_SaIS3_EEEENS2_12RoiPredicateEET_SA_SA_T0_.exit - %33 = load ptr, ptr %0, align 8 - %34 = ptrtoint ptr %.sroa.013.0.i.i to i64 - %35 = ptrtoint ptr %33 to i64 - %36 = sub i64 %34, %35 - %37 = getelementptr inbounds i8, ptr %33, i64 %36 + %29 = load ptr, ptr %0, align 8 + %30 = ptrtoint ptr %.sroa.013.0.i.i to i64 + %31 = ptrtoint ptr %29 to i64 + %32 = sub i64 %30, %31 + %33 = getelementptr inbounds i8, ptr %29, i64 %32 br label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit.sink.split _ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit.sink.split: ; preds = %10, %._crit_edge.i.i - %.sink = phi ptr [ %37, %._crit_edge.i.i ], [ %7, %10 ] + %.sink = phi ptr [ %33, %._crit_edge.i.i ], [ %7, %10 ] store ptr %.sink, ptr %8, align 8 br label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit @@ -5380,12 +5375,6 @@ declare i64 @llvm.umax.i64(i64, i64) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #17 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #17 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #17 - 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 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "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 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="64" "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/mathfuncs_core.dispatch.cpp.ll b/bench/opencv/optimized/mathfuncs_core.dispatch.cpp.ll index 1946e14d03f..f846282d751 100644 --- a/bench/opencv/optimized/mathfuncs_core.dispatch.cpp.ll +++ b/bench/opencv/optimized/mathfuncs_core.dispatch.cpp.ll @@ -238,7 +238,7 @@ define hidden void @_ZN2cv3hal12cpu_baseline14cartToPolar64fEPKdS3_PdS4_ib(ptr n %17 = trunc nsw i64 %16 to i32 %.sroa.speculated = call i32 @llvm.smin.i32(i32 %17, i32 128) %18 = icmp sgt i64 %16, 0 - br i1 %18, label %.lr.ph.preheader, label %._crit_edge44 + br i1 %18, label %.lr.ph.preheader, label %.lr.ph.preheader.i .lr.ph.preheader: ; preds = %15 %19 = sext i32 %.sroa.speculated to i64 @@ -261,7 +261,7 @@ define hidden void @_ZN2cv3hal12cpu_baseline14cartToPolar64fEPKdS3_PdS4_ib(ptr n %29 = icmp slt i64 %indvars.iv.next, %19 br i1 %29, label %.lr.ph, label %.lr.ph.preheader.i, !llvm.loop !6 -.lr.ph.preheader.i: ; preds = %.lr.ph +.lr.ph.preheader.i: ; preds = %.lr.ph, %15 %wide.trip.count.i = zext nneg i32 %.sroa.speculated to i64 br label %.lr.ph.i @@ -315,9 +315,12 @@ _ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i: ; preds = %48, %40 store float %61, ptr %62, align 4 %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 %.lr.ph41.preheader, label %.lr.ph.i, !llvm.loop !4 + br i1 %exitcond.not.i, label %_ZN2cv3hal12cpu_baselineL15cartToPolar32f_EPKfS3_PfS4_ib.exit.loopexit, label %.lr.ph.i, !llvm.loop !4 -.lr.ph41.preheader: ; preds = %_ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i +_ZN2cv3hal12cpu_baselineL15cartToPolar32f_EPKfS3_PfS4_ib.exit.loopexit: ; preds = %_ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i + br i1 %18, label %.lr.ph41.preheader, label %._crit_edge44 + +.lr.ph41.preheader: ; preds = %_ZN2cv3hal12cpu_baselineL15cartToPolar32f_EPKfS3_PfS4_ib.exit.loopexit %63 = sext i32 %.sroa.speculated to i64 %invariant.gep = getelementptr inbounds double, ptr %2, i64 %indvars.iv56 br label %.lr.ph41 @@ -349,7 +352,7 @@ _ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i: ; preds = %48, %40 %72 = icmp slt i64 %indvars.iv.next54, %64 br i1 %72, label %.lr.ph43, label %._crit_edge44, !llvm.loop !8 -._crit_edge44: ; preds = %.lr.ph43, %15 +._crit_edge44: ; preds = %.lr.ph43, %_ZN2cv3hal12cpu_baselineL15cartToPolar32f_EPKfS3_PfS4_ib.exit.loopexit %indvars.iv.next57 = add nuw nsw i64 %indvars.iv56, 128 %73 = icmp samesign ult i64 %indvars.iv.next57, %14 br i1 %73, label %15, label %._crit_edge48, !llvm.loop !9 @@ -476,7 +479,7 @@ define hidden void @_ZN2cv3hal12cpu_baseline11fastAtan64fEPKdS3_Pdib(ptr nocaptu %15 = trunc nsw i64 %14 to i32 %.sroa.speculated = call i32 @llvm.smin.i32(i32 %15, i32 128) %16 = icmp sgt i64 %14, 0 - br i1 %16, label %.lr.ph.preheader, label %._crit_edge35 + br i1 %16, label %.lr.ph.preheader, label %.lr.ph.preheader.i .lr.ph.preheader: ; preds = %13 %17 = sext i32 %.sroa.speculated to i64 @@ -499,7 +502,7 @@ define hidden void @_ZN2cv3hal12cpu_baseline11fastAtan64fEPKdS3_Pdib(ptr nocaptu %27 = icmp slt i64 %indvars.iv.next, %17 br i1 %27, label %.lr.ph, label %.lr.ph.preheader.i, !llvm.loop !11 -.lr.ph.preheader.i: ; preds = %.lr.ph +.lr.ph.preheader.i: ; preds = %.lr.ph, %13 %wide.trip.count.i = zext nneg i32 %.sroa.speculated to i64 br label %.lr.ph.i @@ -548,9 +551,12 @@ _ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i: ; preds = %43, %35 store float %56, ptr %57, align 4 %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 %.lr.ph34.preheader, label %.lr.ph.i, !llvm.loop !10 + br i1 %exitcond.not.i, label %_ZN2cv3hal12cpu_baselineL12fastAtan32f_EPKfS3_Pfib.exit.loopexit, label %.lr.ph.i, !llvm.loop !10 + +_ZN2cv3hal12cpu_baselineL12fastAtan32f_EPKfS3_Pfib.exit.loopexit: ; preds = %_ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i + br i1 %16, label %.lr.ph34.preheader, label %._crit_edge35 -.lr.ph34.preheader: ; preds = %_ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i +.lr.ph34.preheader: ; preds = %_ZN2cv3hal12cpu_baselineL12fastAtan32f_EPKfS3_Pfib.exit.loopexit %58 = sext i32 %.sroa.speculated to i64 %invariant.gep = getelementptr inbounds double, ptr %2, i64 %indvars.iv44 br label %.lr.ph34 @@ -566,7 +572,7 @@ _ZN2cv3hal12cpu_baseline12_GLOBAL__N_18atan_f32Eff.exit.i: ; preds = %43, %35 %62 = icmp slt i64 %indvars.iv.next42, %58 br i1 %62, label %.lr.ph34, label %._crit_edge35, !llvm.loop !12 -._crit_edge35: ; preds = %.lr.ph34, %13 +._crit_edge35: ; preds = %.lr.ph34, %_ZN2cv3hal12cpu_baselineL12fastAtan32f_EPKfS3_Pfib.exit.loopexit %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 128 %63 = icmp samesign ult i64 %indvars.iv.next45, %12 br i1 %63, label %13, label %._crit_edge39, !llvm.loop !13 diff --git a/bench/opencv/optimized/stardetector.cpp.ll b/bench/opencv/optimized/stardetector.cpp.ll index 35710eef13d..5e19bd584b0 100644 --- a/bench/opencv/optimized/stardetector.cpp.ll +++ b/bench/opencv/optimized/stardetector.cpp.ll @@ -755,17 +755,17 @@ _ZNK2cv11_InputArray6getMatEi.exit22: ; preds = %38, %41 50: ; preds = %41, %38, %_ZNK2cv11_InputArray6getMatEi.exit %51 = landingpad { ptr, i32 } cleanup - br label %2843 + br label %2841 52: ; preds = %_ZNK2cv11_InputArray6getMatEi.exit22 %53 = landingpad { ptr, i32 } cleanup - br label %2842 + br label %2840 54: ; preds = %42 %55 = landingpad { ptr, i32 } cleanup - br label %2841 + br label %2839 56: ; preds = %44 %57 = load i32, ptr %23, align 8 @@ -792,7 +792,7 @@ _ZNK2cv11_InputArray6getMatEi.exit22: ; preds = %38, %41 65: ; preds = %59 %66 = landingpad { ptr, i32 } cleanup - br label %2841 + br label %2839 67: ; preds = %59, %56 call void @_ZN2cv3MatC1Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #20 @@ -2969,7 +2969,7 @@ _ZN2cv11xfeatures2dL28StarDetectorComputeResponsesIiEEiRKNS_3MatERS2_S5_ii.exit: %eh.lpad-body = phi { ptr, i32 } [ %.pn187.i, %1487 ], [ %.pn187.i27, %2659 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #20 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #20 - br label %2841 + br label %2839 1488: ; preds = %67, %72 %1489 = getelementptr inbounds i8, ptr %0, i64 8 @@ -4853,7 +4853,7 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit96: ; preds = %2660, %2664 br label %.preheader210.us.i .preheader210.us.i: ; preds = %._crit_edge267.us.i, %.preheader210.us.preheader.i - %2705 = phi ptr [ %2665, %.preheader210.us.preheader.i ], [ %2838, %._crit_edge267.us.i ] + %2705 = phi ptr [ %2665, %.preheader210.us.preheader.i ], [ %2836, %._crit_edge267.us.i ] %indvars.iv308.i = phi i64 [ %2701, %.preheader210.us.preheader.i ], [ %indvars.iv.next309.i, %._crit_edge267.us.i ] %indvars343.i = trunc i64 %indvars.iv308.i to i32 %2706 = add nsw i32 %2674, %indvars343.i @@ -4916,8 +4916,8 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit96: ; preds = %2660, %2664 %.not130249.us.i = icmp sgt i32 %2722, %2723 br i1 %.not130249.us.i, label %._crit_edge253.us.i, label %.lr.ph252.us.i -.lr.ph.us.i: ; preds = %.lr.ph.us.preheader.i, %._crit_edge248.us.i - %indvars.iv321.i = phi i64 [ %2827, %.lr.ph.us.preheader.i ], [ %indvars.iv.next322.i, %._crit_edge248.us.i ] +.lr.ph.us.i: ; preds = %.lr.ph252.us.i, %._crit_edge248.us.i + %indvars.iv321.i = phi i64 [ %2826, %.lr.ph252.us.i ], [ %indvars.iv.next322.i, %._crit_edge248.us.i ] %2724 = mul nsw i64 %indvars.iv321.i, %2704 %2725 = trunc nsw i64 %indvars.iv321.i to i32 %.not132.us.i = icmp eq i32 %.sroa.8206.2.us.i, %2725 @@ -4926,7 +4926,7 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit96: ; preds = %2660, %2664 br i1 %.not132.fr.us.i, label %.lr.ph.split.us284.i, label %.lr.ph.split.us.us.i .lr.ph.split.us284.i: ; preds = %.lr.ph.us.i, %2729 - %indvars.iv316.i = phi i64 [ %indvars.iv.next317.i, %2729 ], [ %2825, %.lr.ph.us.i ] + %indvars.iv316.i = phi i64 [ %indvars.iv.next317.i, %2729 ], [ %2824, %.lr.ph.us.i ] %gep366.i = getelementptr float, ptr %invariant.gep365.i, i64 %indvars.iv316.i %2726 = load float, ptr %gep366.i, align 4 %2727 = fcmp ult float %2726, %.2116.us.i @@ -4938,10 +4938,10 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit96: ; preds = %2660, %2664 2729: ; preds = %.lr.ph.split.us284.i %indvars.iv.next317.i = add nsw i64 %indvars.iv316.i, 1 %lftr.wideiv319.i = trunc i64 %indvars.iv.next317.i to i32 - %exitcond320.not.i = icmp eq i32 %2826, %lftr.wideiv319.i + %exitcond320.not.i = icmp eq i32 %2825, %lftr.wideiv319.i br i1 %exitcond320.not.i, label %._crit_edge248.us.i, label %.lr.ph.split.us284.i, !llvm.loop !68 -._crit_edge253.us.i: ; preds = %._crit_edge248.us.i, %.lr.ph252.us.i, %2721 +._crit_edge253.us.i: ; preds = %._crit_edge248.us.i, %2721 %2730 = mul nsw i32 %.sroa.8206.2.us.i, %2686 %2731 = add nsw i32 %2730, %.sroa.0201.2.us.i %2732 = sext i32 %2731 to i64 @@ -5064,8 +5064,8 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit.us.i: ; preds = %.lr.ph %.not134259.us.i = icmp sgt i32 %2770, %2771 br i1 %.not134259.us.i, label %._crit_edge263.us.i, label %.lr.ph262.us.i -.lr.ph257.us.i: ; preds = %.lr.ph257.us.preheader.i, %._crit_edge258.us.i - %indvars.iv336.i = phi i64 [ %2836, %.lr.ph257.us.preheader.i ], [ %indvars.iv.next337.i, %._crit_edge258.us.i ] +.lr.ph257.us.i: ; preds = %.lr.ph262.us.i, %._crit_edge258.us.i + %indvars.iv336.i = phi i64 [ %2834, %.lr.ph262.us.i ], [ %indvars.iv.next337.i, %._crit_edge258.us.i ] %2772 = mul nsw i64 %indvars.iv336.i, %2704 %2773 = trunc nsw i64 %indvars.iv336.i to i32 %.not136.us.i = icmp eq i32 %.sroa.8197.2.us.i, %2773 @@ -5074,7 +5074,7 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit.us.i: ; preds = %.lr.ph br i1 %.not136.fr.us.i, label %.lr.ph257.split.us289.i, label %.lr.ph257.split.us.us.i .lr.ph257.split.us289.i: ; preds = %.lr.ph257.us.i, %2777 - %indvars.iv331.i = phi i64 [ %indvars.iv.next332.i, %2777 ], [ %2834, %.lr.ph257.us.i ] + %indvars.iv331.i = phi i64 [ %indvars.iv.next332.i, %2777 ], [ %2832, %.lr.ph257.us.i ] %gep370.i = getelementptr float, ptr %invariant.gep369.i, i64 %indvars.iv331.i %2774 = load float, ptr %gep370.i, align 4 %2775 = fcmp ugt float %2774, %.2119.us.i @@ -5086,10 +5086,10 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit.us.i: ; preds = %.lr.ph 2777: ; preds = %.lr.ph257.split.us289.i %indvars.iv.next332.i = add nsw i64 %indvars.iv331.i, 1 %lftr.wideiv334.i = trunc i64 %indvars.iv.next332.i to i32 - %exitcond335.not.i = icmp eq i32 %2835, %lftr.wideiv334.i + %exitcond335.not.i = icmp eq i32 %2833, %lftr.wideiv334.i br i1 %exitcond335.not.i, label %._crit_edge258.us.i, label %.lr.ph257.split.us289.i, !llvm.loop !74 -._crit_edge263.us.i: ; preds = %._crit_edge258.us.i, %.lr.ph262.us.i, %2769 +._crit_edge263.us.i: ; preds = %._crit_edge258.us.i, %2769 %2778 = mul nsw i32 %.sroa.8197.2.us.i, %2686 %2779 = add nsw i32 %2778, %.sroa.0192.2.us.i %2780 = sext i32 %2779 to i64 @@ -5233,11 +5233,11 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i: ; preds = %.lr ._crit_edge248.us.i: ; preds = %2822, %2729 %indvars.iv.next322.i = add nsw i64 %indvars.iv321.i, 1 %lftr.wideiv324.i = trunc i64 %indvars.iv.next322.i to i32 - %exitcond325.not.i = icmp eq i32 %2828, %lftr.wideiv324.i + %exitcond325.not.i = icmp eq i32 %2827, %lftr.wideiv324.i br i1 %exitcond325.not.i, label %._crit_edge253.us.i, label %.lr.ph.us.i, !llvm.loop !81 .lr.ph.split.us.us.i: ; preds = %.lr.ph.us.i, %2822 - %indvars.iv313.i = phi i64 [ %indvars.iv.next314.i, %2822 ], [ %2825, %.lr.ph.us.i ] + %indvars.iv313.i = phi i64 [ %indvars.iv.next314.i, %2822 ], [ %2824, %.lr.ph.us.i ] %gep364.i = getelementptr float, ptr %invariant.gep365.i, i64 %indvars.iv313.i %2820 = load float, ptr %gep364.i, align 4 %2821 = fcmp ult float %2820, %.2116.us.i @@ -5246,60 +5246,50 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i: ; preds = %.lr 2822: ; preds = %.lr.ph.split.us.us.i %indvars.iv.next314.i = add nsw i64 %indvars.iv313.i, 1 %lftr.wideiv.i = trunc i64 %indvars.iv.next314.i to i32 - %exitcond.not.i101 = icmp eq i32 %2826, %lftr.wideiv.i + %exitcond.not.i101 = icmp eq i32 %2825, %lftr.wideiv.i br i1 %exitcond.not.i101, label %._crit_edge248.us.i, label %.lr.ph.split.us.us.i, !llvm.loop !68 .lr.ph252.us.i: ; preds = %2721 %2823 = sub nsw i32 %.sroa.0201.2.us.i, %2674 - %2824 = add nsw i32 %.sroa.0201.2.us.i, %2674 - %.not131245.us.i = icmp sgt i32 %2823, %2824 - br i1 %.not131245.us.i, label %._crit_edge253.us.i, label %.lr.ph.us.preheader.i - -.lr.ph.us.preheader.i: ; preds = %.lr.ph252.us.i - %2825 = sext i32 %2823 to i64 - %2826 = add i32 %.sroa.0201.2.us.i, %narrow.i - %2827 = sext i32 %2722 to i64 - %2828 = add i32 %.sroa.8206.2.us.i, %narrow.i + %2824 = sext i32 %2823 to i64 + %2825 = add i32 %.sroa.0201.2.us.i, %narrow.i + %2826 = sext i32 %2722 to i64 + %2827 = add i32 %.sroa.8206.2.us.i, %narrow.i br label %.lr.ph.us.i -._crit_edge258.us.i: ; preds = %2831, %2777 +._crit_edge258.us.i: ; preds = %2830, %2777 %indvars.iv.next337.i = add nsw i64 %indvars.iv336.i, 1 %lftr.wideiv339.i = trunc i64 %indvars.iv.next337.i to i32 - %exitcond340.not.i = icmp eq i32 %2837, %lftr.wideiv339.i + %exitcond340.not.i = icmp eq i32 %2835, %lftr.wideiv339.i br i1 %exitcond340.not.i, label %._crit_edge263.us.i, label %.lr.ph257.us.i, !llvm.loop !82 -.lr.ph257.split.us.us.i: ; preds = %.lr.ph257.us.i, %2831 - %indvars.iv326.i = phi i64 [ %indvars.iv.next327.i, %2831 ], [ %2834, %.lr.ph257.us.i ] +.lr.ph257.split.us.us.i: ; preds = %.lr.ph257.us.i, %2830 + %indvars.iv326.i = phi i64 [ %indvars.iv.next327.i, %2830 ], [ %2832, %.lr.ph257.us.i ] %gep368.i = getelementptr float, ptr %invariant.gep369.i, i64 %indvars.iv326.i - %2829 = load float, ptr %gep368.i, align 4 - %2830 = fcmp ugt float %2829, %.2119.us.i - br i1 %2830, label %2831, label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i + %2828 = load float, ptr %gep368.i, align 4 + %2829 = fcmp ugt float %2828, %.2119.us.i + br i1 %2829, label %2830, label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i -2831: ; preds = %.lr.ph257.split.us.us.i +2830: ; preds = %.lr.ph257.split.us.us.i %indvars.iv.next327.i = add nsw i64 %indvars.iv326.i, 1 %lftr.wideiv329.i = trunc i64 %indvars.iv.next327.i to i32 - %exitcond330.not.i = icmp eq i32 %2835, %lftr.wideiv329.i + %exitcond330.not.i = icmp eq i32 %2833, %lftr.wideiv329.i br i1 %exitcond330.not.i, label %._crit_edge258.us.i, label %.lr.ph257.split.us.us.i, !llvm.loop !74 .lr.ph262.us.i: ; preds = %2769 - %2832 = sub nsw i32 %.sroa.0192.2.us.i, %2674 - %2833 = add nsw i32 %.sroa.0192.2.us.i, %2674 - %.not135254.us.i = icmp sgt i32 %2832, %2833 - br i1 %.not135254.us.i, label %._crit_edge263.us.i, label %.lr.ph257.us.preheader.i - -.lr.ph257.us.preheader.i: ; preds = %.lr.ph262.us.i - %2834 = sext i32 %2832 to i64 - %2835 = add i32 %.sroa.0192.2.us.i, %narrow.i - %2836 = sext i32 %2770 to i64 - %2837 = add i32 %.sroa.8197.2.us.i, %narrow.i + %2831 = sub nsw i32 %.sroa.0192.2.us.i, %2674 + %2832 = sext i32 %2831 to i64 + %2833 = add i32 %.sroa.0192.2.us.i, %narrow.i + %2834 = sext i32 %2770 to i64 + %2835 = add i32 %.sroa.8197.2.us.i, %narrow.i br label %.lr.ph257.us.i ._crit_edge267.us.i: ; preds = %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i, %.preheader210.us.i - %2838 = phi ptr [ %2705, %.preheader210.us.i ], [ %2815, %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i ] + %2836 = phi ptr [ %2705, %.preheader210.us.i ], [ %2815, %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i ] %indvars.iv.next309.i = add i64 %indvars.iv308.i, %2702 %indvars342.i = trunc i64 %indvars.iv.next309.i to i32 - %2839 = icmp sgt i32 %2687, %indvars342.i - br i1 %2839, label %.preheader210.us.i, label %_ZN2cv11xfeatures2dL26StarDetectorSuppressNonmaxERKNS_3MatES3_RSt6vectorINS_8KeyPointESaIS5_EEiiiii.exit, !llvm.loop !83 + %2837 = icmp sgt i32 %2687, %indvars342.i + br i1 %2837, label %.preheader210.us.i, label %_ZN2cv11xfeatures2dL26StarDetectorSuppressNonmaxERKNS_3MatES3_RSt6vectorINS_8KeyPointESaIS5_EEiiiii.exit, !llvm.loop !83 .split.us.i.invoke: ; preds = %2794, %2746 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.7) #21 @@ -5310,31 +5300,31 @@ _ZNSt6vectorIN2cv8KeyPointESaIS1_EE9push_backERKS1_.exit154.us.i: ; preds = %.lr _ZN2cv11xfeatures2dL26StarDetectorSuppressNonmaxERKNS_3MatES3_RSt6vectorINS_8KeyPointESaIS5_EEiiiii.exit: ; preds = %._crit_edge267.us.i, %.preheader210.lr.ph.i, %2667, %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit96 invoke void @_ZN2cv15KeyPointsFilter15runByPixelsMaskERSt6vectorINS_8KeyPointESaIS2_EERKNS_3MatE(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(96) %24) - to label %2840 unwind label %.loopexit.split-lp + to label %2838 unwind label %.loopexit.split-lp -2840: ; preds = %_ZN2cv11xfeatures2dL26StarDetectorSuppressNonmaxERKNS_3MatES3_RSt6vectorINS_8KeyPointESaIS5_EEiiiii.exit +2838: ; preds = %_ZN2cv11xfeatures2dL26StarDetectorSuppressNonmaxERKNS_3MatES3_RSt6vectorINS_8KeyPointESaIS5_EEiiiii.exit call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %29) #20 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %28) #20 br label %_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit -_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit: ; preds = %49, %45, %2840 +_ZNSt6vectorIN2cv8KeyPointESaIS1_EE5clearEv.exit: ; preds = %49, %45, %2838 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %25) #20 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %24) #20 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %23) #20 ret void -2841: ; preds = %65, %.body, %54 +2839: ; preds = %65, %.body, %54 %.pn16 = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %55, %54 ], [ %66, %65 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %25) #20 - br label %2842 + br label %2840 -2842: ; preds = %2841, %52 - %.pn16.pn = phi { ptr, i32 } [ %.pn16, %2841 ], [ %53, %52 ] +2840: ; preds = %2839, %52 + %.pn16.pn = phi { ptr, i32 } [ %.pn16, %2839 ], [ %53, %52 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %24) #20 - br label %2843 + br label %2841 -2843: ; preds = %2842, %50 - %.pn16.pn.pn = phi { ptr, i32 } [ %.pn16.pn, %2842 ], [ %51, %50 ] +2841: ; preds = %2840, %50 + %.pn16.pn.pn = phi { ptr, i32 } [ %.pn16.pn, %2840 ], [ %51, %50 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %23) #20 resume { ptr, i32 } %.pn16.pn.pn } diff --git a/bench/opencv/optimized/stereosgbm.cpp.ll b/bench/opencv/optimized/stereosgbm.cpp.ll index a60ad229d66..1058b8327c5 100644 --- a/bench/opencv/optimized/stereosgbm.cpp.ll +++ b/bench/opencv/optimized/stereosgbm.cpp.ll @@ -1010,10 +1010,9 @@ define internal fastcc void @_ZN2cvL15calcPixelCostBTERKNS_3MatES2_iiiPsPhPKhii( %24 = add i32 %23, %.sroa.speculated465 %25 = add nuw i32 %20, %.sroa.speculated465 %26 = sub i32 %25, %4 - %.sroa.speculated440 = tail call i32 @llvm.smax.i32(i32 %26, i32 0) %27 = sub i32 %24, %3 %.sroa.speculated427 = tail call i32 @llvm.smin.i32(i32 %12, i32 %27) - %28 = sub nsw i32 %.sroa.speculated427, %.sroa.speculated440 + %28 = sub nsw i32 %.sroa.speculated427, %26 %29 = getelementptr inbounds i8, ptr %0, i64 16 %30 = load ptr, ptr %29, align 8 %31 = getelementptr inbounds i8, ptr %0, i64 72 @@ -1086,7 +1085,7 @@ define internal fastcc void @_ZN2cvL15calcPixelCostBTERKNS_3MatES2_iiiPsPhPKhii( %82 = add nsw i32 %81, -1 %83 = icmp slt i32 %2, %82 %84 = select i1 %83, i32 %77, i32 0 - %.sroa.speculated449 = tail call i32 @llvm.umin.i32(i32 %.sroa.speculated440, i32 %25) + %.sroa.speculated449 = tail call i32 @llvm.umin.i32(i32 %26, i32 %25) %.sroa.speculated433 = tail call i32 @llvm.smax.i32(i32 %24, i32 %.sroa.speculated427) %85 = add i32 %.sroa.speculated433, 1 %86 = tail call i32 @llvm.smax.i32(i32 %.sroa.speculated449, i32 2) @@ -1474,8 +1473,8 @@ define internal fastcc void @_ZN2cvL15calcPixelCostBTERKNS_3MatES2_iiiPsPhPKhii( %386 = sext i32 %385 to i64 %387 = sub nsw i64 0, %386 %388 = getelementptr inbounds i16, ptr %5, i64 %387 - %389 = sub nsw i32 %12, %.sroa.speculated440 - %390 = icmp slt i32 %.sroa.speculated440, %.sroa.speculated427 + %389 = sub nsw i32 %12, %26 + %390 = icmp slt i32 %26, %.sroa.speculated427 %invariant.op554 = add i32 %12, %28 %391 = icmp slt i32 %20, %23 %392 = icmp slt i32 %3, %4 diff --git a/bench/openjdk/optimized/SpanClipRenderer.ll b/bench/openjdk/optimized/SpanClipRenderer.ll index 2dbcedbc5fa..b7e2b61022b 100644 --- a/bench/openjdk/optimized/SpanClipRenderer.ll +++ b/bench/openjdk/optimized/SpanClipRenderer.ll @@ -190,7 +190,7 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr 13: ; preds = %7 tail call void @JNU_ThrowArrayIndexOutOfBoundsException(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #4 - br label %235 + br label %231 14: ; preds = %7 %15 = load ptr, ptr %0, align 8 @@ -243,7 +243,7 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr %57 = load ptr, ptr %56, align 8 %58 = tail call ptr %57(ptr noundef nonnull %0, ptr noundef %6, ptr noundef null) #4 %59 = icmp eq ptr %58, null - br i1 %59, label %235, label %60 + br i1 %59, label %231, label %60 60: ; preds = %54 %61 = load i32, ptr %58, align 4 @@ -276,7 +276,7 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr %82 = load ptr, ptr %81, align 8 tail call void %82(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull %58, i32 noundef 0) #4 tail call void @JNU_ThrowArrayIndexOutOfBoundsException(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #4 - br label %235 + br label %231 83: ; preds = %73 %84 = load ptr, ptr %0, align 8 @@ -291,7 +291,7 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr %91 = getelementptr inbounds i8, ptr %89, i64 1784 %92 = load ptr, ptr %91, align 8 tail call void %92(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull %58, i32 noundef 0) #4 - br label %235 + br label %231 93: ; preds = %83 %94 = getelementptr inbounds i8, ptr %89, i64 1776 @@ -325,15 +325,15 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr %113 = getelementptr inbounds i8, ptr %112, i64 1784 %114 = load ptr, ptr %113, align 8 tail call void %114(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull %58, i32 noundef 0) #4 - br label %235 - -115: ; preds = %.lr.ph, %213 - %116 = phi i32 [ %129, %.lr.ph ], [ %216, %213 ] - %117 = phi i32 [ %130, %.lr.ph ], [ %215, %213 ] - %.0189280 = phi i32 [ %.0189.ph304, %.lr.ph ], [ %.2, %213 ] - %.0191279 = phi i32 [ %.0191.ph303, %.lr.ph ], [ %spec.select226, %213 ] - %.0193278 = phi i32 [ %.0193.ph302, %.lr.ph ], [ %.1194, %213 ] - %.0195277 = phi i32 [ %.0195.ph301, %.lr.ph ], [ %.2197, %213 ] + br label %231 + +115: ; preds = %.lr.ph, %209 + %116 = phi i32 [ %129, %.lr.ph ], [ %212, %209 ] + %117 = phi i32 [ %130, %.lr.ph ], [ %211, %209 ] + %.0189280 = phi i32 [ %.0189.ph304, %.lr.ph ], [ %.2, %209 ] + %.0191279 = phi i32 [ %.0191.ph303, %.lr.ph ], [ %spec.select226, %209 ] + %.0193278 = phi i32 [ %.0193.ph302, %.lr.ph ], [ %.1194, %209 ] + %.0195277 = phi i32 [ %.0195.ph301, %.lr.ph ], [ %.2197, %209 ] %118 = sext i32 %117 to i64 %119 = getelementptr inbounds i32, ptr %87, i64 %118 %120 = load i32, ptr %119, align 4 @@ -391,8 +391,8 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr %.1251.ph = phi i32 [ %149, %fill.exit234 ], [ %116, %.outer.preheader ] %.1248.ph = phi i32 [ %143, %fill.exit234 ], [ %124, %.outer.preheader ] %.1196.ph = phi i32 [ %spec.select, %fill.exit234 ], [ %.0195277, %.outer.preheader ] - %.1190.ph = phi i32 [ %169, %fill.exit234 ], [ %.0189280, %.outer.preheader ] - %.0188.ph = phi i32 [ %189, %fill.exit234 ], [ %61, %.outer.preheader ] + %.1190.ph = phi i32 [ %167, %fill.exit234 ], [ %.0189280, %.outer.preheader ] + %.0188.ph = phi i32 [ %186, %fill.exit234 ], [ %61, %.outer.preheader ] %138 = sext i32 %.1251.ph to i64 br label %139 @@ -432,187 +432,175 @@ define void @Java_sun_java2d_pipe_SpanClipRenderer_eraseTile(ptr noundef %0, ptr 153: ; preds = %152, %150 %154 = phi i32 [ %61, %152 ], [ %145, %150 ] %155 = load i32, ptr %62, align 4 - %156 = icmp slt i32 %.1190.ph, %155 - br i1 %156, label %157, label %fill.exit - -157: ; preds = %153 - %158 = sub nsw i32 %155, %.1190.ph - %159 = icmp slt i32 %158, 1 - %brmerge = or i1 %159, %103 + %156 = icmp sge i32 %.1190.ph, %155 + %brmerge = or i1 %156, %103 br i1 %brmerge, label %fill.exit, label %.preheader.us.preheader.i -.preheader.us.preheader.i: ; preds = %157 - %160 = sub nsw i32 %.1190.ph, %63 - %161 = mul nsw i32 %160, %5 - %162 = add i32 %161, %4 - %163 = sext i32 %162 to i64 - %164 = getelementptr inbounds i8, ptr %96, i64 %163 +.preheader.us.preheader.i: ; preds = %153 + %157 = sub nsw i32 %155, %.1190.ph + %158 = sub nsw i32 %.1190.ph, %63 + %159 = mul nsw i32 %158, %5 + %160 = add i32 %159, %4 + %161 = sext i32 %160 to i64 + %162 = getelementptr inbounds i8, ptr %96, i64 %161 br label %.preheader.us.i .preheader.us.i: ; preds = %.preheader.us.i, %.preheader.us.preheader.i - %.in.i = phi i32 [ %165, %.preheader.us.i ], [ %158, %.preheader.us.preheader.i ] - %.019.us.i = phi ptr [ %166, %.preheader.us.i ], [ %164, %.preheader.us.preheader.i ] - %165 = add nsw i32 %.in.i, -1 + %.in.i = phi i32 [ %163, %.preheader.us.i ], [ %157, %.preheader.us.preheader.i ] + %.019.us.i = phi ptr [ %164, %.preheader.us.i ], [ %162, %.preheader.us.preheader.i ] + %163 = add nsw i32 %.in.i, -1 tail call void @llvm.memset.p0.i64(ptr align 1 %.019.us.i, i8 0, i64 %105, i1 false) %scevgep.i = getelementptr i8, ptr %.019.us.i, i64 %105 - %166 = getelementptr inbounds i8, ptr %scevgep.i, i64 %104 - %167 = icmp samesign ugt i32 %.in.i, 1 - br i1 %167, label %.preheader.us.i, label %fill.exit.loopexit, !llvm.loop !6 + %164 = getelementptr inbounds i8, ptr %scevgep.i, i64 %104 + %165 = icmp samesign ugt i32 %.in.i, 1 + br i1 %165, label %.preheader.us.i, label %fill.exit.loopexit, !llvm.loop !6 fill.exit.loopexit: ; preds = %.preheader.us.i %.pre = load i32, ptr %58, align 4 br label %fill.exit -fill.exit: ; preds = %fill.exit.loopexit, %157, %153 - %168 = phi i32 [ %.pre, %fill.exit.loopexit ], [ %154, %157 ], [ %154, %153 ] - %169 = load i32, ptr %66, align 4 - %spec.select = tail call i32 @llvm.smin.i32(i32 %.1196.ph, i32 %168) - %170 = icmp slt i32 %.0188.ph, %168 - br i1 %170, label %171, label %fill.exit234 - -171: ; preds = %fill.exit - %172 = load i32, ptr %62, align 4 - %173 = sub nsw i32 %172, %63 - %174 = sub nsw i32 %168, %.0188.ph - %175 = sub nsw i32 %169, %172 - %176 = icmp sgt i32 %175, 0 - br i1 %176, label %.preheader.lr.ph.i228, label %fill.exit234 - -.preheader.lr.ph.i228: ; preds = %171 - %177 = sub nsw i32 %5, %174 - %178 = icmp sgt i32 %174, 0 - %179 = sext i32 %177 to i64 - br i1 %178, label %.preheader.us.preheader.i229, label %fill.exit234 - -.preheader.us.preheader.i229: ; preds = %.preheader.lr.ph.i228 - %180 = mul nsw i32 %173, %5 - %181 = add i32 %106, %.0188.ph - %182 = add i32 %181, %180 - %183 = sext i32 %182 to i64 - %184 = getelementptr inbounds i8, ptr %96, i64 %183 - %185 = zext nneg i32 %174 to i64 +fill.exit: ; preds = %153, %fill.exit.loopexit + %166 = phi i32 [ %.pre, %fill.exit.loopexit ], [ %154, %153 ] + %167 = load i32, ptr %66, align 4 + %spec.select = tail call i32 @llvm.smin.i32(i32 %.1196.ph, i32 %166) + %168 = icmp slt i32 %.0188.ph, %166 + br i1 %168, label %169, label %fill.exit234 + +169: ; preds = %fill.exit + %170 = load i32, ptr %62, align 4 + %171 = sub nsw i32 %167, %170 + %172 = icmp sgt i32 %171, 0 + br i1 %172, label %.preheader.lr.ph.i228, label %fill.exit234 + +.preheader.lr.ph.i228: ; preds = %169 + %173 = sub nsw i32 %166, %.0188.ph + %174 = sub nsw i32 %170, %63 + %175 = sub nsw i32 %5, %173 + %176 = sext i32 %175 to i64 + %177 = mul nsw i32 %174, %5 + %178 = add i32 %106, %.0188.ph + %179 = add i32 %178, %177 + %180 = sext i32 %179 to i64 + %181 = getelementptr inbounds i8, ptr %96, i64 %180 + %182 = zext nneg i32 %173 to i64 br label %.preheader.us.i230 -.preheader.us.i230: ; preds = %.preheader.us.i230, %.preheader.us.preheader.i229 - %.in.i231 = phi i32 [ %186, %.preheader.us.i230 ], [ %175, %.preheader.us.preheader.i229 ] - %.019.us.i232 = phi ptr [ %187, %.preheader.us.i230 ], [ %184, %.preheader.us.preheader.i229 ] - %186 = add nsw i32 %.in.i231, -1 - tail call void @llvm.memset.p0.i64(ptr align 1 %.019.us.i232, i8 0, i64 %185, i1 false) - %scevgep.i233 = getelementptr i8, ptr %.019.us.i232, i64 %185 - %187 = getelementptr inbounds i8, ptr %scevgep.i233, i64 %179 - %188 = icmp samesign ugt i32 %.in.i231, 1 - br i1 %188, label %.preheader.us.i230, label %fill.exit234, !llvm.loop !6 - -fill.exit234: ; preds = %.preheader.us.i230, %.preheader.lr.ph.i228, %171, %fill.exit - %189 = load i32, ptr %64, align 4 - %.not224 = icmp slt i32 %189, %65 +.preheader.us.i230: ; preds = %.preheader.us.i230, %.preheader.lr.ph.i228 + %.in.i231 = phi i32 [ %183, %.preheader.us.i230 ], [ %171, %.preheader.lr.ph.i228 ] + %.019.us.i232 = phi ptr [ %184, %.preheader.us.i230 ], [ %181, %.preheader.lr.ph.i228 ] + %183 = add nsw i32 %.in.i231, -1 + tail call void @llvm.memset.p0.i64(ptr align 1 %.019.us.i232, i8 0, i64 %182, i1 false) + %scevgep.i233 = getelementptr i8, ptr %.019.us.i232, i64 %182 + %184 = getelementptr inbounds i8, ptr %scevgep.i233, i64 %176 + %185 = icmp samesign ugt i32 %.in.i231, 1 + br i1 %185, label %.preheader.us.i230, label %fill.exit234, !llvm.loop !6 + +fill.exit234: ; preds = %.preheader.us.i230, %169, %fill.exit + %186 = load i32, ptr %64, align 4 + %.not224 = icmp slt i32 %186, %65 br i1 %.not224, label %.outer, label %nextXBand.exit.thread, !llvm.loop !9 nextXBand.exit.thread.loopexit: ; preds = %139 - %190 = trunc nsw i64 %indvars.iv to i32 + %187 = trunc nsw i64 %indvars.iv to i32 br label %nextXBand.exit.thread nextXBand.exit.thread: ; preds = %fill.exit234, %148, %nextXBand.exit.thread.loopexit %.2249261 = phi i32 [ %.1248, %nextXBand.exit.thread.loopexit ], [ %143, %148 ], [ %143, %fill.exit234 ] - %.2252260 = phi i32 [ %190, %nextXBand.exit.thread.loopexit ], [ %149, %148 ], [ %149, %fill.exit234 ] + %.2252260 = phi i32 [ %187, %nextXBand.exit.thread.loopexit ], [ %149, %148 ], [ %149, %fill.exit234 ] %.2197 = phi i32 [ %.1196.ph, %nextXBand.exit.thread.loopexit ], [ %spec.select, %fill.exit234 ], [ %.1196.ph, %148 ] - %.2 = phi i32 [ %.1190.ph, %nextXBand.exit.thread.loopexit ], [ %169, %fill.exit234 ], [ %.1190.ph, %148 ] + %.2 = phi i32 [ %.1190.ph, %nextXBand.exit.thread.loopexit ], [ %167, %fill.exit234 ], [ %.1190.ph, %148 ] %.1 = phi i32 [ %.0188.ph, %nextXBand.exit.thread.loopexit ], [ %65, %fill.exit234 ], [ %.0188.ph, %148 ] - %191 = icmp sgt i32 %.1, %61 - br i1 %191, label %192, label %213 - -192: ; preds = %nextXBand.exit.thread - %193 = icmp slt i32 %.1, %65 - %.pre332 = load i32, ptr %62, align 4 - br i1 %193, label %194, label %fill.exit241 - -194: ; preds = %192 - %195 = sub nsw i32 %.pre332, %63 - %196 = sub nsw i32 %65, %.1 - %197 = load i32, ptr %66, align 4 - %198 = sub nsw i32 %197, %.pre332 - %199 = icmp sgt i32 %198, 0 - br i1 %199, label %.preheader.lr.ph.i235, label %fill.exit241 - -.preheader.lr.ph.i235: ; preds = %194 - %200 = sub nsw i32 %5, %196 - %201 = icmp sgt i32 %196, 0 - %202 = sext i32 %200 to i64 - br i1 %201, label %.preheader.us.preheader.i236, label %fill.exit241 - -.preheader.us.preheader.i236: ; preds = %.preheader.lr.ph.i235 - %203 = mul nsw i32 %195, %5 - %204 = add i32 %106, %.1 - %205 = add i32 %204, %203 - %206 = sext i32 %205 to i64 - %207 = getelementptr inbounds i8, ptr %96, i64 %206 - %208 = zext nneg i32 %196 to i64 + %188 = icmp sgt i32 %.1, %61 + br i1 %188, label %189, label %209 + +189: ; preds = %nextXBand.exit.thread + %190 = icmp slt i32 %.1, %65 + %.pre331 = load i32, ptr %62, align 4 + br i1 %190, label %191, label %fill.exit241 + +191: ; preds = %189 + %192 = load i32, ptr %66, align 4 + %193 = sub nsw i32 %192, %.pre331 + %194 = icmp sgt i32 %193, 0 + br i1 %194, label %.preheader.lr.ph.i235, label %fill.exit241 + +.preheader.lr.ph.i235: ; preds = %191 + %195 = sub nsw i32 %65, %.1 + %196 = sub nsw i32 %.pre331, %63 + %197 = sub nsw i32 %5, %195 + %198 = sext i32 %197 to i64 + %199 = mul nsw i32 %196, %5 + %200 = add i32 %106, %.1 + %201 = add i32 %200, %199 + %202 = sext i32 %201 to i64 + %203 = getelementptr inbounds i8, ptr %96, i64 %202 + %204 = zext nneg i32 %195 to i64 br label %.preheader.us.i237 -.preheader.us.i237: ; preds = %.preheader.us.i237, %.preheader.us.preheader.i236 - %.in.i238 = phi i32 [ %209, %.preheader.us.i237 ], [ %198, %.preheader.us.preheader.i236 ] - %.019.us.i239 = phi ptr [ %210, %.preheader.us.i237 ], [ %207, %.preheader.us.preheader.i236 ] - %209 = add nsw i32 %.in.i238, -1 - tail call void @llvm.memset.p0.i64(ptr align 1 %.019.us.i239, i8 0, i64 %208, i1 false) - %scevgep.i240 = getelementptr i8, ptr %.019.us.i239, i64 %208 - %210 = getelementptr inbounds i8, ptr %scevgep.i240, i64 %202 - %211 = icmp samesign ugt i32 %.in.i238, 1 - br i1 %211, label %.preheader.us.i237, label %fill.exit241.loopexit, !llvm.loop !6 +.preheader.us.i237: ; preds = %.preheader.us.i237, %.preheader.lr.ph.i235 + %.in.i238 = phi i32 [ %205, %.preheader.us.i237 ], [ %193, %.preheader.lr.ph.i235 ] + %.019.us.i239 = phi ptr [ %206, %.preheader.us.i237 ], [ %203, %.preheader.lr.ph.i235 ] + %205 = add nsw i32 %.in.i238, -1 + tail call void @llvm.memset.p0.i64(ptr align 1 %.019.us.i239, i8 0, i64 %204, i1 false) + %scevgep.i240 = getelementptr i8, ptr %.019.us.i239, i64 %204 + %206 = getelementptr inbounds i8, ptr %scevgep.i240, i64 %198 + %207 = icmp samesign ugt i32 %.in.i238, 1 + br i1 %207, label %.preheader.us.i237, label %fill.exit241.loopexit, !llvm.loop !6 fill.exit241.loopexit: ; preds = %.preheader.us.i237 - %.pre331 = load i32, ptr %62, align 4 + %.pre330 = load i32, ptr %62, align 4 br label %fill.exit241 -fill.exit241: ; preds = %fill.exit241.loopexit, %.preheader.lr.ph.i235, %194, %192 - %212 = phi i32 [ %.pre331, %fill.exit241.loopexit ], [ %.pre332, %.preheader.lr.ph.i235 ], [ %.pre332, %194 ], [ %.pre332, %192 ] - %spec.select225 = tail call i32 @llvm.smin.i32(i32 %.0193278, i32 %212) - br label %213 +fill.exit241: ; preds = %fill.exit241.loopexit, %191, %189 + %208 = phi i32 [ %.pre330, %fill.exit241.loopexit ], [ %.pre331, %191 ], [ %.pre331, %189 ] + %spec.select225 = tail call i32 @llvm.smin.i32(i32 %.0193278, i32 %208) + br label %209 -213: ; preds = %fill.exit241, %nextXBand.exit.thread +209: ; preds = %fill.exit241, %nextXBand.exit.thread %.1194 = phi i32 [ %.0193278, %nextXBand.exit.thread ], [ %spec.select225, %fill.exit241 ] %spec.select226 = tail call i32 @llvm.smax.i32(i32 %.0191279, i32 %.1) - %214 = shl nsw i32 %.2249261, 1 - %215 = add nsw i32 %214, %.2252260 - %216 = add nsw i32 %215, 3 - %217 = icmp slt i32 %216, %.0 - br i1 %217, label %115, label %nextYRange.exit.thread, !llvm.loop !8 - -nextYRange.exit.thread: ; preds = %.outer263.loopexit, %131, %213, %.preheader - %.0199.ph.lcssa = phi i32 [ %28, %.preheader ], [ %.0199.ph299, %213 ], [ %.0199.ph299, %131 ], [ %124, %.outer263.loopexit ] - %.0198.ph.lcssa = phi i32 [ %23, %.preheader ], [ %.0198.ph300, %213 ], [ %.0198.ph300, %131 ], [ %116, %.outer263.loopexit ] - %.0195.lcssa = phi i32 [ %65, %.preheader ], [ %.0195277, %131 ], [ %.2197, %213 ], [ %.0195277, %.outer263.loopexit ] - %.0193.lcssa = phi i32 [ %67, %.preheader ], [ %.0193278, %131 ], [ %.1194, %213 ], [ %.0193278, %.outer263.loopexit ] - %.0191.lcssa = phi i32 [ %61, %.preheader ], [ %.0191279, %131 ], [ %spec.select226, %213 ], [ %.0191279, %.outer263.loopexit ] - %.0189.lcssa = phi i32 [ %67, %.preheader ], [ %.0189280, %131 ], [ %.2, %213 ], [ %.0189280, %.outer263.loopexit ] + %210 = shl nsw i32 %.2249261, 1 + %211 = add nsw i32 %210, %.2252260 + %212 = add nsw i32 %211, 3 + %213 = icmp slt i32 %212, %.0 + br i1 %213, label %115, label %nextYRange.exit.thread, !llvm.loop !8 + +nextYRange.exit.thread: ; preds = %.outer263.loopexit, %131, %209, %.preheader + %.0199.ph.lcssa = phi i32 [ %28, %.preheader ], [ %.0199.ph299, %209 ], [ %.0199.ph299, %131 ], [ %124, %.outer263.loopexit ] + %.0198.ph.lcssa = phi i32 [ %23, %.preheader ], [ %.0198.ph300, %209 ], [ %.0198.ph300, %131 ], [ %116, %.outer263.loopexit ] + %.0195.lcssa = phi i32 [ %65, %.preheader ], [ %.0195277, %131 ], [ %.2197, %209 ], [ %.0195277, %.outer263.loopexit ] + %.0193.lcssa = phi i32 [ %67, %.preheader ], [ %.0193278, %131 ], [ %.1194, %209 ], [ %.0193278, %.outer263.loopexit ] + %.0191.lcssa = phi i32 [ %61, %.preheader ], [ %.0191279, %131 ], [ %spec.select226, %209 ], [ %.0191279, %.outer263.loopexit ] + %.0189.lcssa = phi i32 [ %67, %.preheader ], [ %.0189280, %131 ], [ %.2, %209 ], [ %.0189280, %.outer263.loopexit ] store i32 %.0195.lcssa, ptr %58, align 4 store i32 %.0193.lcssa, ptr %62, align 4 store i32 %.0191.lcssa, ptr %64, align 4 store i32 %.0189.lcssa, ptr %66, align 4 - %218 = load ptr, ptr %0, align 8 - %219 = getelementptr inbounds i8, ptr %218, i64 1784 - %220 = load ptr, ptr %219, align 8 - tail call void %220(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %96, i32 noundef 0) #4 - %221 = load ptr, ptr %0, align 8 - %222 = getelementptr inbounds i8, ptr %221, i64 1784 - %223 = load ptr, ptr %222, align 8 - tail call void %223(ptr noundef nonnull %0, ptr noundef %38, ptr noundef nonnull %87, i32 noundef 0) #4 - %224 = load ptr, ptr %0, align 8 - %225 = getelementptr inbounds i8, ptr %224, i64 1784 - %226 = load ptr, ptr %225, align 8 - tail call void %226(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull %58, i32 noundef 0) #4 + %214 = load ptr, ptr %0, align 8 + %215 = getelementptr inbounds i8, ptr %214, i64 1784 + %216 = load ptr, ptr %215, align 8 + tail call void %216(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %96, i32 noundef 0) #4 + %217 = load ptr, ptr %0, align 8 + %218 = getelementptr inbounds i8, ptr %217, i64 1784 + %219 = load ptr, ptr %218, align 8 + tail call void %219(ptr noundef nonnull %0, ptr noundef %38, ptr noundef nonnull %87, i32 noundef 0) #4 + %220 = load ptr, ptr %0, align 8 + %221 = getelementptr inbounds i8, ptr %220, i64 1784 + %222 = load ptr, ptr %221, align 8 + tail call void %222(ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull %58, i32 noundef 0) #4 + %223 = load ptr, ptr %0, align 8 + %224 = getelementptr inbounds i8, ptr %223, i64 872 + %225 = load ptr, ptr %224, align 8 + %226 = load ptr, ptr @pCurIndexID, align 8 + tail call void %225(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %226, i32 noundef %.0198.ph.lcssa) #4 %227 = load ptr, ptr %0, align 8 %228 = getelementptr inbounds i8, ptr %227, i64 872 %229 = load ptr, ptr %228, align 8 - %230 = load ptr, ptr @pCurIndexID, align 8 - tail call void %229(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %230, i32 noundef %.0198.ph.lcssa) #4 - %231 = load ptr, ptr %0, align 8 - %232 = getelementptr inbounds i8, ptr %231, i64 872 - %233 = load ptr, ptr %232, align 8 - %234 = load ptr, ptr @pNumXbandsID, align 8 - tail call void %233(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %234, i32 noundef %.0199.ph.lcssa) #4 - br label %235 - -235: ; preds = %54, %nextYRange.exit.thread, %108, %90, %79, %13 + %230 = load ptr, ptr @pNumXbandsID, align 8 + tail call void %229(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %230, i32 noundef %.0199.ph.lcssa) #4 + br label %231 + +231: ; preds = %54, %nextYRange.exit.thread, %108, %90, %79, %13 ret void } diff --git a/bench/openspiel/optimized/y.cc.ll b/bench/openspiel/optimized/y.cc.ll index a3e416ad6ee..b24db065db2 100644 --- a/bench/openspiel/optimized/y.cc.ll +++ b/bench/openspiel/optimized/y.cc.ll @@ -2409,7 +2409,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body: ; preds = %26, %71 %eh.lpad-body = phi { ptr, i32 } [ %72, %71 ], [ %27, %26 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #26 - br label %186 + br label %184 73: ; preds = %.noexc46, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit %74 = landingpad { ptr, i32 } @@ -2419,7 +2419,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body48: ; preds = %29, %73 %eh.lpad-body49 = phi { ptr, i32 } [ %74, %73 ], [ %30, %29 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #26 - br label %185 + br label %183 75: ; preds = %.noexc51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit50 %76 = landingpad { ptr, i32 } @@ -2429,7 +2429,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body53: ; preds = %32, %75 %eh.lpad-body54 = phi { ptr, i32 } [ %76, %75 ], [ %33, %32 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #26 - br label %184 + br label %182 77: ; preds = %.noexc56, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit55 %78 = landingpad { ptr, i32 } @@ -2439,7 +2439,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body58: ; preds = %35, %77 %eh.lpad-body59 = phi { ptr, i32 } [ %78, %77 ], [ %36, %35 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #26 - br label %183 + br label %181 79: ; preds = %.noexc61, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit60 %80 = landingpad { ptr, i32 } @@ -2449,7 +2449,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body63: ; preds = %38, %79 %eh.lpad-body64 = phi { ptr, i32 } [ %80, %79 ], [ %39, %38 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #26 - br label %182 + br label %180 81: ; preds = %.noexc66, %43 %82 = landingpad { ptr, i32 } @@ -2459,7 +2459,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body68: ; preds = %45, %81 %eh.lpad-body69 = phi { ptr, i32 } [ %82, %81 ], [ %46, %45 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #26 - br label %181 + br label %179 83: ; preds = %63, %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit81, %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit77, %_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit70 %84 = landingpad { ptr, i32 } @@ -2481,7 +2481,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e .body72: ; preds = %48, %56, %83, %66, %60, %52, %87, %85 %.pn = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ], [ %49, %48 ], [ %53, %52 ], [ %57, %56 ], [ %61, %60 ], [ %84, %83 ], [ %67, %66 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #26 - br label %181 + br label %179 89: ; preds = %69, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit65 invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %22) @@ -2521,14 +2521,14 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e 106: ; preds = %89 %107 = landingpad { ptr, i32 } cleanup - br label %181 + br label %179 -.loopexit: ; preds = %.invoke, %140, %142, %151, %153, %155 +.loopexit: ; preds = %.invoke, %138, %140, %149, %151, %153 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %._crit_edge111.thread, %174, %172, %126, %124 +.loopexit.split-lp.loopexit: ; preds = %._crit_edge111.thread, %172, %170, %126, %124 %lpad.loopexit99 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -2538,7 +2538,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %90, %._crit_edge, %177, %179 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %90, %._crit_edge, %175, %177 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -2556,7 +2556,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e %.023 = phi i32 [ %115, %._crit_edge111.thread ], [ 0, %.preheader98 ] %112 = load i32, ptr %92, align 4 %113 = icmp slt i32 %.023, %112 - br i1 %113, label %114, label %177 + br i1 %113, label %114, label %175 114: ; preds = %111 %115 = add nuw nsw i32 %.023, 1 @@ -2566,11 +2566,11 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e %119 = zext nneg i32 %118 to i64 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #26 %120 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %23) - to label %.noexc93 unwind label %144 + to label %.noexc93 unwind label %142 .noexc93: ; preds = %114 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %120, ptr noundef nonnull align 1 dereferenceable(1) %24) - to label %.noexc94 unwind label %144 + to label %.noexc94 unwind label %142 .noexc94: ; preds = %.noexc93 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc(ptr noundef nonnull align 8 dereferenceable(32) %23, i64 noundef %119, i8 noundef signext 32) @@ -2584,7 +2584,7 @@ _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_.e _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; preds = %.noexc94 %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %23) - to label %124 unwind label %146 + to label %124 unwind label %144 124: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #26 @@ -2601,119 +2601,116 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; pre %129 = icmp sgt i32 %128, %.023 br i1 %129, label %.lr.ph110, label %._crit_edge111.thread -.lr.ph110: ; preds = %.preheader, %166 - %130 = phi i32 [ %168, %166 ], [ %128, %.preheader ] - %.020109 = phi i32 [ %167, %166 ], [ 0, %.preheader ] - %.021108 = phi i8 [ %.122, %166 ], [ 0, %.preheader ] +.lr.ph110: ; preds = %.preheader, %164 + %130 = phi i32 [ %166, %164 ], [ %128, %.preheader ] + %.020109 = phi i32 [ %165, %164 ], [ 0, %.preheader ] + %.021108 = phi i8 [ %.122, %164 ], [ 0, %.preheader ] %131 = icmp slt i32 %.020109, %130 %132 = icmp slt i32 %.023, %130 %or.cond18.i.i = and i1 %132, %131 - %133 = add nuw nsw i32 %.020109, %.023 - %134 = icmp slt i32 %133, %130 - %or.cond20.i.i = select i1 %or.cond18.i.i, i1 %134, i1 false - %135 = mul nsw i32 %130, %.023 - %136 = add nuw nsw i32 %135, %.020109 - %137 = trunc i32 %136 to i16 - %138 = select i1 %or.cond20.i.i, i16 %137, i16 -2 - %139 = trunc nuw i8 %.021108 to i1 - br i1 %139, label %140, label %148 - -140: ; preds = %.lr.ph110 - %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %142 unwind label %.loopexit - -142: ; preds = %140 - %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %141, i8 noundef signext 93) - to label %157 unwind label %.loopexit - -144: ; preds = %.noexc93, %114 - %145 = landingpad { ptr, i32 } + %133 = mul nsw i32 %130, %.023 + %134 = add nuw nsw i32 %133, %.020109 + %135 = trunc i32 %134 to i16 + %136 = select i1 %or.cond18.i.i, i16 %135, i16 -2 + %137 = trunc nuw i8 %.021108 to i1 + br i1 %137, label %138, label %146 + +138: ; preds = %.lr.ph110 + %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) + to label %140 unwind label %.loopexit + +140: ; preds = %138 + %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %139, i8 noundef signext 93) + to label %155 unwind label %.loopexit + +142: ; preds = %.noexc93, %114 + %143 = landingpad { ptr, i32 } cleanup br label %.body95 -146: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit - %147 = landingpad { ptr, i32 } +144: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit + %145 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #26 br label %.body95 -.body95: ; preds = %144, %121, %146 - %.pn35 = phi { ptr, i32 } [ %147, %146 ], [ %145, %144 ], [ %122, %121 ] +.body95: ; preds = %142, %121, %144 + %.pn35 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ], [ %122, %121 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #26 br label %.loopexit.split-lp -148: ; preds = %.lr.ph110 - %149 = load i16, ptr %109, align 2 - %150 = icmp eq i16 %149, %138 - br i1 %150, label %151, label %155 - -151: ; preds = %148 - %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %153 unwind label %.loopexit - -153: ; preds = %151 - %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %152, i8 noundef signext 91) - to label %157 unwind label %.loopexit - -155: ; preds = %148 - %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %22, i8 noundef signext 32) - to label %157 unwind label %.loopexit - -157: ; preds = %153, %142, %155 - %.122 = phi i8 [ %.021108, %155 ], [ 0, %142 ], [ 1, %153 ] - %158 = sext i16 %138 to i64 - %159 = load ptr, ptr %110, align 8 - %160 = getelementptr inbounds %"struct.open_spiel::y_game::YState::Cell", ptr %159, i64 %158 - %161 = load i8, ptr %160, align 2 - switch i8 %161, label %166 [ +146: ; preds = %.lr.ph110 + %147 = load i16, ptr %109, align 2 + %148 = icmp eq i16 %147, %136 + br i1 %148, label %149, label %153 + +149: ; preds = %146 + %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) + to label %151 unwind label %.loopexit + +151: ; preds = %149 + %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %150, i8 noundef signext 91) + to label %155 unwind label %.loopexit + +153: ; preds = %146 + %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %22, i8 noundef signext 32) + to label %155 unwind label %.loopexit + +155: ; preds = %151, %140, %153 + %.122 = phi i8 [ %.021108, %153 ], [ 0, %140 ], [ 1, %151 ] + %156 = sext i16 %136 to i64 + %157 = load ptr, ptr %110, align 8 + %158 = getelementptr inbounds %"struct.open_spiel::y_game::YState::Cell", ptr %157, i64 %156 + %159 = load i8, ptr %158, align 2 + switch i8 %159, label %164 [ i8 2, label %.invoke - i8 0, label %164 - i8 1, label %165 + i8 0, label %162 + i8 1, label %163 ] -.invoke: ; preds = %157, %165, %164 - %162 = phi ptr [ %3, %164 ], [ %5, %165 ], [ %7, %157 ] - %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %162) - to label %166 unwind label %.loopexit +.invoke: ; preds = %155, %163, %162 + %160 = phi ptr [ %3, %162 ], [ %5, %163 ], [ %7, %155 ] + %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %160) + to label %164 unwind label %.loopexit -164: ; preds = %157 +162: ; preds = %155 br label %.invoke -165: ; preds = %157 +163: ; preds = %155 br label %.invoke -166: ; preds = %.invoke, %157 - %167 = add nuw nsw i32 %.020109, 1 - %168 = load i32, ptr %92, align 4 - %169 = sub nsw i32 %168, %.023 - %170 = icmp slt i32 %167, %169 - br i1 %170, label %.lr.ph110, label %._crit_edge111, !llvm.loop !21 +164: ; preds = %.invoke, %155 + %165 = add nuw nsw i32 %.020109, 1 + %166 = load i32, ptr %92, align 4 + %167 = sub nsw i32 %166, %.023 + %168 = icmp slt i32 %165, %167 + br i1 %168, label %.lr.ph110, label %._crit_edge111, !llvm.loop !21 -._crit_edge111: ; preds = %166 - %171 = trunc nuw i8 %.122 to i1 - br i1 %171, label %172, label %._crit_edge111.thread +._crit_edge111: ; preds = %164 + %169 = trunc nuw i8 %.122 to i1 + br i1 %169, label %170, label %._crit_edge111.thread -172: ; preds = %._crit_edge111 - %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) - to label %174 unwind label %.loopexit.split-lp.loopexit +170: ; preds = %._crit_edge111 + %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %9) + to label %172 unwind label %.loopexit.split-lp.loopexit -174: ; preds = %172 - %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %173, i8 noundef signext 93) +172: ; preds = %170 + %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %171, i8 noundef signext 93) to label %._crit_edge111.thread unwind label %.loopexit.split-lp.loopexit -._crit_edge111.thread: ; preds = %.preheader, %174, %._crit_edge111 - %176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %22, i8 noundef signext 10) +._crit_edge111.thread: ; preds = %.preheader, %172, %._crit_edge111 + %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %22, i8 noundef signext 10) to label %111 unwind label %.loopexit.split-lp.loopexit, !llvm.loop !22 -177: ; preds = %111 - %178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %179 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp +175: ; preds = %111 + %176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(32) %11) + to label %177 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -179: ; preds = %177 +177: ; preds = %175 invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %22) - to label %180 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %178 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -180: ; preds = %179 +178: ; preds = %177 call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %22) #26 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #26 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #26 @@ -2725,35 +2722,35 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_.exit: ; pre .loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %.body95 %.pn37 = phi { ptr, i32 } [ %.pn35, %.body95 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit99, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit103, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %22) #26 - br label %181 + br label %179 -181: ; preds = %.loopexit.split-lp, %106, %.body72, %.body68 +179: ; preds = %.loopexit.split-lp, %106, %.body72, %.body68 %.pn37.pn = phi { ptr, i32 } [ %.pn37, %.loopexit.split-lp ], [ %107, %106 ], [ %.pn, %.body72 ], [ %eh.lpad-body69, %.body68 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #26 - br label %182 + br label %180 -182: ; preds = %181, %.body63 - %.pn37.pn.pn = phi { ptr, i32 } [ %.pn37.pn, %181 ], [ %eh.lpad-body64, %.body63 ] +180: ; preds = %179, %.body63 + %.pn37.pn.pn = phi { ptr, i32 } [ %.pn37.pn, %179 ], [ %eh.lpad-body64, %.body63 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #26 - br label %183 + br label %181 -183: ; preds = %182, %.body58 - %.pn37.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn, %182 ], [ %eh.lpad-body59, %.body58 ] +181: ; preds = %180, %.body58 + %.pn37.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn, %180 ], [ %eh.lpad-body59, %.body58 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #26 - br label %184 + br label %182 -184: ; preds = %183, %.body53 - %.pn37.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn, %183 ], [ %eh.lpad-body54, %.body53 ] +182: ; preds = %181, %.body53 + %.pn37.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn, %181 ], [ %eh.lpad-body54, %.body53 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #26 - br label %185 + br label %183 -185: ; preds = %184, %.body48 - %.pn37.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn.pn, %184 ], [ %eh.lpad-body49, %.body48 ] +183: ; preds = %182, %.body48 + %.pn37.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn.pn, %182 ], [ %eh.lpad-body49, %.body48 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #26 - br label %186 + br label %184 -186: ; preds = %185, %.body - %.pn37.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn.pn.pn, %185 ], [ %eh.lpad-body, %.body ] +184: ; preds = %183, %.body + %.pn37.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn37.pn.pn.pn.pn.pn, %183 ], [ %eh.lpad-body, %.body ] resume { ptr, i32 } %.pn37.pn.pn.pn.pn.pn.pn } diff --git a/bench/php/optimized/tm2unixtime.ll b/bench/php/optimized/tm2unixtime.ll index 7c768ce6c4d..080bfe01e09 100644 --- a/bench/php/optimized/tm2unixtime.ll +++ b/bench/php/optimized/tm2unixtime.ll @@ -443,14 +443,14 @@ do_range_limit.exit32._crit_edge: ; preds = %do_range_limit.exit %39 = phi i64 [ %.pre, %do_range_limit.exit32._crit_edge ], [ %36, %do_range_limit.exit32.thread58 ] %40 = getelementptr inbounds i8, ptr %0, i64 24 %41 = icmp slt i64 %39, 0 - %.pre104.pre = load i64, ptr %40, align 8 + %.pre97.pre = load i64, ptr %40, align 8 br i1 %41, label %42, label %48 42: ; preds = %38 %.neg.i35 = xor i64 %39, -1 %43 = udiv i64 %.neg.i35, 60 %.neg24.i36 = xor i64 %43, -1 - %44 = add i64 %.pre104.pre, %.neg24.i36 + %44 = add i64 %.pre97.pre, %.neg24.i36 store i64 %44, ptr %40, align 8 %45 = mul nuw nsw i64 %43, 60 %46 = add nsw i64 %39, 60 @@ -459,7 +459,7 @@ do_range_limit.exit32._crit_edge: ; preds = %do_range_limit.exit br label %48 48: ; preds = %42, %38 - %.pre104 = phi i64 [ %44, %42 ], [ %.pre104.pre, %38 ] + %.pre97 = phi i64 [ %44, %42 ], [ %.pre97.pre, %38 ] %49 = phi i64 [ %47, %42 ], [ %39, %38 ] %.fr.i34 = freeze i64 %49 %.not.i33 = icmp slt i64 %.fr.i34, 60 @@ -467,14 +467,14 @@ do_range_limit.exit32._crit_edge: ; preds = %do_range_limit.exit 50: ; preds = %48 %51 = udiv i64 %.fr.i34, 60 - %52 = add nsw i64 %.pre104, %51 + %52 = add nsw i64 %.pre97, %51 store i64 %52, ptr %40, align 8 %53 = urem i64 %.fr.i34, 60 store i64 %53, ptr %24, align 8 br label %do_range_limit.exit37 do_range_limit.exit37: ; preds = %48, %50 - %54 = phi i64 [ %.pre104, %48 ], [ %52, %50 ] + %54 = phi i64 [ %.pre97, %48 ], [ %52, %50 ] %55 = getelementptr inbounds i8, ptr %0, i64 16 %56 = icmp slt i64 %54, 0 br i1 %56, label %57, label %64 @@ -613,17 +613,17 @@ do_range_limit.exit47: ; preds = %do_range_limit.exit br label %magic_date_calc.exit magic_date_calc.exit: ; preds = %111, %94, %92, %do_range_limit.exit47 - %.promoted76 = phi i64 [ %117, %111 ], [ 1, %94 ], [ %89, %92 ], [ %89, %do_range_limit.exit47 ] - %.promoted75 = phi i64 [ %119, %111 ], [ 1970, %94 ], [ 1970, %92 ], [ %90, %do_range_limit.exit47 ] + %.promoted74 = phi i64 [ %117, %111 ], [ 1, %94 ], [ %89, %92 ], [ %89, %do_range_limit.exit47 ] + %.promoted73 = phi i64 [ %119, %111 ], [ 1970, %94 ], [ 1970, %92 ], [ %90, %do_range_limit.exit47 ] %124 = getelementptr inbounds i8, ptr %0, i64 16 - %.promoted74 = load i64, ptr %124, align 8 + %.promoted72 = load i64, ptr %124, align 8 br label %125 125: ; preds = %do_range_limit_days.exit, %magic_date_calc.exit - %126 = phi i64 [ %202, %do_range_limit_days.exit ], [ %.promoted76, %magic_date_calc.exit ] - %.promoted78 = phi i64 [ %.promoted79, %do_range_limit_days.exit ], [ %.promoted76, %magic_date_calc.exit ] - %127 = phi i64 [ %154, %do_range_limit_days.exit ], [ %.promoted75, %magic_date_calc.exit ] - %128 = phi i64 [ %203, %do_range_limit_days.exit ], [ %.promoted74, %magic_date_calc.exit ] + %126 = phi i64 [ %200, %do_range_limit_days.exit ], [ %.promoted74, %magic_date_calc.exit ] + %.promoted76 = phi i64 [ %.promoted77, %do_range_limit_days.exit ], [ %.promoted74, %magic_date_calc.exit ] + %127 = phi i64 [ %154, %do_range_limit_days.exit ], [ %.promoted73, %magic_date_calc.exit ] + %128 = phi i64 [ %201, %do_range_limit_days.exit ], [ %.promoted72, %magic_date_calc.exit ] %.fr.i50 = freeze i64 %128 %129 = add i64 %.fr.i50, -146097 %or.cond.i = icmp ult i64 %129, -292193 @@ -641,26 +641,26 @@ magic_date_calc.exit: ; preds = %111, %94, %92, %do_ 135: ; preds = %130, %125 %136 = phi i64 [ %133, %130 ], [ %127, %125 ] %137 = phi i64 [ %134, %130 ], [ %.fr.i50, %125 ] - %138 = icmp slt i64 %.promoted78, 1 + %138 = icmp slt i64 %.promoted76, 1 br i1 %138, label %139, label %146 139: ; preds = %135 - %140 = sub i64 0, %.promoted78 + %140 = sub i64 0, %.promoted76 %141 = sdiv i64 %140, 12 %.neg24.i.i = xor i64 %141, -1 %142 = add i64 %136, %.neg24.i.i store i64 %142, ptr %0, align 8 %143 = mul nsw i64 %141, 12 - %144 = add nsw i64 %.promoted78, 12 + %144 = add nsw i64 %.promoted76, 12 %145 = add i64 %144, %143 store i64 %145, ptr %71, align 8 br label %146 146: ; preds = %139, %135 %147 = phi i64 [ %145, %139 ], [ %126, %135 ] - %.promoted77 = phi i64 [ %145, %139 ], [ %.promoted78, %135 ] + %.promoted75 = phi i64 [ %145, %139 ], [ %.promoted76, %135 ] %148 = phi i64 [ %142, %139 ], [ %136, %135 ] - %.fr.i.i = freeze i64 %.promoted77 + %.fr.i.i = freeze i64 %.promoted75 %.not.i.i = icmp slt i64 %.fr.i.i, 13 br i1 %.not.i.i, label %do_range_limit.exit.i, label %149 @@ -674,7 +674,7 @@ magic_date_calc.exit: ; preds = %111, %94, %92, %do_ do_range_limit.exit.i: ; preds = %149, %146 %153 = phi i64 [ %147, %146 ], [ %152, %149 ] - %.promoted84 = phi i64 [ %.fr.i.i, %146 ], [ %152, %149 ] + %.promoted82 = phi i64 [ %.fr.i.i, %146 ], [ %152, %149 ] %154 = phi i64 [ %148, %146 ], [ %151, %149 ] %155 = and i64 %154, 3 %156 = icmp eq i64 %155, 0 @@ -697,7 +697,7 @@ do_range_limit.exit.i: ; preds = %149, %146 br i1 %165, label %.lr.ph.i.preheader, label %.lr.ph69.preheader .lr.ph.i.preheader: ; preds = %163 - %166 = icmp sgt i64 %.promoted84, 0 + %166 = icmp sgt i64 %.promoted82, 0 br i1 %166, label %.lr.ph, label %do_range_limit_days.exit.thread .lr.ph.i: ; preds = %.thread50.i @@ -705,7 +705,7 @@ do_range_limit.exit.i: ; preds = %149, %146 br i1 %167, label %.lr.ph, label %do_range_limit_days.exit .lr.ph: ; preds = %.lr.ph.i.preheader, %.lr.ph.i - %168 = phi i64 [ %171, %.lr.ph.i ], [ %.promoted84, %.lr.ph.i.preheader ] + %168 = phi i64 [ %171, %.lr.ph.i ], [ %.promoted82, %.lr.ph.i.preheader ] %169 = phi i64 [ %182, %.lr.ph.i ], [ %137, %.lr.ph.i.preheader ] %170 = icmp eq i64 %168, 1 %171 = add nsw i64 %168, -1 @@ -742,84 +742,82 @@ do_range_limit.exit.i: ; preds = %149, %146 br i1 %184, label %.lr.ph69.preheader, label %do_range_limit_days.exit .lr.ph69.preheader: ; preds = %163, %.lr.ph59.preheader.i - %.0.lcssa.ph.i111 = phi i32 [ 1, %.lr.ph59.preheader.i ], [ 0, %163 ] + %.0.lcssa.ph.i104 = phi i32 [ 1, %.lr.ph59.preheader.i ], [ 0, %163 ] %185 = phi i64 [ %182, %.lr.ph59.preheader.i ], [ %137, %163 ] - %.promoted82110 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.promoted84, %163 ] + %.promoted80103 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.promoted82, %163 ] %186 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %153, %163 ] - %187 = getelementptr inbounds i32, ptr %164, i64 %.promoted82110 + %187 = getelementptr inbounds i32, ptr %164, i64 %.promoted80103 %188 = load i32, ptr %187, align 4 %189 = sext i32 %188 to i64 %190 = icmp sgt i64 %185, %189 - br i1 %190, label %.lr.ph128, label %do_range_limit_days.exit.loopexit + br i1 %190, label %.lr.ph59.i, label %do_range_limit_days.exit.loopexit -.lr.ph69: ; preds = %.lr.ph128 +.lr.ph69: ; preds = %.lr.ph59.i %191 = getelementptr inbounds i32, ptr %164, i64 %198 %192 = load i32, ptr %191, align 4 %193 = sext i32 %192 to i64 %194 = icmp sgt i64 %197, %193 - br i1 %194, label %.lr.ph128, label %do_range_limit_days.exit.loopexit + br i1 %194, label %.lr.ph59.i, label %do_range_limit_days.exit.loopexit -.lr.ph128: ; preds = %.lr.ph69.preheader, %.lr.ph69 +.lr.ph59.i: ; preds = %.lr.ph69.preheader, %.lr.ph69 %195 = phi i64 [ %193, %.lr.ph69 ], [ %189, %.lr.ph69.preheader ] %196 = phi i64 [ %197, %.lr.ph69 ], [ %185, %.lr.ph69.preheader ] - %.promoted81127 = phi i64 [ %198, %.lr.ph69 ], [ %.promoted82110, %.lr.ph69.preheader ] + %.promoted79120 = phi i64 [ %198, %.lr.ph69 ], [ %.promoted80103, %.lr.ph69.preheader ] %197 = sub nsw i64 %196, %195 store i64 %197, ptr %124, align 8 - %198 = add nsw i64 %.promoted81127, 1 + %198 = add i64 %.promoted79120, 1 store i64 %198, ptr %71, align 8 - %199 = icmp sgt i64 %197, 0 - %200 = icmp slt i64 %.promoted81127, 12 - %or.cond98 = and i1 %199, %200 - br i1 %or.cond98, label %.lr.ph69, label %do_range_limit_days.exit.loopexit - -do_range_limit_days.exit.loopexit: ; preds = %.lr.ph128, %.lr.ph69, %.lr.ph69.preheader - %.ph = phi i64 [ %186, %.lr.ph69.preheader ], [ %198, %.lr.ph69 ], [ %198, %.lr.ph128 ] - %.promoted79.ph = phi i64 [ %.promoted82110, %.lr.ph69.preheader ], [ %198, %.lr.ph69 ], [ %198, %.lr.ph128 ] - %.ph121 = phi i64 [ %185, %.lr.ph69.preheader ], [ %197, %.lr.ph69 ], [ %197, %.lr.ph128 ] - %.1.lcssa.i.ph = phi i32 [ %.0.lcssa.ph.i111, %.lr.ph69.preheader ], [ 1, %.lr.ph69 ], [ 1, %.lr.ph128 ] - %201 = icmp eq i32 %.1.lcssa.i.ph, 0 + %exitcond.not = icmp eq i64 %198, 13 + br i1 %exitcond.not, label %do_range_limit_days.exit.loopexit, label %.lr.ph69 + +do_range_limit_days.exit.loopexit: ; preds = %.lr.ph69, %.lr.ph59.i, %.lr.ph69.preheader + %.ph = phi i64 [ %186, %.lr.ph69.preheader ], [ %198, %.lr.ph69 ], [ 13, %.lr.ph59.i ] + %.promoted77.ph = phi i64 [ %.promoted80103, %.lr.ph69.preheader ], [ %198, %.lr.ph69 ], [ 13, %.lr.ph59.i ] + %.ph114 = phi i64 [ %185, %.lr.ph69.preheader ], [ %197, %.lr.ph59.i ], [ %197, %.lr.ph69 ] + %.1.lcssa.i.ph = phi i32 [ %.0.lcssa.ph.i104, %.lr.ph69.preheader ], [ 1, %.lr.ph59.i ], [ 1, %.lr.ph69 ] + %199 = icmp eq i32 %.1.lcssa.i.ph, 0 br label %do_range_limit_days.exit do_range_limit_days.exit: ; preds = %.lr.ph.i, %do_range_limit_days.exit.loopexit, %.lr.ph59.preheader.i - %202 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.ph, %do_range_limit_days.exit.loopexit ], [ %171, %.lr.ph.i ] - %.promoted79 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.promoted79.ph, %do_range_limit_days.exit.loopexit ], [ 0, %.lr.ph.i ] - %203 = phi i64 [ %182, %.lr.ph59.preheader.i ], [ %.ph121, %do_range_limit_days.exit.loopexit ], [ %182, %.lr.ph.i ] - %.1.lcssa.i = phi i1 [ false, %.lr.ph59.preheader.i ], [ %201, %do_range_limit_days.exit.loopexit ], [ false, %.lr.ph.i ] + %200 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.ph, %do_range_limit_days.exit.loopexit ], [ %171, %.lr.ph.i ] + %.promoted77 = phi i64 [ %171, %.lr.ph59.preheader.i ], [ %.promoted77.ph, %do_range_limit_days.exit.loopexit ], [ 0, %.lr.ph.i ] + %201 = phi i64 [ %182, %.lr.ph59.preheader.i ], [ %.ph114, %do_range_limit_days.exit.loopexit ], [ %182, %.lr.ph.i ] + %.1.lcssa.i = phi i1 [ false, %.lr.ph59.preheader.i ], [ %199, %do_range_limit_days.exit.loopexit ], [ false, %.lr.ph.i ] br i1 %.1.lcssa.i, label %do_range_limit_days.exit.thread, label %125 do_range_limit_days.exit.thread: ; preds = %.lr.ph.i.preheader, %do_range_limit_days.exit - %204 = phi i64 [ %202, %do_range_limit_days.exit ], [ %153, %.lr.ph.i.preheader ] - %205 = icmp slt i64 %204, 1 - br i1 %205, label %206, label %213 - -206: ; preds = %do_range_limit_days.exit.thread - %207 = sub i64 0, %204 - %208 = sdiv i64 %207, 12 - %.neg24.i54 = xor i64 %208, -1 - %209 = add i64 %154, %.neg24.i54 - store i64 %209, ptr %0, align 8 - %210 = mul nsw i64 %208, 12 - %211 = add nsw i64 %204, 12 - %212 = add i64 %211, %210 - store i64 %212, ptr %71, align 8 - br label %213 - -213: ; preds = %206, %do_range_limit_days.exit.thread - %214 = phi i64 [ %209, %206 ], [ %154, %do_range_limit_days.exit.thread ] - %215 = phi i64 [ %212, %206 ], [ %204, %do_range_limit_days.exit.thread ] - %.fr.i52 = freeze i64 %215 + %202 = phi i64 [ %200, %do_range_limit_days.exit ], [ %153, %.lr.ph.i.preheader ] + %203 = icmp slt i64 %202, 1 + br i1 %203, label %204, label %211 + +204: ; preds = %do_range_limit_days.exit.thread + %205 = sub i64 0, %202 + %206 = sdiv i64 %205, 12 + %.neg24.i54 = xor i64 %206, -1 + %207 = add i64 %154, %.neg24.i54 + store i64 %207, ptr %0, align 8 + %208 = mul nsw i64 %206, 12 + %209 = add nsw i64 %202, 12 + %210 = add i64 %209, %208 + store i64 %210, ptr %71, align 8 + br label %211 + +211: ; preds = %204, %do_range_limit_days.exit.thread + %212 = phi i64 [ %207, %204 ], [ %154, %do_range_limit_days.exit.thread ] + %213 = phi i64 [ %210, %204 ], [ %202, %do_range_limit_days.exit.thread ] + %.fr.i52 = freeze i64 %213 %.not.i51 = icmp slt i64 %.fr.i52, 13 - br i1 %.not.i51, label %do_range_limit.exit55, label %216 - -216: ; preds = %213 - %217 = udiv i64 %.fr.i52, 12 - %218 = add nsw i64 %214, %217 - store i64 %218, ptr %0, align 8 - %219 = urem i64 %.fr.i52, 12 - store i64 %219, ptr %71, align 8 + br i1 %.not.i51, label %do_range_limit.exit55, label %214 + +214: ; preds = %211 + %215 = udiv i64 %.fr.i52, 12 + %216 = add nsw i64 %212, %215 + store i64 %216, ptr %0, align 8 + %217 = urem i64 %.fr.i52, 12 + store i64 %217, ptr %71, align 8 br label %do_range_limit.exit55 -do_range_limit.exit55: ; preds = %213, %216 +do_range_limit.exit55: ; preds = %211, %214 ret void } diff --git a/bench/proj/optimized/coordinateoperationfactory.cpp.ll b/bench/proj/optimized/coordinateoperationfactory.cpp.ll index b20a169bc22..a19936db57e 100644 --- a/bench/proj/optimized/coordinateoperationfactory.cpp.ll +++ b/bench/proj/optimized/coordinateoperationfactory.cpp.ll @@ -43991,12 +43991,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1600: ; preds = %1355, %1361 - %.merged400 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] + %.merged399 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #28 br label %1517 1517: ; preds = %.loopexit1600, %1235, %1032, %825, %816, %814 - %.merged399 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged400, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] + %.merged398 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged399, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #28 br label %4900 @@ -45598,7 +45598,7 @@ _ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit832: ; p br i1 %2192, label %.critedge408, label %2312 .loopexit1598: ; preds = %2182, %1977, %1968, %1966 - %.merged402 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] + %.merged392 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #28 br label %2394 @@ -46000,7 +46000,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 2394: ; preds = %.loopexit1598, %1965, %1959 - %.merged401 = phi { ptr, i32 } [ %.merged402, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] + %.merged391 = phi { ptr, i32 } [ %.merged392, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #28 br label %4900 @@ -47768,17 +47768,17 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1596: ; preds = %3092, %.loopexit1597, %.loopexit.split-lp, %3081, %3080 - %.merged395 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] + %.merged402 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14TransformationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #28 br label %3215 3215: ; preds = %.loopexit1596, %3074 - %.merged394 = phi { ptr, i32 } [ %.merged395, %.loopexit1596 ], [ %3075, %3074 ] + %.merged401 = phi { ptr, i32 } [ %.merged402, %.loopexit1596 ], [ %3075, %3074 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #28 br label %3216 3216: ; preds = %3215, %3073, %2705, %2694, %2692 - %.merged393 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged394, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] + %.merged400 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged401, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #28 br label %4900 @@ -48638,7 +48638,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1143 .loopexit1586: ; preds = %3550, %3556 - %.merged390 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] + %.merged397 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #28 br label %3661 @@ -48773,7 +48773,7 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 3661: ; preds = %3534, %.loopexit1586, %3540, %3292 - %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] + %.merged396 = phi { ptr, i32 } [ %.merged397, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #28 br label %4900 @@ -49568,12 +49568,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1592: ; preds = %3892, %3881 - %.merged392 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] + %.merged390 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #28 br label %3987 3987: ; preds = %.loopexit1592, %3880, %3874 - %.merged391 = phi { ptr, i32 } [ %.merged392, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] + %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #28 br label %4900 @@ -50305,7 +50305,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br label %.critedge414 .loopexit1588: ; preds = %4306, %4296, %4287 - %.merged397 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] + %.merged394 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation10ConversionEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #28 br label %4617 @@ -51050,12 +51050,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1590: ; preds = %4522, %4511 - %.merged398 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] + %.merged395 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #28 br label %4617 4617: ; preds = %4074, %.loopexit1590, %4510, %.loopexit1588, %4286, %4076, %4072 - %.merged396 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged397, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged398, %.loopexit1590 ], [ %.pn364, %4510 ] + %.merged393 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged394, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged395, %.loopexit1590 ], [ %.pn364, %4510 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %4900 @@ -51700,7 +51700,7 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1464: ; preds = %_ZN br label %4900 4900: ; preds = %3235, %2690, %1952, %812, %4899, %4617, %4071, %3987, %3873, %3661, %3216, %2394, %1958, %1517, %480, %471 - %.merged388 = phi { ptr, i32 } [ %.merged389, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged396, %4617 ], [ %.pn362, %4071 ], [ %.merged391, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged399, %1517 ], [ %.merged401, %2394 ], [ %.pn331, %1958 ], [ %.merged393, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] + %.merged388 = phi { ptr, i32 } [ %.merged396, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged393, %4617 ], [ %.pn362, %4071 ], [ %.merged389, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged398, %1517 ], [ %.merged391, %2394 ], [ %.pn331, %1958 ], [ %.merged400, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #28 br label %4901 @@ -56444,12 +56444,12 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordina br i1 %300, label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit.thread, label %_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev.exit394 .loopexit508: ; preds = %287, %293 - %.merged136 = phi { ptr, i32 } [ %294, %293 ], [ %.pn133, %287 ] + %.merged140 = phi { ptr, i32 } [ %294, %293 ], [ %.pn133, %287 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #28 br label %383 383: ; preds = %.loopexit508, %282, %276 - %.merged135 = phi { ptr, i32 } [ %.merged136, %.loopexit508 ], [ %.pn117, %282 ], [ %277, %276 ] + %.merged139 = phi { ptr, i32 } [ %.merged140, %.loopexit508 ], [ %.pn117, %282 ], [ %277, %276 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #28 br label %1339 @@ -58251,12 +58251,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit360 .loopexit507: ; preds = %988, %994 - %.merged140 = phi { ptr, i32 } [ %995, %994 ], [ %.pn128.pn, %988 ] + %.merged138 = phi { ptr, i32 } [ %995, %994 ], [ %.pn128.pn, %988 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #28 br label %1166 1166: ; preds = %.loopexit507, %978, %972 - %.merged139 = phi { ptr, i32 } [ %.merged140, %.loopexit507 ], [ %.pn126, %978 ], [ %973, %972 ] + %.merged137 = phi { ptr, i32 } [ %.merged138, %.loopexit507 ], [ %.pn126, %978 ], [ %973, %972 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #28 br label %1337 @@ -58655,17 +58655,17 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev.exit394: ; preds = %_ZNSt1 br label %1337 1337: ; preds = %963, %1336, %1166, %971, %965 - %.merged138 = phi { ptr, i32 } [ %.pn131, %1336 ], [ %966, %965 ], [ %.merged139, %1166 ], [ %.pn124, %971 ], [ %964, %963 ] + %.merged136 = phi { ptr, i32 } [ %.pn131, %1336 ], [ %966, %965 ], [ %.merged137, %1166 ], [ %.pn124, %971 ], [ %964, %963 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #28 br label %1338 1338: ; preds = %1337, %961 - %.merged137 = phi { ptr, i32 } [ %.merged138, %1337 ], [ %962, %961 ] + %.merged135 = phi { ptr, i32 } [ %.merged136, %1337 ], [ %962, %961 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11VerticalCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #28 br label %1339 1339: ; preds = %269, %1338, %710, %383, %275 - %.merged = phi { ptr, i32 } [ %.merged135, %383 ], [ %.merged137, %1338 ], [ %.pn119.pn.pn.pn, %710 ], [ %.pn, %275 ], [ %270, %269 ] + %.merged = phi { ptr, i32 } [ %.merged139, %383 ], [ %.merged135, %1338 ], [ %.pn119.pn.pn.pn, %710 ], [ %.pn, %275 ], [ %270, %269 ] resume { ptr, i32 } %.merged } @@ -60262,27 +60262,27 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEES9_EvT br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit .loopexit2033: ; preds = %646, %652 - %.merged516 = phi { ptr, i32 } [ %653, %652 ], [ %.pn489.pn, %646 ] + %.merged496 = phi { ptr, i32 } [ %653, %652 ], [ %.pn489.pn, %646 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #28 br label %811 811: ; preds = %.loopexit2033, %635 - %.merged515 = phi { ptr, i32 } [ %.merged516, %.loopexit2033 ], [ %636, %635 ] + %.merged495 = phi { ptr, i32 } [ %.merged496, %.loopexit2033 ], [ %636, %635 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #28 br label %812 812: ; preds = %811, %633 - %.merged514 = phi { ptr, i32 } [ %.merged515, %811 ], [ %634, %633 ] + %.merged494 = phi { ptr, i32 } [ %.merged495, %811 ], [ %634, %633 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #28 br label %813 813: ; preds = %812, %631 - %.merged513 = phi { ptr, i32 } [ %.merged514, %812 ], [ %632, %631 ] + %.merged493 = phi { ptr, i32 } [ %.merged494, %812 ], [ %632, %631 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #28 br label %814 814: ; preds = %813, %.body560, %622 - %.merged512 = phi { ptr, i32 } [ %.merged513, %813 ], [ %.pn486.pn, %.body560 ], [ %623, %622 ] + %.merged492 = phi { ptr, i32 } [ %.merged493, %813 ], [ %.pn486.pn, %.body560 ], [ %623, %622 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #28 br label %.loopexit2034 @@ -62467,27 +62467,27 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEES9_EvT br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit .loopexit2030: ; preds = %1576, %1582 - %.merged496 = phi { ptr, i32 } [ %1583, %1582 ], [ %.pn483.pn, %1576 ] + %.merged516 = phi { ptr, i32 } [ %1583, %1582 ], [ %.pn483.pn, %1576 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #28 br label %1741 1741: ; preds = %.loopexit2030, %1565 - %.merged495 = phi { ptr, i32 } [ %.merged496, %.loopexit2030 ], [ %1566, %1565 ] + %.merged515 = phi { ptr, i32 } [ %.merged516, %.loopexit2030 ], [ %1566, %1565 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #28 br label %1742 1742: ; preds = %1741, %1563 - %.merged494 = phi { ptr, i32 } [ %.merged495, %1741 ], [ %1564, %1563 ] + %.merged514 = phi { ptr, i32 } [ %.merged515, %1741 ], [ %1564, %1563 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #28 br label %1743 1743: ; preds = %1742, %1561 - %.merged493 = phi { ptr, i32 } [ %.merged494, %1742 ], [ %1562, %1561 ] + %.merged513 = phi { ptr, i32 } [ %.merged514, %1742 ], [ %1562, %1561 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #28 br label %1744 1744: ; preds = %1743, %.body719, %1552 - %.merged492 = phi { ptr, i32 } [ %.merged493, %1743 ], [ %.pn480.pn, %.body719 ], [ %1553, %1552 ] + %.merged512 = phi { ptr, i32 } [ %.merged513, %1743 ], [ %.pn480.pn, %.body719 ], [ %1553, %1552 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #28 br label %.loopexit2034 @@ -64823,7 +64823,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1997, label %._crit_edge2102, label %.lr.ph2101 .loopexit2017: ; preds = %2721, %.loopexit2018, %.loopexit.split-lp2019 - %.merged511 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] + %.merged504 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #28 br label %2799 @@ -64906,7 +64906,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1981, label %._crit_edge2107, label %2399 2799: ; preds = %.loopexit2023, %.loopexit.split-lp2024, %.loopexit2017 - %.merged510 = phi { ptr, i32 } [ %.merged511, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] + %.merged503 = phi { ptr, i32 } [ %.merged504, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #28 br label %2965 @@ -65291,22 +65291,22 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordina br i1 %2803, label %.critedge530, label %3041 2965: ; preds = %2799, %2674 - %.merged509 = phi { ptr, i32 } [ %.merged510, %2799 ], [ %2675, %2674 ] + %.merged502 = phi { ptr, i32 } [ %.merged503, %2799 ], [ %2675, %2674 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #28 br label %2966 2966: ; preds = %2965, %2673, %2667 - %.merged508 = phi { ptr, i32 } [ %.merged509, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] + %.merged501 = phi { ptr, i32 } [ %.merged502, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #28 br label %2967 2967: ; preds = %2966, %2666, %2648 - %.merged507 = phi { ptr, i32 } [ %.merged508, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] + %.merged500 = phi { ptr, i32 } [ %.merged501, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #28 br label %2968 2968: ; preds = %2967, %2646 - %.merged506 = phi { ptr, i32 } [ %.merged507, %2967 ], [ %2647, %2646 ] + %.merged499 = phi { ptr, i32 } [ %.merged500, %2967 ], [ %2647, %2646 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #28 br label %3113 @@ -65606,12 +65606,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit 3113: ; preds = %2628, %2968, %.loopexit2028, %2616 - %.merged505 = phi { ptr, i32 } [ %.merged506, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] + %.merged498 = phi { ptr, i32 } [ %.merged499, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #28 br label %3114 3114: ; preds = %3113, %2614 - %.merged504 = phi { ptr, i32 } [ %.merged505, %3113 ], [ %2615, %2614 ] + %.merged497 = phi { ptr, i32 } [ %.merged498, %3113 ], [ %2615, %2614 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #28 br label %.loopexit2034 @@ -71497,12 +71497,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1470 .body1422: ; preds = %5543, %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %5448, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690, %4717, %4634 - %.merged503 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] + %.merged511 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] call void @_ZNSt3mapIPN5osgeo4proj9operation19CoordinateOperationESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EESC_IS4_ESaISt4pairIKS4_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %188) #28 br label %.body1294 .body1294: ; preds = %4339, %4331, %.body1422, %4629, %4455, %4341 - %.merged502 = phi { ptr, i32 } [ %.merged503, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] + %.merged510 = phi { ptr, i32 } [ %.merged511, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #28 @@ -74088,28 +74088,28 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit1579 .body1291: ; preds = %.body1510, %.body1294, %6514, %4060, %4312 - %.merged500 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged502, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] + %.merged508 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged510, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #28 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairISt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaISH_EESJ_ESt4lessIS5_ESaIS6_IKS5_SK_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %175) #28 br label %6712 6712: ; preds = %.body1291, %3968, %3549 - %.merged499 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged500, %.body1291 ], [ %.pn458.pn, %3968 ] + %.merged507 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged508, %.body1291 ], [ %.pn458.pn, %3968 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #28 br label %6713 6713: ; preds = %6712, %3338 - %.merged498 = phi { ptr, i32 } [ %.merged499, %6712 ], [ %3339, %3338 ] + %.merged506 = phi { ptr, i32 } [ %.merged507, %6712 ], [ %3339, %3338 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #28 br label %6714 6714: ; preds = %6713, %3336 - %.merged497 = phi { ptr, i32 } [ %.merged498, %6713 ], [ %3337, %3336 ] + %.merged505 = phi { ptr, i32 } [ %.merged506, %6713 ], [ %3337, %3336 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #28 br label %.loopexit2034 .loopexit2034: ; preds = %618, %1551, %.thread1899, %6714, %3240, %3114, %1744, %1072, %814, %233 - %.merged = phi { ptr, i32 } [ %.merged512, %814 ], [ %.merged492, %1744 ], [ %1546, %1551 ], [ %.merged504, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged497, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] + %.merged = phi { ptr, i32 } [ %.merged492, %814 ], [ %.merged512, %1744 ], [ %1546, %1551 ], [ %.merged497, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged505, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #28 resume { ptr, i32 } %.merged @@ -75265,22 +75265,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %579, label %.critedge477, label %622 .loopexit.split-lp1226: ; preds = %568, %.loopexit1225, %.loopexit.split-lp1226.loopexit.split-lp, %.loopexit.split-lp1226.loopexit - %.merged462 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] + %.merged475 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #28 br label %580 580: ; preds = %.loopexit.split-lp1226, %557 - %.merged461 = phi { ptr, i32 } [ %.merged462, %.loopexit.split-lp1226 ], [ %558, %557 ] + %.merged474 = phi { ptr, i32 } [ %.merged475, %.loopexit.split-lp1226 ], [ %558, %557 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #28 br label %581 581: ; preds = %580, %555 - %.merged460 = phi { ptr, i32 } [ %.merged461, %580 ], [ %556, %555 ] + %.merged473 = phi { ptr, i32 } [ %.merged474, %580 ], [ %556, %555 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #28 br label %582 582: ; preds = %581, %553 - %.merged459 = phi { ptr, i32 } [ %.merged460, %581 ], [ %554, %553 ] + %.merged472 = phi { ptr, i32 } [ %.merged473, %581 ], [ %554, %553 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #28 br label %623 @@ -75388,7 +75388,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointM br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1021 623: ; preds = %582, %551 - %.merged458 = phi { ptr, i32 } [ %.merged459, %582 ], [ %552, %551 ] + %.merged471 = phi { ptr, i32 } [ %.merged472, %582 ], [ %552, %551 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointMotionOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #28 br label %3745 @@ -76025,17 +76025,17 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1021 .loopexit1222: ; preds = %894, %900 - %.merged475 = phi { ptr, i32 } [ %901, %900 ], [ %.pn453.pn, %894 ] + %.merged470 = phi { ptr, i32 } [ %901, %900 ], [ %.pn453.pn, %894 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #28 br label %903 903: ; preds = %.loopexit1222, %883 - %.merged474 = phi { ptr, i32 } [ %.merged475, %.loopexit1222 ], [ %884, %883 ] + %.merged469 = phi { ptr, i32 } [ %.merged470, %.loopexit1222 ], [ %884, %883 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #28 br label %904 904: ; preds = %903, %881 - %.merged473 = phi { ptr, i32 } [ %.merged474, %903 ], [ %882, %881 ] + %.merged468 = phi { ptr, i32 } [ %.merged469, %903 ], [ %882, %881 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #28 br label %3745 @@ -77704,7 +77704,7 @@ _ZN5osgeo4proj9operationL12getStepCountERKN7dropbox6oxygen2nnISt10shared_ptrINS1 br label %1744 .loopexit1219: ; preds = %.critedge492, %.loopexit1214, %.loopexit.split-lp1215 - %.merged468 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] + %.merged463 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #28 br label %1829 @@ -77898,22 +77898,22 @@ _ZN5osgeo4proj4util8optionalINS0_6common9DataEpochEEC2Ev.exit711: ; preds = %_ZN br i1 %1828, label %.critedge479, label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1004 1829: ; preds = %1822, %1821, %1783, %1782, %.loopexit1219, %1389 - %.merged467 = phi { ptr, i32 } [ %.merged468, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] + %.merged462 = phi { ptr, i32 } [ %.merged463, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #28 br label %1830 1830: ; preds = %1829, %1387 - %.merged466 = phi { ptr, i32 } [ %.merged467, %1829 ], [ %1388, %1387 ] + %.merged461 = phi { ptr, i32 } [ %.merged462, %1829 ], [ %1388, %1387 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #28 br label %1831 1831: ; preds = %1830, %1385 - %.merged465 = phi { ptr, i32 } [ %.merged466, %1830 ], [ %1386, %1385 ] + %.merged460 = phi { ptr, i32 } [ %.merged461, %1830 ], [ %1386, %1385 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #28 br label %1832 1832: ; preds = %1383, %1831, %1381 - %.merged464 = phi { ptr, i32 } [ %.merged465, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] + %.merged459 = phi { ptr, i32 } [ %.merged460, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #28 br label %3744 @@ -81660,22 +81660,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev.exit br i1 %.not1197, label %._crit_edge1456, label %1878 .body872: ; preds = %2731, %.loopexit, %.loopexit.split-lp, %2778, %.body895 - %.merged472 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] + %.merged467 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #28 br label %3473 3473: ; preds = %.body872, %2721 - %.merged471 = phi { ptr, i32 } [ %.merged472, %.body872 ], [ %.pn434.pn, %2721 ] + %.merged466 = phi { ptr, i32 } [ %.merged467, %.body872 ], [ %.pn434.pn, %2721 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %.loopexit1212 .loopexit1212: ; preds = %2498, %2378, %2103, %3473, %2713, %1995 - %.merged470 = phi { ptr, i32 } [ %.merged471, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] + %.merged465 = phi { ptr, i32 } [ %.merged466, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #28 br label %3474 3474: ; preds = %.loopexit1212, %1918 - %.merged469 = phi { ptr, i32 } [ %.merged470, %.loopexit1212 ], [ %1919, %1918 ] + %.merged464 = phi { ptr, i32 } [ %.merged465, %.loopexit1212 ], [ %1919, %1918 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #28 br label %3744 @@ -82305,12 +82305,12 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1042: ; preds = %_ZN ret void 3744: ; preds = %1294, %1265, %3593, %3549, %3474, %1832, %1379, %1300, %1271, %1223, %1197 - %.merged463 = phi { ptr, i32 } [ %.merged464, %1832 ], [ %.merged469, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] + %.merged458 = phi { ptr, i32 } [ %.merged459, %1832 ], [ %.merged464, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #28 br label %3745 3745: ; preds = %878, %547, %3744, %904, %879, %623, %549, %545 - %.merged457 = phi { ptr, i32 } [ %.merged473, %904 ], [ %880, %879 ], [ %.merged463, %3744 ], [ %.pn403, %878 ], [ %.merged458, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] + %.merged457 = phi { ptr, i32 } [ %.merged468, %904 ], [ %880, %879 ], [ %.merged458, %3744 ], [ %.pn403, %878 ], [ %.merged471, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #28 br label %3746 diff --git a/bench/proj/optimized/factory.cpp.ll b/bench/proj/optimized/factory.cpp.ll index 7708feb7ebd..46091eddf88 100644 --- a/bench/proj/optimized/factory.cpp.ll +++ b/bench/proj/optimized/factory.cpp.ll @@ -76810,7 +76810,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS to label %2741 unwind label %5255 2741: ; preds = %2740, %262, %264, %2727 - %.merged617 = phi { ptr, i32 } [ %.pn6081716, %264 ], [ %263, %262 ], [ %.pn606, %2740 ], [ %.pn597.pn.pn.pn.pn.pn.pn.pn, %2727 ] + %.merged615 = phi { ptr, i32 } [ %.pn6081716, %264 ], [ %263, %262 ], [ %.pn606, %2740 ], [ %.pn597.pn.pn.pn.pn.pn.pn.pn, %2727 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #30 br label %.body @@ -79133,7 +79133,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS to label %3761 unwind label %5255 3761: ; preds = %3760, %2763, %2765, %3747 - %.merged614 = phi { ptr, i32 } [ %.pn5801720, %2765 ], [ %2764, %2763 ], [ %.pn578, %3760 ], [ %.pn571.pn.pn.pn.pn.pn, %3747 ] + %.merged617 = phi { ptr, i32 } [ %.pn5801720, %2765 ], [ %2764, %2763 ], [ %.pn578, %3760 ], [ %.pn571.pn.pn.pn.pn.pn, %3747 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #30 br label %.body @@ -81053,12 +81053,12 @@ _ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_E to label %4572 unwind label %5255 4572: ; preds = %4571, %3829, %3831, %4558 - %.merged616 = phi { ptr, i32 } [ %.pn5591726, %3831 ], [ %3830, %3829 ], [ %.pn557, %4571 ], [ %.pn550.pn.pn.pn.pn.pn, %4558 ] + %.merged614 = phi { ptr, i32 } [ %.pn5591726, %3831 ], [ %3830, %3829 ], [ %.pn557, %4571 ], [ %.pn550.pn.pn.pn.pn.pn, %4558 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #30 br label %4573 4573: ; preds = %.loopexit1742, %.loopexit.split-lp1743, %4572, %3826 - %.merged615 = phi { ptr, i32 } [ %.merged616, %4572 ], [ %3827, %3826 ], [ %lpad.loopexit1744, %.loopexit1742 ], [ %lpad.loopexit.split-lp1745, %.loopexit.split-lp1743 ] + %.merged613 = phi { ptr, i32 } [ %.merged614, %4572 ], [ %3827, %3826 ], [ %lpad.loopexit1744, %.loopexit1742 ], [ %lpad.loopexit.split-lp1745, %.loopexit.split-lp1743 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %133) #30 br label %.body @@ -82718,7 +82718,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS br label %.body1557 .body1557: ; preds = %4606, %4596, %4598, %5243 - %.merged613 = phi { ptr, i32 } [ %.pn5381732, %4598 ], [ %4597, %4596 ], [ %5245, %5243 ], [ %.pn.i1556, %4606 ] + %.merged616 = phi { ptr, i32 } [ %.pn5381732, %4598 ], [ %4597, %4596 ], [ %5245, %5243 ], [ %.pn.i1556, %4606 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %165) #30 br label %.body @@ -82762,7 +82762,7 @@ _ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_E ret void .body: ; preds = %5252, %193, %2752, %4585, %203, %251, %5254, %.body1557, %4573, %3761, %2741, %225 - %.merged = phi { ptr, i32 } [ %.pn610.pn, %225 ], [ %.merged617, %2741 ], [ %.merged614, %3761 ], [ %.merged615, %4573 ], [ %.merged613, %.body1557 ], [ %.pn1736, %5254 ], [ %5253, %5252 ], [ %.pn.i, %193 ], [ %.pn.i622, %251 ], [ %.pn.i1160, %2752 ], [ %204, %203 ], [ %.pn.i1552, %4585 ] + %.merged = phi { ptr, i32 } [ %.pn610.pn, %225 ], [ %.merged615, %2741 ], [ %.merged617, %3761 ], [ %.merged613, %4573 ], [ %.merged616, %.body1557 ], [ %.pn1736, %5254 ], [ %5253, %5252 ], [ %.pn.i, %193 ], [ %.pn.i622, %251 ], [ %.pn.i1160, %2752 ], [ %204, %203 ], [ %.pn.i1552, %4585 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #30 resume { ptr, i32 } %.merged diff --git a/bench/proj/optimized/io.cpp.ll b/bench/proj/optimized/io.cpp.ll index c6aa1a711fa..9c4c4425031 100644 --- a/bench/proj/optimized/io.cpp.ll +++ b/bench/proj/optimized/io.cpp.ll @@ -109993,12 +109993,12 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEC2ENS0_30i_promise_i to label %282 unwind label %2042 282: ; preds = %281, %244, %257, %233 - %.merged531 = phi { ptr, i32 } [ %.pn407.pn744, %281 ], [ %258, %257 ], [ %.pn405, %244 ], [ %.pn, %233 ] + %.merged534 = phi { ptr, i32 } [ %.pn407.pn744, %281 ], [ %258, %257 ], [ %.pn405, %244 ], [ %.pn, %233 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #39 br label %283 283: ; preds = %282, %227 - %.merged530 = phi { ptr, i32 } [ %.merged531, %282 ], [ %228, %227 ] + %.merged533 = phi { ptr, i32 } [ %.merged534, %282 ], [ %228, %227 ] call void @_ZN5osgeo4proj4util15BaseObjectNNPtrD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #39 br label %286 @@ -110023,7 +110023,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEC2ENS0_30i_promise_i br label %_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev.exit582 286: ; preds = %.loopexit859, %.loopexit.split-lp860, %283 - %.merged529 = phi { ptr, i32 } [ %.merged530, %283 ], [ %lpad.loopexit861, %.loopexit859 ], [ %lpad.loopexit.split-lp862, %.loopexit.split-lp860 ] + %.merged532 = phi { ptr, i32 } [ %.merged533, %283 ], [ %lpad.loopexit861, %.loopexit859 ], [ %lpad.loopexit.split-lp862, %.loopexit.split-lp860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #39 br label %2041 @@ -110351,7 +110351,7 @@ _ZN5osgeo4proj2io10JSONParserD2Ev.exit: ; preds = %386, %404, %417, %_ br label %428 428: ; preds = %385, %426, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 - %.merged532 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] + %.merged529 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] call void @_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #39 br label %2041 @@ -114521,7 +114521,7 @@ _ZN5osgeo4proj4util15BaseObjectNNPtrC2INS0_3crs11CompoundCRSEEEON7dropbox6oxygen br label %2039 _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: ; preds = %2000, %1997, %.thread805, %.thread809, %1993, %1942 - %.merged534 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] + %.merged531 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #39 call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #39 br label %2040 @@ -114556,7 +114556,7 @@ _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: br label %_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev.exit582 2040: ; preds = %1737, %1777, %1739, %2037, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721, %1906, %1826, %1792, %1741, %1709, %1616, %1609, %983, %976, %847, %610, %608 - %.merged533 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged534, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] + %.merged530 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged531, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #39 br label %2041 @@ -114564,7 +114564,7 @@ _ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_trai ret void 2041: ; preds = %2040, %594, %576, %545, %460, %453, %428, %286, %186 - %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged533, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged532, %428 ], [ %.merged529, %286 ] + %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged530, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged529, %428 ], [ %.merged532, %286 ] resume { ptr, i32 } %.merged 2042: ; preds = %844, %834, %385, %281, %244 diff --git a/bench/pybind11/optimized/test_eigen_matrix.cpp.ll b/bench/pybind11/optimized/test_eigen_matrix.cpp.ll index 8d2d2d2ee79..87c5d2ab9bb 100644 --- a/bench/pybind11/optimized/test_eigen_matrix.cpp.ll +++ b/bench/pybind11/optimized/test_eigen_matrix.cpp.ll @@ -53024,7 +53024,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %32, %24, %29 %53 = tail call ptr @__cxa_allocate_exception(i64 8) #37 store ptr getelementptr inbounds (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %53, align 8 invoke void @__cxa_throw(ptr nonnull %53, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont unwind label %210 + to label %.cont unwind label %207 .cont: ; preds = %.invoke unreachable @@ -53106,7 +53106,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %32, %24, %29 88: ; preds = %85 %89 = mul nsw i64 %.0240400.us, %3 - %90 = getelementptr double, ptr %206, i64 %89 + %90 = getelementptr double, ptr %203, i64 %89 store ptr %90, ptr %13, align 8 store i64 %3, ptr %81, align 8 invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %.sroa.speculated324.us, i64 noundef %.sroa.speculated.us, i64 noundef 0, i64 noundef 0) @@ -53134,7 +53134,7 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %32, %24, %29 br i1 %97, label %.lr.ph.us407, label %._crit_edge .lr.ph389.us.us: ; preds = %.lr.ph395.us, %._crit_edge390.us.us - %.0243393.us.us = phi i64 [ %204, %._crit_edge390.us.us ], [ 0, %.lr.ph395.us ] + %.0243393.us.us = phi i64 [ %201, %._crit_edge390.us.us ], [ 0, %.lr.ph395.us ] %98 = sub nsw i64 %1, %.0243393.us.us %.sroa.speculated319.us.us = call i64 @llvm.smin.i64(i64 %.sroa.speculated329, i64 %98) %99 = add nsw i64 %.sroa.speculated319.us.us, %.0243393.us.us @@ -53162,100 +53162,103 @@ _ZN5Eigen8internal14aligned_mallocEm.exit: ; preds = %32, %24, %29 br i1 %110, label %.lr.ph.us.us, label %._crit_edge.us.us ._crit_edge.us.us: ; preds = %._crit_edge380.us.us.us, %108 - %112 = sub nsw i64 %109, %.sroa.speculated313.us.us %gep.us.us = getelementptr double, ptr %invariant.gep.us.us, i64 %111 call void asm sideeffect "#EIGEN PRODUCT PACK RHS COLMAJOR", "~{dirflag},~{fpsr},~{flags}"() #37, !srcloc !1902 br i1 %106, label %.lr.ph127.i.us.us, label %.preheader.i.us.us .lr.ph127.i.us.us: ; preds = %._crit_edge.us.us - %113 = shl i64 %.0244386.us.us, 2 + %112 = shl i64 %.0244386.us.us, 2 %.neg.us.us = add nsw i64 %.0244.neg387.us.us, %.sroa.speculated324.us - %114 = sub i64 %.neg.us.us, %.sroa.speculated313.us.us - %115 = shl i64 %114, 2 - br i1 %110, label %.lr.ph.us.i.us.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us - -.lr.ph.us.i.us.us: ; preds = %.lr.ph127.i.us.us, %._crit_edge.us.i.us.us - %.0100125.us.i.us.us = phi i64 [ %144, %._crit_edge.us.i.us.us ], [ 0, %.lr.ph127.i.us.us ] - %.0101124.us.i.us.us = phi i64 [ %143, %._crit_edge.us.i.us.us ], [ 0, %.lr.ph127.i.us.us ] - %116 = add nsw i64 %.0101124.us.i.us.us, %113 - %117 = mul nsw i64 %.0100125.us.i.us.us, %6 - %118 = getelementptr inbounds double, ptr %gep.us.us, i64 %117 - %119 = or disjoint i64 %.0100125.us.i.us.us, 1 - %120 = mul nsw i64 %119, %6 - %121 = getelementptr inbounds double, ptr %gep.us.us, i64 %120 - %122 = or disjoint i64 %.0100125.us.i.us.us, 2 - %123 = mul nsw i64 %122, %6 - %124 = getelementptr inbounds double, ptr %gep.us.us, i64 %123 - %125 = or disjoint i64 %.0100125.us.i.us.us, 3 - %126 = mul nsw i64 %125, %6 - %127 = getelementptr inbounds double, ptr %gep.us.us, i64 %126 - br label %128 + %113 = sub i64 %.neg.us.us, %.sroa.speculated313.us.us + %114 = shl i64 %113, 2 + br label %.lr.ph.us.i.us.us + +.lr.ph.us.i.us.us: ; preds = %._crit_edge.us.i.us.us, %.lr.ph127.i.us.us + %.0100125.us.i.us.us = phi i64 [ %143, %._crit_edge.us.i.us.us ], [ 0, %.lr.ph127.i.us.us ] + %.0101124.us.i.us.us = phi i64 [ %142, %._crit_edge.us.i.us.us ], [ 0, %.lr.ph127.i.us.us ] + %115 = add nsw i64 %.0101124.us.i.us.us, %112 + %116 = mul nsw i64 %.0100125.us.i.us.us, %6 + %117 = getelementptr inbounds double, ptr %gep.us.us, i64 %116 + %118 = or disjoint i64 %.0100125.us.i.us.us, 1 + %119 = mul nsw i64 %118, %6 + %120 = getelementptr inbounds double, ptr %gep.us.us, i64 %119 + %121 = or disjoint i64 %.0100125.us.i.us.us, 2 + %122 = mul nsw i64 %121, %6 + %123 = getelementptr inbounds double, ptr %gep.us.us, i64 %122 + %124 = or disjoint i64 %.0100125.us.i.us.us, 3 + %125 = mul nsw i64 %124, %6 + %126 = getelementptr inbounds double, ptr %gep.us.us, i64 %125 + br label %127 -128: ; preds = %128, %.lr.ph.us.i.us.us - %.099123.us.i.us.us = phi i64 [ 0, %.lr.ph.us.i.us.us ], [ %142, %128 ] - %.1122.us.i.us.us = phi i64 [ %116, %.lr.ph.us.i.us.us ], [ %141, %128 ] - %129 = getelementptr inbounds double, ptr %118, i64 %.099123.us.i.us.us - %130 = load double, ptr %129, align 8 - %131 = getelementptr inbounds double, ptr %102, i64 %.1122.us.i.us.us - store double %130, ptr %131, align 8 - %132 = getelementptr inbounds double, ptr %121, i64 %.099123.us.i.us.us - %133 = load double, ptr %132, align 8 - %134 = getelementptr i8, ptr %131, i64 8 - store double %133, ptr %134, align 8 - %135 = getelementptr inbounds double, ptr %124, i64 %.099123.us.i.us.us - %136 = load double, ptr %135, align 8 - %137 = getelementptr i8, ptr %131, i64 16 - store double %136, ptr %137, align 8 - %138 = getelementptr inbounds double, ptr %127, i64 %.099123.us.i.us.us - %139 = load double, ptr %138, align 8 - %140 = getelementptr i8, ptr %131, i64 24 - store double %139, ptr %140, align 8 - %141 = add nsw i64 %.1122.us.i.us.us, 4 - %142 = add nuw nsw i64 %.099123.us.i.us.us, 1 - %exitcond.not.i.us.us = icmp eq i64 %142, %.sroa.speculated313.us.us - br i1 %exitcond.not.i.us.us, label %._crit_edge.us.i.us.us, label %128, !llvm.loop !1903 - -._crit_edge.us.i.us.us: ; preds = %128 - %143 = add nsw i64 %141, %115 - %144 = add nuw nsw i64 %.0100125.us.i.us.us, 4 - %145 = icmp slt i64 %144, %105 - br i1 %145, label %.lr.ph.us.i.us.us, label %.preheader.i.us.us, !llvm.loop !1904 +127: ; preds = %127, %.lr.ph.us.i.us.us + %.099123.us.i.us.us = phi i64 [ 0, %.lr.ph.us.i.us.us ], [ %141, %127 ] + %.1122.us.i.us.us = phi i64 [ %115, %.lr.ph.us.i.us.us ], [ %140, %127 ] + %128 = getelementptr inbounds double, ptr %117, i64 %.099123.us.i.us.us + %129 = load double, ptr %128, align 8 + %130 = getelementptr inbounds double, ptr %102, i64 %.1122.us.i.us.us + store double %129, ptr %130, align 8 + %131 = getelementptr inbounds double, ptr %120, i64 %.099123.us.i.us.us + %132 = load double, ptr %131, align 8 + %133 = getelementptr i8, ptr %130, i64 8 + store double %132, ptr %133, align 8 + %134 = getelementptr inbounds double, ptr %123, i64 %.099123.us.i.us.us + %135 = load double, ptr %134, align 8 + %136 = getelementptr i8, ptr %130, i64 16 + store double %135, ptr %136, align 8 + %137 = getelementptr inbounds double, ptr %126, i64 %.099123.us.i.us.us + %138 = load double, ptr %137, align 8 + %139 = getelementptr i8, ptr %130, i64 24 + store double %138, ptr %139, align 8 + %140 = add nsw i64 %.1122.us.i.us.us, 4 + %141 = add nuw nsw i64 %.099123.us.i.us.us, 1 + %exitcond.not.i.us.us = icmp eq i64 %141, %.sroa.speculated313.us.us + br i1 %exitcond.not.i.us.us, label %._crit_edge.us.i.us.us, label %127, !llvm.loop !1903 + +._crit_edge.us.i.us.us: ; preds = %127 + %142 = add nsw i64 %140, %114 + %143 = add nuw nsw i64 %.0100125.us.i.us.us, 4 + %144 = icmp slt i64 %143, %105 + br i1 %144, label %.lr.ph.us.i.us.us, label %.preheader.i.us.us, !llvm.loop !1904 .preheader.i.us.us: ; preds = %._crit_edge.us.i.us.us, %._crit_edge.us.us.thread, %._crit_edge.us.us - %146 = phi i64 [ %112, %._crit_edge.us.us ], [ %173, %._crit_edge.us.us.thread ], [ %112, %._crit_edge.us.i.us.us ] - %.0101.lcssa.i.us.us = phi i64 [ 0, %._crit_edge.us.us ], [ 0, %._crit_edge.us.us.thread ], [ %143, %._crit_edge.us.i.us.us ] - %or.cond = and i1 %107, %110 - br i1 %or.cond, label %.lr.ph.us135.i.preheader.us.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us - -.lr.ph.us135.i.us.us: ; preds = %.lr.ph.us135.i.preheader.us.us, %._crit_edge.us136.i.us.us - %.098132.us.i.us.us = phi i64 [ %157, %._crit_edge.us136.i.us.us ], [ %105, %.lr.ph.us135.i.preheader.us.us ] - %.2131.us.i.us.us = phi i64 [ %156, %._crit_edge.us136.i.us.us ], [ %.0101.lcssa.i.us.us, %.lr.ph.us135.i.preheader.us.us ] - %147 = add nsw i64 %.2131.us.i.us.us, %.0244386.us.us - %148 = mul nsw i64 %.098132.us.i.us.us, %6 - %149 = getelementptr inbounds double, ptr %170, i64 %148 - br label %150 + %.0101.lcssa.i.us.us = phi i64 [ 0, %._crit_edge.us.us ], [ 0, %._crit_edge.us.us.thread ], [ %142, %._crit_edge.us.i.us.us ] + %145 = sub nsw i64 %109, %.sroa.speculated313.us.us + br i1 %107, label %.lr.ph133.i.us.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us -150: ; preds = %150, %.lr.ph.us135.i.us.us - %.0130.us.i.us.us = phi i64 [ 0, %.lr.ph.us135.i.us.us ], [ %155, %150 ] - %.3129.us.i.us.us = phi i64 [ %147, %.lr.ph.us135.i.us.us ], [ %154, %150 ] - %151 = getelementptr inbounds double, ptr %149, i64 %.0130.us.i.us.us - %152 = load double, ptr %151, align 8 - %153 = getelementptr inbounds double, ptr %102, i64 %.3129.us.i.us.us - store double %152, ptr %153, align 8 - %154 = add nsw i64 %.3129.us.i.us.us, 1 - %155 = add nuw nsw i64 %.0130.us.i.us.us, 1 - %exitcond144.not.i.us.us = icmp eq i64 %155, %.sroa.speculated313.us.us - br i1 %exitcond144.not.i.us.us, label %._crit_edge.us136.i.us.us, label %150, !llvm.loop !1905 - -._crit_edge.us136.i.us.us: ; preds = %150 - %156 = add nsw i64 %169, %154 - %157 = add nsw i64 %.098132.us.i.us.us, 1 - %exitcond145.not.i.us.us = icmp eq i64 %157, %.sroa.speculated319.us.us +.lr.ph133.i.us.us: ; preds = %.preheader.i.us.us + %.neg371.us.us = add nsw i64 %.0244.neg387.us.us, %.sroa.speculated324.us + %146 = sub i64 %.neg371.us.us, %.sroa.speculated313.us.us + %147 = getelementptr double, ptr %invariant.gep.us.us, i64 %111 + br label %.lr.ph.us135.i.us.us + +.lr.ph.us135.i.us.us: ; preds = %._crit_edge.us136.i.us.us, %.lr.ph133.i.us.us + %.098132.us.i.us.us = phi i64 [ %158, %._crit_edge.us136.i.us.us ], [ %105, %.lr.ph133.i.us.us ] + %.2131.us.i.us.us = phi i64 [ %157, %._crit_edge.us136.i.us.us ], [ %.0101.lcssa.i.us.us, %.lr.ph133.i.us.us ] + %148 = add nsw i64 %.2131.us.i.us.us, %.0244386.us.us + %149 = mul nsw i64 %.098132.us.i.us.us, %6 + %150 = getelementptr inbounds double, ptr %147, i64 %149 + br label %151 + +151: ; preds = %151, %.lr.ph.us135.i.us.us + %.0130.us.i.us.us = phi i64 [ 0, %.lr.ph.us135.i.us.us ], [ %156, %151 ] + %.3129.us.i.us.us = phi i64 [ %148, %.lr.ph.us135.i.us.us ], [ %155, %151 ] + %152 = getelementptr inbounds double, ptr %150, i64 %.0130.us.i.us.us + %153 = load double, ptr %152, align 8 + %154 = getelementptr inbounds double, ptr %102, i64 %.3129.us.i.us.us + store double %153, ptr %154, align 8 + %155 = add nsw i64 %.3129.us.i.us.us, 1 + %156 = add nuw nsw i64 %.0130.us.i.us.us, 1 + %exitcond144.not.i.us.us = icmp eq i64 %156, %.sroa.speculated313.us.us + br i1 %exitcond144.not.i.us.us, label %._crit_edge.us136.i.us.us, label %151, !llvm.loop !1905 + +._crit_edge.us136.i.us.us: ; preds = %151 + %157 = add nsw i64 %146, %155 + %158 = add nsw i64 %.098132.us.i.us.us, 1 + %exitcond145.not.i.us.us = icmp eq i64 %158, %.sroa.speculated319.us.us br i1 %exitcond145.not.i.us.us, label %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us, label %.lr.ph.us135.i.us.us, !llvm.loop !1906 -_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us: ; preds = %._crit_edge.us136.i.us.us, %.lr.ph127.i.us.us, %.preheader.i.us.us - %158 = phi i64 [ %146, %.preheader.i.us.us ], [ %112, %.lr.ph127.i.us.us ], [ %146, %._crit_edge.us136.i.us.us ] - %159 = icmp sgt i64 %158, 0 +_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us: ; preds = %._crit_edge.us136.i.us.us, %.preheader.i.us.us + %159 = icmp sgt i64 %145, 0 br i1 %159, label %160, label %166 160: ; preds = %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us @@ -53265,14 +53268,14 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL %164 = getelementptr double, ptr %163, i64 %162 store ptr %164, ptr %11, align 8 store i64 %3, ptr %79, align 8 - invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %.sroa.speculated313.us.us, i64 noundef %158, i64 noundef 0, i64 noundef 0) + invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %.sroa.speculated313.us.us, i64 noundef %145, i64 noundef 0, i64 noundef 0) to label %165 unwind label %.loopexit.split.us.split.us 165: ; preds = %160 %gep392.us.us = getelementptr double, ptr %invariant.gep.us.us, i64 %161 store ptr %gep392.us.us, ptr %12, align 8 store i64 %6, ptr %80, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %38, ptr noundef nonnull %102, i64 noundef %158, i64 noundef %.sroa.speculated313.us.us, i64 noundef %.sroa.speculated319.us.us, double noundef -1.000000e+00, i64 noundef %.sroa.speculated313.us.us, i64 noundef %.sroa.speculated324.us, i64 noundef 0, i64 noundef %.0244386.us.us) + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %38, ptr noundef nonnull %102, i64 noundef %145, i64 noundef %.sroa.speculated313.us.us, i64 noundef %.sroa.speculated319.us.us, double noundef -1.000000e+00, i64 noundef %.sroa.speculated313.us.us, i64 noundef %.sroa.speculated324.us, i64 noundef 0, i64 noundef %.0244386.us.us) to label %166 unwind label %.loopexit.split.us.split.us 166: ; preds = %165, %_ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi0ELb0ELb1EEclEPdRKS3_llll.exit.us.us @@ -53282,86 +53285,79 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL %indvars.iv.next418 = add i64 %indvars.iv417, -4 br i1 %168, label %108, label %._crit_edge390.us.us, !llvm.loop !1907 -.lr.ph.us135.i.preheader.us.us: ; preds = %.preheader.i.us.us - %.neg371.us.us = add nsw i64 %.0244.neg387.us.us, %.sroa.speculated324.us - %169 = sub i64 %.neg371.us.us, %.sroa.speculated313.us.us - %170 = getelementptr double, ptr %invariant.gep.us.us, i64 %111 - br label %.lr.ph.us135.i.us.us - .lr.ph.us.us: ; preds = %108 - %171 = getelementptr double, ptr %2, i64 %111 - %172 = getelementptr double, ptr %4, i64 %111 + %169 = getelementptr double, ptr %2, i64 %111 + %170 = getelementptr double, ptr %4, i64 %111 br i1 %100, label %.lr.ph379.us.us.us, label %._crit_edge.us.us.thread ._crit_edge.us.us.thread: ; preds = %.lr.ph.us.us - %173 = sub nsw i64 %109, %.sroa.speculated313.us.us call void asm sideeffect "#EIGEN PRODUCT PACK RHS COLMAJOR", "~{dirflag},~{fpsr},~{flags}"() #37, !srcloc !1902 br label %.preheader.i.us.us .lr.ph379.us.us.us: ; preds = %.lr.ph.us.us, %._crit_edge380.us.us.us - %.0245381.us.us.us = phi i64 [ %188, %._crit_edge380.us.us.us ], [ 0, %.lr.ph.us.us ] - %174 = add nsw i64 %.0245381.us.us.us, %111 - %175 = mul nsw i64 %174, %3 - %176 = getelementptr double, ptr %2, i64 %174 - %177 = getelementptr double, ptr %176, i64 %175 - %178 = load double, ptr %177, align 8 - %179 = fdiv double 1.000000e+00, %178 - %180 = getelementptr double, ptr %171, i64 %175 + %.0245381.us.us.us = phi i64 [ %185, %._crit_edge380.us.us.us ], [ 0, %.lr.ph.us.us ] + %171 = add nsw i64 %.0245381.us.us.us, %111 + %172 = mul nsw i64 %171, %3 + %173 = getelementptr double, ptr %2, i64 %171 + %174 = getelementptr double, ptr %173, i64 %172 + %175 = load double, ptr %174, align 8 + %176 = fdiv double 1.000000e+00, %175 + %177 = getelementptr double, ptr %169, i64 %172 %.not409 = icmp eq i64 %.0245381.us.us.us, 0 - %181 = getelementptr double, ptr %4, i64 %174 + %178 = getelementptr double, ptr %4, i64 %171 br i1 %.not409, label %.lr.ph379.split.us385.us.us, label %.lr.ph.us.us.us.us .lr.ph379.split.us385.us.us: ; preds = %.lr.ph379.us.us.us, %.lr.ph379.split.us385.us.us - %.0246377.us383.us.us = phi i64 [ %186, %.lr.ph379.split.us385.us.us ], [ %.0243393.us.us, %.lr.ph379.us.us.us ] - %182 = mul nsw i64 %.0246377.us383.us.us, %6 - %183 = getelementptr double, ptr %181, i64 %182 - %184 = load double, ptr %183, align 8 - %185 = fmul double %179, %184 - store double %185, ptr %183, align 8 - %186 = add nuw nsw i64 %.0246377.us383.us.us, 1 - %187 = icmp slt i64 %186, %99 - br i1 %187, label %.lr.ph379.split.us385.us.us, label %._crit_edge380.us.us.us, !llvm.loop !1908 + %.0246377.us383.us.us = phi i64 [ %183, %.lr.ph379.split.us385.us.us ], [ %.0243393.us.us, %.lr.ph379.us.us.us ] + %179 = mul nsw i64 %.0246377.us383.us.us, %6 + %180 = getelementptr double, ptr %178, i64 %179 + %181 = load double, ptr %180, align 8 + %182 = fmul double %176, %181 + store double %182, ptr %180, align 8 + %183 = add nuw nsw i64 %.0246377.us383.us.us, 1 + %184 = icmp slt i64 %183, %99 + br i1 %184, label %.lr.ph379.split.us385.us.us, label %._crit_edge380.us.us.us, !llvm.loop !1908 ._crit_edge380.us.us.us: ; preds = %._crit_edge.us.us.us.us, %.lr.ph379.split.us385.us.us - %188 = add nuw nsw i64 %.0245381.us.us.us, 1 - %exitcond420.not = icmp eq i64 %188, %smax + %185 = add nuw nsw i64 %.0245381.us.us.us, 1 + %exitcond420.not = icmp eq i64 %185, %smax br i1 %exitcond420.not, label %._crit_edge.us.us, label %.lr.ph379.us.us.us, !llvm.loop !1909 .lr.ph.us.us.us.us: ; preds = %.lr.ph379.us.us.us, %._crit_edge.us.us.us.us - %.0246377.us.us.us.us = phi i64 [ %202, %._crit_edge.us.us.us.us ], [ %.0243393.us.us, %.lr.ph379.us.us.us ] - %189 = mul nsw i64 %.0246377.us.us.us.us, %6 - %190 = getelementptr double, ptr %172, i64 %189 - br label %191 - -191: ; preds = %191, %.lr.ph.us.us.us.us - %.0247376.us.us.us.us = phi i64 [ 0, %.lr.ph.us.us.us.us ], [ %197, %191 ] - %.0248375.us.us.us.us = phi double [ 0.000000e+00, %.lr.ph.us.us.us.us ], [ %196, %191 ] - %192 = getelementptr inbounds double, ptr %180, i64 %.0247376.us.us.us.us - %193 = load double, ptr %192, align 8 - %194 = getelementptr inbounds double, ptr %190, i64 %.0247376.us.us.us.us - %195 = load double, ptr %194, align 8 - %196 = call double @llvm.fmuladd.f64(double %193, double %195, double %.0248375.us.us.us.us) - %197 = add nuw nsw i64 %.0247376.us.us.us.us, 1 - %exitcond.not = icmp eq i64 %197, %.0245381.us.us.us - br i1 %exitcond.not, label %._crit_edge.us.us.us.us, label %191, !llvm.loop !1910 - -._crit_edge.us.us.us.us: ; preds = %191 - %198 = getelementptr double, ptr %181, i64 %189 - %199 = load double, ptr %198, align 8 - %200 = fsub double %199, %196 - %201 = fmul double %179, %200 - store double %201, ptr %198, align 8 - %202 = add nuw nsw i64 %.0246377.us.us.us.us, 1 - %203 = icmp slt i64 %202, %99 - br i1 %203, label %.lr.ph.us.us.us.us, label %._crit_edge380.us.us.us, !llvm.loop !1908 + %.0246377.us.us.us.us = phi i64 [ %199, %._crit_edge.us.us.us.us ], [ %.0243393.us.us, %.lr.ph379.us.us.us ] + %186 = mul nsw i64 %.0246377.us.us.us.us, %6 + %187 = getelementptr double, ptr %170, i64 %186 + br label %188 + +188: ; preds = %188, %.lr.ph.us.us.us.us + %.0247376.us.us.us.us = phi i64 [ 0, %.lr.ph.us.us.us.us ], [ %194, %188 ] + %.0248375.us.us.us.us = phi double [ 0.000000e+00, %.lr.ph.us.us.us.us ], [ %193, %188 ] + %189 = getelementptr inbounds double, ptr %177, i64 %.0247376.us.us.us.us + %190 = load double, ptr %189, align 8 + %191 = getelementptr inbounds double, ptr %187, i64 %.0247376.us.us.us.us + %192 = load double, ptr %191, align 8 + %193 = call double @llvm.fmuladd.f64(double %190, double %192, double %.0248375.us.us.us.us) + %194 = add nuw nsw i64 %.0247376.us.us.us.us, 1 + %exitcond.not = icmp eq i64 %194, %.0245381.us.us.us + br i1 %exitcond.not, label %._crit_edge.us.us.us.us, label %188, !llvm.loop !1910 + +._crit_edge.us.us.us.us: ; preds = %188 + %195 = getelementptr double, ptr %178, i64 %186 + %196 = load double, ptr %195, align 8 + %197 = fsub double %196, %193 + %198 = fmul double %176, %197 + store double %198, ptr %195, align 8 + %199 = add nuw nsw i64 %.0246377.us.us.us.us, 1 + %200 = icmp slt i64 %199, %99 + br i1 %200, label %.lr.ph.us.us.us.us, label %._crit_edge380.us.us.us, !llvm.loop !1908 ._crit_edge390.us.us: ; preds = %166 - %204 = add nuw nsw i64 %.0243393.us.us, %.sroa.speculated329 - %205 = icmp slt i64 %204, %1 - br i1 %205, label %.lr.ph389.us.us, label %._crit_edge396.us, !llvm.loop !1911 + %201 = add nuw nsw i64 %.0243393.us.us, %.sroa.speculated329 + %202 = icmp slt i64 %201, %1 + br i1 %202, label %.lr.ph389.us.us, label %._crit_edge396.us, !llvm.loop !1911 .lr.ph.us407: ; preds = %._crit_edge396.us - %206 = getelementptr double, ptr %2, i64 %.0242401.us + %203 = getelementptr double, ptr %2, i64 %.0242401.us br label %85 .loopexit.split-lp.split.us: ; preds = %91, %88 @@ -53374,91 +53370,91 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4EL cleanup br label %.body -.loopexit372: ; preds = %223 - %207 = sub nsw i64 %0, %213 - %.sroa.speculated324 = call i64 @llvm.smin.i64(i64 %16, i64 %207) - %208 = add nsw i64 %213, %16 - %209 = icmp slt i64 %208, %0 - br i1 %209, label %.lr.ph, label %._crit_edge, !llvm.loop !1901 +.loopexit372: ; preds = %220 + %204 = sub nsw i64 %0, %210 + %.sroa.speculated324 = call i64 @llvm.smin.i64(i64 %16, i64 %204) + %205 = add nsw i64 %210, %16 + %206 = icmp slt i64 %205, %0 + br i1 %206, label %.lr.ph, label %._crit_edge, !llvm.loop !1901 -210: ; preds = %.invoke - %211 = landingpad { ptr, i32 } +207: ; preds = %.invoke + %208 = landingpad { ptr, i32 } cleanup br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -.loopexit.split-lp.split: ; preds = %218, %221 +.loopexit.split-lp.split: ; preds = %215, %218 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.body .body: ; preds = %.loopexit.split.us.split.us, %.loopexit.split-lp.split.us, %.loopexit.split-lp.split, %64 %eh.lpad-body = phi { ptr, i32 } [ %65, %64 ], [ %lpad.loopexit.us.us, %.loopexit.split.us.split.us ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.split ], [ %lpad.loopexit.split-lp.us, %.loopexit.split-lp.split.us ] - br i1 %57, label %212, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit + br i1 %57, label %209, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit -212: ; preds = %.body +209: ; preds = %.body call void @free(ptr noundef %55) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit .lr.ph: ; preds = %.lr.ph403.split.preheader, %.loopexit372 - %213 = phi i64 [ %208, %.loopexit372 ], [ %16, %.lr.ph403.split.preheader ] - %.sroa.speculated324455 = phi i64 [ %.sroa.speculated324, %.loopexit372 ], [ %16, %.lr.ph403.split.preheader ] - %.0242401454 = phi i64 [ %213, %.loopexit372 ], [ 0, %.lr.ph403.split.preheader ] - %214 = getelementptr double, ptr %2, i64 %.0242401454 - br label %215 - -215: ; preds = %.lr.ph, %223 - %.0240400 = phi i64 [ %213, %.lr.ph ], [ %224, %223 ] - %216 = sub nsw i64 %0, %.0240400 - %.sroa.speculated = call i64 @llvm.smin.i64(i64 %216, i64 %.sroa.speculated348) - %217 = icmp sgt i64 %.sroa.speculated, 0 - br i1 %217, label %218, label %223 + %210 = phi i64 [ %205, %.loopexit372 ], [ %16, %.lr.ph403.split.preheader ] + %.sroa.speculated324450 = phi i64 [ %.sroa.speculated324, %.loopexit372 ], [ %16, %.lr.ph403.split.preheader ] + %.0242401449 = phi i64 [ %210, %.loopexit372 ], [ 0, %.lr.ph403.split.preheader ] + %211 = getelementptr double, ptr %2, i64 %.0242401449 + br label %212 -218: ; preds = %215 - %219 = mul nsw i64 %.0240400, %3 - %220 = getelementptr double, ptr %214, i64 %219 - store ptr %220, ptr %13, align 8 +212: ; preds = %.lr.ph, %220 + %.0240400 = phi i64 [ %210, %.lr.ph ], [ %221, %220 ] + %213 = sub nsw i64 %0, %.0240400 + %.sroa.speculated = call i64 @llvm.smin.i64(i64 %213, i64 %.sroa.speculated348) + %214 = icmp sgt i64 %.sroa.speculated, 0 + br i1 %214, label %215, label %220 + +215: ; preds = %212 + %216 = mul nsw i64 %.0240400, %3 + %217 = getelementptr double, ptr %211, i64 %216 + store ptr %217, ptr %13, align 8 store i64 %3, ptr %76, align 8 - invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %.sroa.speculated324455, i64 noundef %.sroa.speculated, i64 noundef 0, i64 noundef 0) - to label %221 unwind label %.loopexit.split-lp.split + invoke void @_ZN5Eigen8internal13gemm_pack_lhsIdlNS0_22const_blas_data_mapperIdlLi1EEELi4ELi2EDv2_dLi1ELb0ELb0EEclEPdRKS3_llll(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull %38, ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %.sroa.speculated324450, i64 noundef %.sroa.speculated, i64 noundef 0, i64 noundef 0) + to label %218 unwind label %.loopexit.split-lp.split -221: ; preds = %218 - %222 = getelementptr inbounds double, ptr %4, i64 %.0240400 - store ptr %222, ptr %14, align 8 +218: ; preds = %215 + %219 = getelementptr inbounds double, ptr %4, i64 %.0240400 + store ptr %219, ptr %14, align 8 store i64 %6, ptr %77, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %38, ptr noundef nonnull %56, i64 noundef %.sroa.speculated, i64 noundef %.sroa.speculated324455, i64 noundef %1, double noundef -1.000000e+00, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) - to label %223 unwind label %.loopexit.split-lp.split + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull %38, ptr noundef nonnull %56, i64 noundef %.sroa.speculated, i64 noundef %.sroa.speculated324450, i64 noundef %1, double noundef -1.000000e+00, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) + to label %220 unwind label %.loopexit.split-lp.split -223: ; preds = %215, %221 - %224 = add nsw i64 %.0240400, %.sroa.speculated348 - %225 = icmp slt i64 %224, %0 - br i1 %225, label %215, label %.loopexit372, !llvm.loop !1900 +220: ; preds = %212, %218 + %221 = add nsw i64 %.0240400, %.sroa.speculated348 + %222 = icmp slt i64 %221, %0 + br i1 %222, label %212, label %.loopexit372, !llvm.loop !1900 ._crit_edge: ; preds = %.loopexit372, %._crit_edge396.us, %.lr.ph403.split.preheader, %.thread, %68 - br i1 %57, label %226, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306 + br i1 %57, label %223, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306 -226: ; preds = %._crit_edge +223: ; preds = %._crit_edge call void @free(ptr noundef %55) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306: ; preds = %._crit_edge, %226 - br i1 %39, label %227, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit307 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306: ; preds = %._crit_edge, %223 + br i1 %39, label %224, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit307 -227: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306 +224: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306 call void @free(ptr noundef %37) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit307 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit307: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306, %227 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit307: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit306, %224 ret void -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %212, %.body, %210 - %.pn = phi { ptr, i32 } [ %211, %210 ], [ %eh.lpad-body, %.body ], [ %eh.lpad-body, %212 ] - br i1 %39, label %228, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit308 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit: ; preds = %209, %.body, %207 + %.pn = phi { ptr, i32 } [ %208, %207 ], [ %eh.lpad-body, %.body ], [ %eh.lpad-body, %209 ] + br i1 %39, label %225, label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit308 -228: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit +225: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit call void @free(ptr noundef %37) #37 br label %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit308 -_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit308: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %228 +_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit308: ; preds = %_ZN5Eigen8internal28aligned_stack_memory_handlerIdED2Ev.exit, %225 resume { ptr, i32 } %.pn } @@ -55930,9 +55926,8 @@ _ZN5Eigen8internal13gemm_pack_rhsIdlNS0_22const_blas_data_mapperIdlLi0EEELi4ELi0 %160 = mul nsw i64 %.sroa.speculated183, %77 %161 = getelementptr inbounds double, ptr %63, i64 %160 %162 = sub nsw i64 %0, %.sroa.speculated183 - %.sroa.speculated = call i64 @llvm.smax.i64(i64 %162, i64 0) %163 = load double, ptr %9, align 8 - invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %46, ptr noundef nonnull %161, i64 noundef %122, i64 noundef %77, i64 noundef %.sroa.speculated, double noundef %163, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) + invoke void @_ZN5Eigen8internal11gebp_kernelIddlNS0_16blas_data_mapperIdlLi0ELi0ELi1EEELi4ELi4ELb0ELb0EEclERKS3_PKdS8_llldllll(ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull %46, ptr noundef nonnull %161, i64 noundef %122, i64 noundef %77, i64 noundef %162, double noundef %163, i64 noundef -1, i64 noundef -1, i64 noundef 0, i64 noundef 0) to label %118 unwind label %.loopexit.split-lp, !llvm.loop !2034 164: ; preds = %.invoke diff --git a/bench/quantlib/optimized/lmdif.ll b/bench/quantlib/optimized/lmdif.ll index 226e4c0ed03..47c22edff2d 100644 --- a/bench/quantlib/optimized/lmdif.ll +++ b/bench/quantlib/optimized/lmdif.ll @@ -594,16 +594,15 @@ L40: ; preds = %for.body18, %for.en %29 = trunc nsw i64 %28 to i32 %conv.i163 = sitofp i32 %29 to double %div.i164 = fdiv double 1.304000e+19, %conv.i163 - %cmp55.i165 = icmp sgt i64 %28, 0 - br i1 %cmp55.i165, label %for.body.i174, label %if.else45.i166 - -for.body.i174: ; preds = %L40, %for.inc.i190 - %indvars.iv.i175 = phi i64 [ %indvars.iv.next.i196, %for.inc.i190 ], [ 0, %L40 ] - %x3max.061.i176 = phi double [ %x3max.1.i195, %for.inc.i190 ], [ 0.000000e+00, %L40 ] - %x1max.060.i177 = phi double [ %x1max.1.i194, %for.inc.i190 ], [ 0.000000e+00, %L40 ] - %s3.059.i178 = phi double [ %s3.1.i193, %for.inc.i190 ], [ 0.000000e+00, %L40 ] - %s2.058.i179 = phi double [ %s2.1.i192, %for.inc.i190 ], [ 0.000000e+00, %L40 ] - %s1.057.i180 = phi double [ %s1.1.i191, %for.inc.i190 ], [ 0.000000e+00, %L40 ] + br label %for.body.i174 + +for.body.i174: ; preds = %for.inc.i190, %L40 + %indvars.iv.i175 = phi i64 [ 0, %L40 ], [ %indvars.iv.next.i196, %for.inc.i190 ] + %x3max.061.i176 = phi double [ 0.000000e+00, %L40 ], [ %x3max.1.i195, %for.inc.i190 ] + %x1max.060.i177 = phi double [ 0.000000e+00, %L40 ], [ %x1max.1.i194, %for.inc.i190 ] + %s3.059.i178 = phi double [ 0.000000e+00, %L40 ], [ %s3.1.i193, %for.inc.i190 ] + %s2.058.i179 = phi double [ 0.000000e+00, %L40 ], [ %s2.1.i192, %for.inc.i190 ] + %s1.057.i180 = phi double [ 0.000000e+00, %L40 ], [ %s1.1.i191, %for.inc.i190 ] %arrayidx.i181 = getelementptr inbounds double, ptr %arrayidx74, i64 %indvars.iv.i175 %30 = load double, ptr %arrayidx.i181, align 8, !tbaa !3 %31 = tail call double @llvm.fabs.f64(double %30) @@ -701,11 +700,9 @@ if.end43.i208: ; preds = %if.else39.i211, %if %call44.i210 = tail call double @sqrt(double noundef %temp.0.i209) #10, !tbaa !9 br label %_ZN8QuantLib7MINPACK5enormEiPd.exit233 -if.else45.i166: ; preds = %if.end30.i200, %L40 - %s3.0.lcssa7481.i167 = phi double [ %s3.1.i193, %if.end30.i200 ], [ 0.000000e+00, %L40 ] - %x3max.0.lcssa7580.i168 = phi double [ %x3max.1.i195, %if.end30.i200 ], [ 0.000000e+00, %L40 ] - %call46.i169 = tail call double @sqrt(double noundef %s3.0.lcssa7481.i167) #10, !tbaa !9 - %mul47.i170 = fmul double %x3max.0.lcssa7580.i168, %call46.i169 +if.else45.i166: ; preds = %if.end30.i200 + %call46.i169 = tail call double @sqrt(double noundef %s3.1.i193) #10, !tbaa !9 + %mul47.i170 = fmul double %x3max.1.i195, %call46.i169 br label %_ZN8QuantLib7MINPACK5enormEiPd.exit233 _ZN8QuantLib7MINPACK5enormEiPd.exit233: ; preds = %if.then26.i214, %if.end43.i208, %if.else45.i166 diff --git a/bench/recastnavigation/optimized/DetourLocalBoundary.cpp.ll b/bench/recastnavigation/optimized/DetourLocalBoundary.cpp.ll index 0d9c9841539..5d8f5a42e59 100644 --- a/bench/recastnavigation/optimized/DetourLocalBoundary.cpp.ll +++ b/bench/recastnavigation/optimized/DetourLocalBoundary.cpp.ll @@ -5,9 +5,6 @@ target triple = "x86_64-pc-linux-gnu" %"struct.dtLocalBoundary::Segment" = type { [6 x float], float } -@.str = private unnamed_addr constant [24 x i8] c"tgt+n <= MAX_LOCAL_SEGS\00", align 1 -@.str.1 = private unnamed_addr constant [154 x i8] c"generated/home/dtcxzyw/WorkSpace/Projects/compilers/llvm-opt-benchmark/bench/recastnavigation/recastnavigation/DetourCrowd/Source/DetourLocalBoundary.cpp\00", align 1 - @_ZN15dtLocalBoundaryC1Ev = unnamed_addr alias void (ptr), ptr @_ZN15dtLocalBoundaryC2Ev @_ZN15dtLocalBoundaryD1Ev = unnamed_addr alias void (ptr), ptr @_ZN15dtLocalBoundaryD2Ev @@ -50,7 +47,7 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr nocapture noundef nonnull %5 = load i32, ptr %4, align 4 %.not = icmp eq i32 %5, 0 %6 = getelementptr inbounds i8, ptr %0, i64 12 - br i1 %.not, label %44, label %7 + br i1 %.not, label %39, label %7 7: ; preds = %3 %8 = add nsw i32 %5, -1 @@ -65,7 +62,7 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr nocapture noundef nonnull .preheader: ; preds = %7 %invariant.gep = getelementptr inbounds i8, ptr %0, i64 36 %14 = icmp sgt i32 %5, 0 - br i1 %14, label %.lr.ph.preheader, label %._crit_edge + br i1 %14, label %.lr.ph.preheader, label %.loopexit .lr.ph.preheader: ; preds = %.preheader %wide.trip.count = zext nneg i32 %5 to i64 @@ -73,12 +70,12 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr nocapture noundef nonnull 15: ; preds = %7 %16 = icmp sgt i32 %5, 7 - br i1 %16, label %50, label %17 + br i1 %16, label %45, label %17 17: ; preds = %15 %18 = sext i32 %5 to i64 %19 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %18 - br label %44 + br label %39 .lr.ph: ; preds = %.lr.ph.preheader, %22 %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %22 ] @@ -86,72 +83,61 @@ define void @_ZN15dtLocalBoundary10addSegmentEfPKf(ptr nocapture noundef nonnull %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %.idx27 %20 = load float, ptr %gep, align 4 %21 = fcmp ugt float %1, %20 - br i1 %21, label %22, label %._crit_edge.loopexit.split.loop.exit + br i1 %21, label %22, label %.loopexit.split.loop.exit34 22: ; preds = %.lr.ph %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 !4 + br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !4 -._crit_edge.loopexit.split.loop.exit: ; preds = %.lr.ph +.loopexit.split.loop.exit34: ; preds = %.lr.ph %23 = trunc nuw nsw i64 %indvars.iv to i32 - br label %._crit_edge - -._crit_edge: ; preds = %22, %._crit_edge.loopexit.split.loop.exit, %.preheader - %.021.lcssa = phi i32 [ 0, %.preheader ], [ %23, %._crit_edge.loopexit.split.loop.exit ], [ %5, %22 ] - %24 = add nuw nsw i32 %.021.lcssa, 1 - %25 = sub nsw i32 %5, %.021.lcssa - %26 = sub nsw i32 7, %.021.lcssa - %27 = tail call noundef i32 @llvm.smin.i32(i32 %25, i32 %26) - %28 = tail call noundef ptr @_Z21dtAssertFailGetCustomv() - %29 = icmp eq ptr %28, null - %30 = add nsw i32 %27, %24 - %31 = icmp slt i32 %30, 9 - %or.cond = select i1 %29, i1 true, i1 %31 - br i1 %or.cond, label %33, label %32 - -32: ; preds = %._crit_edge - tail call void %28(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 71) - br label %33 - -33: ; preds = %32, %._crit_edge - %34 = icmp sgt i32 %27, 0 - br i1 %34, label %35, label %._crit_edge33 - -._crit_edge33: ; preds = %33 + br label %.loopexit + +.loopexit: ; preds = %22, %.loopexit.split.loop.exit34, %.preheader + %.021.lcssa = phi i32 [ 0, %.preheader ], [ %23, %.loopexit.split.loop.exit34 ], [ %5, %22 ] + %24 = sub nsw i32 %5, %.021.lcssa + %25 = sub nsw i32 7, %.021.lcssa + %26 = tail call noundef i32 @llvm.smin.i32(i32 %24, i32 %25) + %27 = tail call noundef ptr @_Z21dtAssertFailGetCustomv() + %28 = icmp sgt i32 %26, 0 + br i1 %28, label %29, label %._crit_edge33 + +._crit_edge33: ; preds = %.loopexit %.pre = zext nneg i32 %.021.lcssa to i64 - br label %42 - -35: ; preds = %33 - %36 = zext nneg i32 %24 to i64 - %37 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %36 - %38 = zext nneg i32 %.021.lcssa to i64 - %39 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %38 - %40 = zext nneg i32 %27 to i64 - %41 = mul nuw nsw i64 %40, 28 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %37, ptr nonnull align 4 %39, i64 %41, i1 false) - br label %42 - -42: ; preds = %._crit_edge33, %35 - %.pre-phi = phi i64 [ %.pre, %._crit_edge33 ], [ %38, %35 ] - %43 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %.pre-phi - br label %44 - -44: ; preds = %3, %17, %42 - %.0 = phi ptr [ %19, %17 ], [ %43, %42 ], [ %6, %3 ] - %45 = getelementptr inbounds i8, ptr %.0, i64 24 - store float %1, ptr %45, align 4 + br label %37 + +29: ; preds = %.loopexit + %30 = add nuw nsw i32 %.021.lcssa, 1 + %31 = zext nneg i32 %30 to i64 + %32 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %31 + %33 = zext nneg i32 %.021.lcssa to i64 + %34 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %33 + %35 = zext nneg i32 %26 to i64 + %36 = mul nuw nsw i64 %35, 28 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %32, ptr nonnull align 4 %34, i64 %36, i1 false) + br label %37 + +37: ; preds = %._crit_edge33, %29 + %.pre-phi = phi i64 [ %.pre, %._crit_edge33 ], [ %33, %29 ] + %38 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %6, i64 0, i64 %.pre-phi + br label %39 + +39: ; preds = %3, %17, %37 + %.0 = phi ptr [ %19, %17 ], [ %38, %37 ], [ %6, %3 ] + %40 = getelementptr inbounds i8, ptr %.0, i64 24 + store float %1, ptr %40, align 4 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.0, ptr noundef nonnull align 4 dereferenceable(24) %2, i64 24, i1 false) - %46 = load i32, ptr %4, align 4 - %47 = icmp slt i32 %46, 8 - br i1 %47, label %48, label %50 + %41 = load i32, ptr %4, align 4 + %42 = icmp slt i32 %41, 8 + br i1 %42, label %43, label %45 -48: ; preds = %44 - %49 = add nsw i32 %46, 1 - store i32 %49, ptr %4, align 4 - br label %50 +43: ; preds = %39 + %44 = add nsw i32 %41, 1 + store i32 %44, ptr %4, align 4 + br label %45 -50: ; preds = %15, %48, %44 +45: ; preds = %15, %43, %39 ret void } @@ -231,7 +217,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter 42: ; preds = %.lr.ph %43 = load i32, ptr %26, align 4 %.not.i = icmp eq i32 %43, 0 - br i1 %.not.i, label %79, label %44 + br i1 %.not.i, label %74, label %44 44: ; preds = %42 %45 = add nsw i32 %43, -1 @@ -244,7 +230,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter .preheader.i: ; preds = %44 %49 = icmp sgt i32 %43, 0 - br i1 %49, label %.lr.ph.preheader.i, label %._crit_edge.i + br i1 %49, label %.lr.ph.preheader.i, label %.loopexit.i .lr.ph.preheader.i: ; preds = %.preheader.i %wide.trip.count.i = zext nneg i32 %43 to i64 @@ -257,7 +243,7 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter 52: ; preds = %50 %53 = sext i32 %43 to i64 %54 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %53 - br label %79 + br label %74 .lr.ph.i: ; preds = %57, %.lr.ph.preheader.i %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %57 ] @@ -265,84 +251,73 @@ define void @_ZN15dtLocalBoundary6updateEjPKffP14dtNavMeshQueryPK13dtQueryFilter %gep.i = getelementptr inbounds i8, ptr %invariant.gep, i64 %.idx27.i %55 = load float, ptr %gep.i, align 4 %56 = fcmp ugt float %40, %55 - br i1 %56, label %57, label %._crit_edge.loopexit.split.loop.exit.i + br i1 %56, label %57, label %.loopexit.split.loop.exit34.i 57: ; preds = %.lr.ph.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !4 + br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !4 -._crit_edge.loopexit.split.loop.exit.i: ; preds = %.lr.ph.i +.loopexit.split.loop.exit34.i: ; preds = %.lr.ph.i %58 = trunc nuw nsw i64 %indvars.iv.i to i32 - br label %._crit_edge.i - -._crit_edge.i: ; preds = %57, %._crit_edge.loopexit.split.loop.exit.i, %.preheader.i - %.021.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %58, %._crit_edge.loopexit.split.loop.exit.i ], [ %43, %57 ] - %59 = add nuw nsw i32 %.021.lcssa.i, 1 - %60 = sub nsw i32 %43, %.021.lcssa.i - %61 = sub nsw i32 7, %.021.lcssa.i - %62 = call noundef i32 @llvm.smin.i32(i32 %60, i32 %61) - %63 = call noundef ptr @_Z21dtAssertFailGetCustomv() - %64 = icmp eq ptr %63, null - %65 = add nsw i32 %62, %59 - %66 = icmp slt i32 %65, 9 - %or.cond.i = select i1 %64, i1 true, i1 %66 - br i1 %or.cond.i, label %68, label %67 - -67: ; preds = %._crit_edge.i - call void %63(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 71) - br label %68 - -68: ; preds = %67, %._crit_edge.i - %69 = icmp sgt i32 %62, 0 - br i1 %69, label %70, label %._crit_edge33.i - -._crit_edge33.i: ; preds = %68 + br label %.loopexit.i + +.loopexit.i: ; preds = %57, %.loopexit.split.loop.exit34.i, %.preheader.i + %.021.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %58, %.loopexit.split.loop.exit34.i ], [ %43, %57 ] + %59 = sub nsw i32 %43, %.021.lcssa.i + %60 = sub nsw i32 7, %.021.lcssa.i + %61 = call noundef i32 @llvm.smin.i32(i32 %59, i32 %60) + %62 = call noundef ptr @_Z21dtAssertFailGetCustomv() + %63 = icmp sgt i32 %61, 0 + br i1 %63, label %64, label %._crit_edge33.i + +._crit_edge33.i: ; preds = %.loopexit.i %.pre.i = zext nneg i32 %.021.lcssa.i to i64 - br label %77 - -70: ; preds = %68 - %71 = zext nneg i32 %59 to i64 - %72 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %71 - %73 = zext nneg i32 %.021.lcssa.i to i64 - %74 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %73 - %75 = zext nneg i32 %62 to i64 - %76 = mul nuw nsw i64 %75, 28 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %72, ptr nonnull align 4 %74, i64 %76, i1 false) - br label %77 - -77: ; preds = %70, %._crit_edge33.i - %.pre-phi.i = phi i64 [ %.pre.i, %._crit_edge33.i ], [ %73, %70 ] - %78 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %.pre-phi.i - br label %79 - -79: ; preds = %77, %52, %42 - %.0.i = phi ptr [ %54, %52 ], [ %78, %77 ], [ %30, %42 ] - %80 = getelementptr inbounds i8, ptr %.0.i, i64 24 - store float %40, ptr %80, align 4 + br label %72 + +64: ; preds = %.loopexit.i + %65 = add nuw nsw i32 %.021.lcssa.i, 1 + %66 = zext nneg i32 %65 to i64 + %67 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %66 + %68 = zext nneg i32 %.021.lcssa.i to i64 + %69 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %68 + %70 = zext nneg i32 %61 to i64 + %71 = mul nuw nsw i64 %70, 28 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %67, ptr nonnull align 4 %69, i64 %71, i1 false) + br label %72 + +72: ; preds = %64, %._crit_edge33.i + %.pre-phi.i = phi i64 [ %.pre.i, %._crit_edge33.i ], [ %68, %64 ] + %73 = getelementptr inbounds [8 x %"struct.dtLocalBoundary::Segment"], ptr %30, i64 0, i64 %.pre-phi.i + br label %74 + +74: ; preds = %72, %52, %42 + %.0.i = phi ptr [ %54, %52 ], [ %73, %72 ], [ %30, %42 ] + %75 = getelementptr inbounds i8, ptr %.0.i, i64 24 + store float %40, ptr %75, align 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %.0.i, ptr noundef nonnull readonly align 8 dereferenceable(24) %38, i64 24, i1 false) - %81 = load i32, ptr %26, align 4 - %82 = icmp slt i32 %81, 8 - br i1 %82, label %83, label %_ZN15dtLocalBoundary10addSegmentEfPKf.exit + %76 = load i32, ptr %26, align 4 + %77 = icmp slt i32 %76, 8 + br i1 %77, label %78, label %_ZN15dtLocalBoundary10addSegmentEfPKf.exit -83: ; preds = %79 - %84 = add nsw i32 %81, 1 - store i32 %84, ptr %26, align 4 +78: ; preds = %74 + %79 = add nsw i32 %76, 1 + store i32 %79, ptr %26, align 4 br label %_ZN15dtLocalBoundary10addSegmentEfPKf.exit -_ZN15dtLocalBoundary10addSegmentEfPKf.exit: ; preds = %83, %79, %50, %.lr.ph +_ZN15dtLocalBoundary10addSegmentEfPKf.exit: ; preds = %78, %74, %50, %.lr.ph %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %85 = load i32, ptr %8, align 4 - %86 = sext i32 %85 to i64 - %87 = icmp slt i64 %indvars.iv.next, %86 - br i1 %87, label %.lr.ph, label %._crit_edge, !llvm.loop !6 + %80 = load i32, ptr %8, align 4 + %81 = sext i32 %80 to i64 + %82 = icmp slt i64 %indvars.iv.next, %81 + br i1 %82, label %.lr.ph, label %._crit_edge, !llvm.loop !6 ._crit_edge: ; preds = %_ZN15dtLocalBoundary10addSegmentEfPKf.exit, %31 %indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1 - %88 = load i32, ptr %24, align 4 - %89 = sext i32 %88 to i64 - %90 = icmp slt i64 %indvars.iv.next33, %89 - br i1 %90, label %31, label %.loopexit, !llvm.loop !7 + %83 = load i32, ptr %24, align 4 + %84 = sext i32 %83 to i64 + %85 = icmp slt i64 %indvars.iv.next33, %84 + br i1 %85, label %31, label %.loopexit, !llvm.loop !7 .loopexit: ; preds = %._crit_edge, %15, %10 ret void diff --git a/bench/recastnavigation/optimized/DetourPathCorridor.cpp.ll b/bench/recastnavigation/optimized/DetourPathCorridor.cpp.ll index 96fb2ec79ff..b66f04a2b64 100644 --- a/bench/recastnavigation/optimized/DetourPathCorridor.cpp.ll +++ b/bench/recastnavigation/optimized/DetourPathCorridor.cpp.ll @@ -5,7 +5,6 @@ target triple = "x86_64-pc-linux-gnu" $__clang_call_terminate = comdat any -@.str = private unnamed_addr constant [22 x i8] c"ppos+count <= maxPath\00", align 1 @.str.1 = private unnamed_addr constant [153 x i8] c"generated/home/dtcxzyw/WorkSpace/Projects/compilers/llvm-opt-benchmark/bench/recastnavigation/recastnavigation/DetourCrowd/Source/DetourPathCorridor.cpp\00", align 1 @.str.2 = private unnamed_addr constant [8 x i8] c"!m_path\00", align 1 @.str.3 = private unnamed_addr constant [7 x i8] c"m_path\00", align 1 @@ -77,53 +76,52 @@ define noundef i32 @_Z25dtMergeCorridorStartMovedPjiiPKji(ptr nocapture noundef %24 = add nuw nsw i32 %.us-phi66, 1 %25 = tail call noundef i32 @llvm.smin.i32(i32 %24, i32 %1) %26 = sub nsw i32 %1, %25 - %27 = tail call noundef i32 @llvm.smax.i32(i32 %26, i32 0) - %28 = add nsw i32 %27, %23 - %29 = icmp sgt i32 %28, %2 - %30 = sub nsw i32 %2, %23 - %spec.select = select i1 %29, i32 %30, i32 %27 - %31 = icmp sgt i32 %spec.select, 0 - br i1 %31, label %32, label %39 - -32: ; preds = %22 - %33 = sext i32 %23 to i64 - %34 = getelementptr inbounds i32, ptr %0, i64 %33 - %35 = sext i32 %25 to i64 - %36 = getelementptr inbounds i32, ptr %0, i64 %35 - %37 = zext nneg i32 %spec.select to i64 - %38 = shl nuw nsw i64 %37, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %34, ptr align 4 %36, i64 %38, i1 false) - br label %39 - -39: ; preds = %32, %22 - %40 = tail call noundef i32 @llvm.smin.i32(i32 %23, i32 %2) - %41 = icmp sgt i32 %40, 0 - br i1 %41, label %.lr.ph.preheader, label %._crit_edge + %27 = add nsw i32 %26, %23 + %28 = icmp sgt i32 %27, %2 + %29 = sub nsw i32 %2, %23 + %spec.select = select i1 %28, i32 %29, i32 %26 + %30 = icmp sgt i32 %spec.select, 0 + br i1 %30, label %31, label %38 -.lr.ph.preheader: ; preds = %39 - %wide.trip.count = zext nneg i32 %40 to i64 +31: ; preds = %22 + %32 = sext i32 %23 to i64 + %33 = getelementptr inbounds i32, ptr %0, i64 %32 + %34 = sext i32 %25 to i64 + %35 = getelementptr inbounds i32, ptr %0, i64 %34 + %36 = zext nneg i32 %spec.select to i64 + %37 = shl nuw nsw i64 %36, 2 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %33, ptr align 4 %35, i64 %37, i1 false) + br label %38 + +38: ; preds = %31, %22 + %39 = tail call noundef i32 @llvm.smin.i32(i32 %23, i32 %2) + %40 = icmp sgt i32 %39, 0 + br i1 %40, label %.lr.ph.preheader, label %._crit_edge + +.lr.ph.preheader: ; preds = %38 + %wide.trip.count = zext nneg i32 %39 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv72 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next73, %.lr.ph ] - %42 = trunc i64 %indvars.iv72 to i32 - %43 = xor i32 %42, -1 - %44 = add i32 %4, %43 - %45 = sext i32 %44 to i64 - %46 = getelementptr inbounds i32, ptr %3, i64 %45 - %47 = load i32, ptr %46, align 4 - %48 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv72 - store i32 %47, ptr %48, align 4 + %41 = trunc i64 %indvars.iv72 to i32 + %42 = xor i32 %41, -1 + %43 = add i32 %4, %42 + %44 = sext i32 %43 to i64 + %45 = getelementptr inbounds i32, ptr %3, i64 %44 + %46 = load i32, ptr %45, align 4 + %47 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv72 + store i32 %46, ptr %47, align 4 %indvars.iv.next73 = add nuw nsw i64 %indvars.iv72, 1 %exitcond.not = icmp eq i64 %indvars.iv.next73, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 -._crit_edge: ; preds = %.lr.ph, %39 - %49 = add nsw i32 %spec.select, %23 +._crit_edge: ; preds = %.lr.ph, %38 + %48 = add nsw i32 %spec.select, %23 br label %.split65.us.thread .split65.us.thread: ; preds = %5, %.split65.us, %._crit_edge - %.0 = phi i32 [ %49, %._crit_edge ], [ %1, %.split65.us ], [ %1, %5 ] + %.0 = phi i32 [ %48, %._crit_edge ], [ %1, %.split65.us ], [ %1, %5 ] ret i32 %.0 } @@ -134,8 +132,8 @@ declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture read define noundef i32 @_Z23dtMergeCorridorEndMovedPjiiPKji(ptr nocapture noundef %0, i32 noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, i32 noundef %4) local_unnamed_addr #2 { %6 = icmp sgt i32 %1, 0 %7 = icmp sgt i32 %4, 0 - %or.cond76 = and i1 %6, %7 - br i1 %or.cond76, label %.preheader.us.preheader, label %._crit_edge58.thread + %or.cond75 = and i1 %6, %7 + br i1 %or.cond75, label %.preheader.us.preheader, label %._crit_edge58.thread .preheader.us.preheader: ; preds = %5 %8 = zext nneg i32 %4 to i64 @@ -143,12 +141,12 @@ define noundef i32 @_Z23dtMergeCorridorEndMovedPjiiPKji(ptr nocapture noundef %0 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.us - %indvars.iv70 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next71, %._crit_edge.us ] + %indvars.iv69 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next70, %._crit_edge.us ] %.03657.us = phi i32 [ -1, %.preheader.us.preheader ], [ %.3.us, %._crit_edge.us ] %.03756.us = phi i32 [ -1, %.preheader.us.preheader ], [ %.340.us, %._crit_edge.us ] - %10 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv70 + %10 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv69 %11 = load i32, ptr %10, align 4 - %12 = trunc nuw nsw i64 %indvars.iv70 to i32 + %12 = trunc nuw nsw i64 %indvars.iv69 to i32 br label %13 13: ; preds = %.preheader.us, %13 @@ -168,8 +166,8 @@ define noundef i32 @_Z23dtMergeCorridorEndMovedPjiiPKji(ptr nocapture noundef %0 br i1 %18, label %13, label %._crit_edge.us, !llvm.loop !8 ._crit_edge.us: ; preds = %13 - %indvars.iv.next71 = add nuw nsw i64 %indvars.iv70, 1 - %19 = icmp samesign uge i64 %indvars.iv.next71, %9 + %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 + %19 = icmp samesign uge i64 %indvars.iv.next70, %9 %or.cond67.not = select i1 %.144.us, i1 true, i1 %19 br i1 %or.cond67.not, label %._crit_edge58, label %.preheader.us, !llvm.loop !9 @@ -186,32 +184,22 @@ define noundef i32 @_Z23dtMergeCorridorEndMovedPjiiPKji(ptr nocapture noundef %0 %26 = sub nsw i32 %2, %23 %27 = tail call noundef i32 @llvm.smin.i32(i32 %25, i32 %26) %28 = tail call noundef ptr @_Z21dtAssertFailGetCustomv() - %29 = icmp ne ptr %28, null - %30 = add nsw i32 %27, %23 - %.not = icmp sgt i32 %30, %2 - %or.cond48 = select i1 %29, i1 %.not, i1 false - br i1 %or.cond48, label %31, label %32 - -31: ; preds = %22 - tail call void %28(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 103) - br label %32 - -32: ; preds = %31, %22 + %29 = add nsw i32 %27, %23 %.not47 = icmp eq i32 %27, 0 - br i1 %.not47, label %._crit_edge58.thread, label %33 + br i1 %.not47, label %._crit_edge58.thread, label %30 -33: ; preds = %32 - %34 = sext i32 %23 to i64 - %35 = getelementptr inbounds i32, ptr %0, i64 %34 - %36 = zext nneg i32 %24 to i64 - %37 = getelementptr inbounds i32, ptr %3, i64 %36 - %38 = sext i32 %27 to i64 - %39 = shl nsw i64 %38, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %35, ptr nonnull align 4 %37, i64 %39, i1 false) +30: ; preds = %22 + %31 = sext i32 %23 to i64 + %32 = getelementptr inbounds i32, ptr %0, i64 %31 + %33 = zext nneg i32 %24 to i64 + %34 = getelementptr inbounds i32, ptr %3, i64 %33 + %35 = sext i32 %27 to i64 + %36 = shl nsw i64 %35, 2 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %32, ptr nonnull align 4 %34, i64 %36, i1 false) br label %._crit_edge58.thread -._crit_edge58.thread: ; preds = %5, %32, %33, %._crit_edge58 - %.0 = phi i32 [ %1, %._crit_edge58 ], [ %30, %33 ], [ %30, %32 ], [ %1, %5 ] +._crit_edge58.thread: ; preds = %5, %22, %30, %._crit_edge58 + %.0 = phi i32 [ %1, %._crit_edge58 ], [ %29, %30 ], [ %29, %22 ], [ %1, %5 ] ret i32 %.0 } @@ -1066,7 +1054,7 @@ define noundef zeroext i1 @_ZN14dtPathCorridor12movePositionEPKfP14dtNavMeshQuer %23 = call noundef i32 @_ZNK14dtNavMeshQuery16moveAlongSurfaceEjPKfS1_PK13dtQueryFilterPfPjPii(ptr noundef nonnull align 8 dereferenceable(104) %2, i32 noundef %22, ptr noundef nonnull %0, ptr noundef %1, ptr noundef %3, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef 16) %24 = and i32 %23, 1073741824 %25 = icmp ne i32 %24, 0 - br i1 %25, label %26, label %86 + br i1 %25, label %26, label %85 26: ; preds = %20 %27 = load ptr, ptr %11, align 8 @@ -1130,72 +1118,71 @@ define noundef zeroext i1 @_ZN14dtPathCorridor12movePositionEPKfP14dtNavMeshQuer %50 = add nuw nsw i32 %.us-phi66.i, 1 %51 = call noundef i32 @llvm.smin.i32(i32 %50, i32 %28) %52 = sub nsw i32 %28, %51 - %53 = call noundef i32 @llvm.smax.i32(i32 %52, i32 0) - %54 = add nsw i32 %53, %49 - %55 = icmp sgt i32 %54, %30 - %56 = sub nsw i32 %30, %49 - %spec.select.i = select i1 %55, i32 %56, i32 %53 - %57 = icmp sgt i32 %spec.select.i, 0 - br i1 %57, label %58, label %65 - -58: ; preds = %48 - %59 = sext i32 %49 to i64 - %60 = getelementptr inbounds i32, ptr %27, i64 %59 - %61 = sext i32 %51 to i64 - %62 = getelementptr inbounds i32, ptr %27, i64 %61 - %63 = zext nneg i32 %spec.select.i to i64 - %64 = shl nuw nsw i64 %63, 2 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %60, ptr align 4 %62, i64 %64, i1 false) - br label %65 - -65: ; preds = %58, %48 - %66 = call noundef i32 @llvm.smin.i32(i32 %49, i32 %30) - %67 = icmp sgt i32 %66, 0 - br i1 %67, label %.lr.ph.preheader.i, label %._crit_edge.i - -.lr.ph.preheader.i: ; preds = %65 - %wide.trip.count.i = zext nneg i32 %66 to i64 + %53 = add nsw i32 %52, %49 + %54 = icmp sgt i32 %53, %30 + %55 = sub nsw i32 %30, %49 + %spec.select.i = select i1 %54, i32 %55, i32 %52 + %56 = icmp sgt i32 %spec.select.i, 0 + br i1 %56, label %57, label %64 + +57: ; preds = %48 + %58 = sext i32 %49 to i64 + %59 = getelementptr inbounds i32, ptr %27, i64 %58 + %60 = sext i32 %51 to i64 + %61 = getelementptr inbounds i32, ptr %27, i64 %60 + %62 = zext nneg i32 %spec.select.i to i64 + %63 = shl nuw nsw i64 %62, 2 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %59, ptr align 4 %61, i64 %63, i1 false) + br label %64 + +64: ; preds = %57, %48 + %65 = call noundef i32 @llvm.smin.i32(i32 %49, i32 %30) + %66 = icmp sgt i32 %65, 0 + br i1 %66, label %.lr.ph.preheader.i, label %._crit_edge.i + +.lr.ph.preheader.i: ; preds = %64 + %wide.trip.count.i = zext nneg i32 %65 to i64 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i %indvars.iv72.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next73.i, %.lr.ph.i ] - %68 = trunc i64 %indvars.iv72.i to i32 - %69 = xor i32 %68, -1 - %70 = add i32 %31, %69 - %71 = sext i32 %70 to i64 - %72 = getelementptr inbounds i32, ptr %6, i64 %71 - %73 = load i32, ptr %72, align 4 - %74 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv72.i - store i32 %73, ptr %74, align 4 + %67 = trunc i64 %indvars.iv72.i to i32 + %68 = xor i32 %67, -1 + %69 = add i32 %31, %68 + %70 = sext i32 %69 to i64 + %71 = getelementptr inbounds i32, ptr %6, i64 %70 + %72 = load i32, ptr %71, align 4 + %73 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv72.i + store i32 %72, ptr %73, align 4 %indvars.iv.next73.i = add nuw nsw i64 %indvars.iv72.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next73.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !7 -._crit_edge.i: ; preds = %.lr.ph.i, %65 - %75 = add nsw i32 %spec.select.i, %49 +._crit_edge.i: ; preds = %.lr.ph.i, %64 + %74 = add nsw i32 %spec.select.i, %49 %.pre = load ptr, ptr %11, align 8 br label %_Z25dtMergeCorridorStartMovedPjiiPKji.exit _Z25dtMergeCorridorStartMovedPjiiPKji.exit: ; preds = %26, %.split65.us.i, %._crit_edge.i - %76 = phi ptr [ %.pre, %._crit_edge.i ], [ %27, %.split65.us.i ], [ %27, %26 ] - %.0.i = phi i32 [ %75, %._crit_edge.i ], [ %28, %.split65.us.i ], [ %28, %26 ] + %75 = phi ptr [ %.pre, %._crit_edge.i ], [ %27, %.split65.us.i ], [ %27, %26 ] + %.0.i = phi i32 [ %74, %._crit_edge.i ], [ %28, %.split65.us.i ], [ %28, %26 ] store i32 %.0.i, ptr %17, align 8 - %77 = getelementptr inbounds i8, ptr %0, i64 4 - %78 = load float, ptr %77, align 4 - store float %78, ptr %8, align 4 - %79 = load i32, ptr %76, align 4 - %80 = call noundef i32 @_ZNK14dtNavMeshQuery13getPolyHeightEjPKfPf(ptr noundef nonnull align 8 dereferenceable(104) %2, i32 noundef %79, ptr noundef nonnull %5, ptr noundef nonnull %8) - %81 = load float, ptr %8, align 4 - %82 = load float, ptr %5, align 4 - store float %82, ptr %0, align 8 - store float %81, ptr %77, align 4 - %83 = getelementptr inbounds i8, ptr %5, i64 8 - %84 = load float, ptr %83, align 4 - %85 = getelementptr inbounds i8, ptr %0, i64 8 - store float %84, ptr %85, align 8 - br label %86 - -86: ; preds = %20, %_Z25dtMergeCorridorStartMovedPjiiPKji.exit + %76 = getelementptr inbounds i8, ptr %0, i64 4 + %77 = load float, ptr %76, align 4 + store float %77, ptr %8, align 4 + %78 = load i32, ptr %75, align 4 + %79 = call noundef i32 @_ZNK14dtNavMeshQuery13getPolyHeightEjPKfPf(ptr noundef nonnull align 8 dereferenceable(104) %2, i32 noundef %78, ptr noundef nonnull %5, ptr noundef nonnull %8) + %80 = load float, ptr %8, align 4 + %81 = load float, ptr %5, align 4 + store float %81, ptr %0, align 8 + store float %80, ptr %76, align 4 + %82 = getelementptr inbounds i8, ptr %5, i64 8 + %83 = load float, ptr %82, align 4 + %84 = getelementptr inbounds i8, ptr %0, i64 8 + store float %83, ptr %84, align 8 + br label %85 + +85: ; preds = %20, %_Z25dtMergeCorridorStartMovedPjiiPKji.exit ret i1 %25 } @@ -1246,7 +1233,7 @@ define noundef zeroext i1 @_ZN14dtPathCorridor18moveTargetPositionEPKfP14dtNavMe %27 = call noundef i32 @_ZNK14dtNavMeshQuery16moveAlongSurfaceEjPKfS1_PK13dtQueryFilterPfPjPii(ptr noundef nonnull align 8 dereferenceable(104) %2, i32 noundef %25, ptr noundef nonnull %26, ptr noundef %1, ptr noundef %3, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, i32 noundef 16) %28 = and i32 %27, 1073741824 %29 = icmp ne i32 %28, 0 - br i1 %29, label %30, label %77 + br i1 %29, label %30, label %74 30: ; preds = %19 %31 = load ptr, ptr %10, align 8 @@ -1256,8 +1243,8 @@ define noundef zeroext i1 @_ZN14dtPathCorridor18moveTargetPositionEPKfP14dtNavMe %35 = load i32, ptr %7, align 4 %36 = icmp sgt i32 %32, 0 %37 = icmp sgt i32 %35, 0 - %or.cond76.i = and i1 %36, %37 - br i1 %or.cond76.i, label %.preheader.us.preheader.i, label %_Z23dtMergeCorridorEndMovedPjiiPKji.exit + %or.cond75.i = and i1 %36, %37 + br i1 %or.cond75.i, label %.preheader.us.preheader.i, label %_Z23dtMergeCorridorEndMovedPjiiPKji.exit .preheader.us.preheader.i: ; preds = %30 %38 = zext nneg i32 %35 to i64 @@ -1265,12 +1252,12 @@ define noundef zeroext i1 @_ZN14dtPathCorridor18moveTargetPositionEPKfP14dtNavMe br label %.preheader.us.i .preheader.us.i: ; preds = %._crit_edge.us.i, %.preheader.us.preheader.i - %indvars.iv70.i = phi i64 [ 0, %.preheader.us.preheader.i ], [ %indvars.iv.next71.i, %._crit_edge.us.i ] + %indvars.iv69.i = phi i64 [ 0, %.preheader.us.preheader.i ], [ %indvars.iv.next70.i, %._crit_edge.us.i ] %.03657.us.i = phi i32 [ -1, %.preheader.us.preheader.i ], [ %.3.us.i, %._crit_edge.us.i ] %.03756.us.i = phi i32 [ -1, %.preheader.us.preheader.i ], [ %.340.us.i, %._crit_edge.us.i ] - %40 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv70.i + %40 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv69.i %41 = load i32, ptr %40, align 4 - %42 = trunc nuw nsw i64 %indvars.iv70.i to i32 + %42 = trunc nuw nsw i64 %indvars.iv69.i to i32 br label %43 43: ; preds = %43, %.preheader.us.i @@ -1290,8 +1277,8 @@ define noundef zeroext i1 @_ZN14dtPathCorridor18moveTargetPositionEPKfP14dtNavMe br i1 %48, label %43, label %._crit_edge.us.i, !llvm.loop !8 ._crit_edge.us.i: ; preds = %43 - %indvars.iv.next71.i = add nuw nsw i64 %indvars.iv70.i, 1 - %49 = icmp samesign uge i64 %indvars.iv.next71.i, %39 + %indvars.iv.next70.i = add nuw nsw i64 %indvars.iv69.i, 1 + %49 = icmp samesign uge i64 %indvars.iv.next70.i, %39 %or.cond67.not.i = select i1 %.144.us.i, i1 true, i1 %49 br i1 %or.cond67.not.i, label %._crit_edge58.i, label %.preheader.us.i, !llvm.loop !9 @@ -1308,46 +1295,36 @@ define noundef zeroext i1 @_ZN14dtPathCorridor18moveTargetPositionEPKfP14dtNavMe %56 = sub nsw i32 %34, %53 %57 = call noundef i32 @llvm.smin.i32(i32 %55, i32 %56) %58 = call noundef ptr @_Z21dtAssertFailGetCustomv() - %59 = icmp ne ptr %58, null - %60 = add nsw i32 %57, %53 - %.not.i = icmp sgt i32 %60, %34 - %or.cond48.i = select i1 %59, i1 %.not.i, i1 false - br i1 %or.cond48.i, label %61, label %62 - -61: ; preds = %52 - call void %58(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 103) - br label %62 - -62: ; preds = %61, %52 + %59 = add nsw i32 %57, %53 %.not47.i = icmp eq i32 %57, 0 - br i1 %.not47.i, label %_Z23dtMergeCorridorEndMovedPjiiPKji.exit, label %63 - -63: ; preds = %62 - %64 = sext i32 %53 to i64 - %65 = getelementptr inbounds i32, ptr %31, i64 %64 - %66 = zext nneg i32 %54 to i64 - %67 = getelementptr inbounds i32, ptr %6, i64 %66 - %68 = sext i32 %57 to i64 - %69 = shl nsw i64 %68, 2 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull readonly align 4 %67, i64 %69, i1 false) + br i1 %.not47.i, label %_Z23dtMergeCorridorEndMovedPjiiPKji.exit, label %60 + +60: ; preds = %52 + %61 = sext i32 %53 to i64 + %62 = getelementptr inbounds i32, ptr %31, i64 %61 + %63 = zext nneg i32 %54 to i64 + %64 = getelementptr inbounds i32, ptr %6, i64 %63 + %65 = sext i32 %57 to i64 + %66 = shl nsw i64 %65, 2 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %62, ptr nonnull readonly align 4 %64, i64 %66, i1 false) br label %_Z23dtMergeCorridorEndMovedPjiiPKji.exit -_Z23dtMergeCorridorEndMovedPjiiPKji.exit: ; preds = %30, %._crit_edge58.i, %62, %63 - %.0.i = phi i32 [ %32, %._crit_edge58.i ], [ %60, %63 ], [ %60, %62 ], [ %32, %30 ] +_Z23dtMergeCorridorEndMovedPjiiPKji.exit: ; preds = %30, %._crit_edge58.i, %52, %60 + %.0.i = phi i32 [ %32, %._crit_edge58.i ], [ %59, %60 ], [ %59, %52 ], [ %32, %30 ] store i32 %.0.i, ptr %16, align 8 - %70 = load float, ptr %5, align 4 - store float %70, ptr %26, align 4 - %71 = getelementptr inbounds i8, ptr %5, i64 4 + %67 = load float, ptr %5, align 4 + store float %67, ptr %26, align 4 + %68 = getelementptr inbounds i8, ptr %5, i64 4 + %69 = load float, ptr %68, align 4 + %70 = getelementptr inbounds i8, ptr %0, i64 16 + store float %69, ptr %70, align 8 + %71 = getelementptr inbounds i8, ptr %5, i64 8 %72 = load float, ptr %71, align 4 - %73 = getelementptr inbounds i8, ptr %0, i64 16 - store float %72, ptr %73, align 8 - %74 = getelementptr inbounds i8, ptr %5, i64 8 - %75 = load float, ptr %74, align 4 - %76 = getelementptr inbounds i8, ptr %0, i64 20 - store float %75, ptr %76, align 4 - br label %77 + %73 = getelementptr inbounds i8, ptr %0, i64 20 + store float %72, ptr %73, align 4 + br label %74 -77: ; preds = %19, %_Z23dtMergeCorridorEndMovedPjiiPKji.exit +74: ; preds = %19, %_Z23dtMergeCorridorEndMovedPjiiPKji.exit ret i1 %29 } diff --git a/bench/redis/optimized/lbaselib.ll b/bench/redis/optimized/lbaselib.ll index c768a81f243..d8580fbfc1d 100644 --- a/bench/redis/optimized/lbaselib.ll +++ b/bench/redis/optimized/lbaselib.ll @@ -818,19 +818,15 @@ cond.end: ; preds = %cond.false, %cond.t if.end: ; preds = %cond.end %sub = sub nsw i32 %cond, %conv %add = add nsw i32 %sub, 1 - %cmp9 = icmp slt i32 %sub, 0 - br i1 %cmp9, label %if.then12, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end %call11 = tail call i32 @lua_checkstack(ptr noundef %L, i32 noundef %add) #8 %tobool.not = icmp eq i32 %call11, 0 br i1 %tobool.not, label %if.then12, label %if.end14 -if.then12: ; preds = %lor.lhs.false, %if.end +if.then12: ; preds = %if.end %call13 = tail call i32 (ptr, ptr, ...) @luaL_error(ptr noundef %L, ptr noundef nonnull @.str.63) #8 br label %cleanup -if.end14: ; preds = %lor.lhs.false +if.end14: ; preds = %if.end tail call void @lua_rawgeti(ptr noundef %L, i32 noundef 1, i32 noundef %conv) #8 %cmp1535 = icmp slt i32 %conv, %cond br i1 %cmp1535, label %while.body, label %cleanup diff --git a/bench/rocksdb/optimized/compaction_picker.cc.ll b/bench/rocksdb/optimized/compaction_picker.cc.ll index c50272ec1ec..74b789cfa3f 100644 --- a/bench/rocksdb/optimized/compaction_picker.cc.ll +++ b/bench/rocksdb/optimized/compaction_picker.cc.ll @@ -153,7 +153,6 @@ $_ZZNSt8__detail18__to_chars_10_implIjEEvPcjT_E8__digits = comdat any @_ZN7rocksdb12perf_contextE = external thread_local local_unnamed_addr global %"struct.rocksdb::PerfContext", align 8 @_ZZNSt8__detail18__to_chars_10_implImEEvPcjT_E8__digits = linkonce_odr local_unnamed_addr constant [201 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899\00", comdat, align 16 @_ZZNSt8__detail18__to_chars_10_implIjEEvPcjT_E8__digits = linkonce_odr local_unnamed_addr constant [201 x i8] c"00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899\00", comdat, align 16 -@.str.24 = private unnamed_addr constant [49 x i8] c"cannot create std::vector larger than max_size()\00", align 1 @.str.25 = private unnamed_addr constant [50 x i8] c"basic_string: construction from null is not valid\00", align 1 @.str.26 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @.str.27 = private unnamed_addr constant [26 x i8] c"vector::_M_default_append\00", align 1 @@ -3254,21 +3253,13 @@ if.then9: ; preds = %if.end br label %return if.end10: ; preds = %if.end - %sub = sub nsw i32 %4, %8 - %conv = sext i32 %sub to i64 - %cmp.i.i133 = icmp slt i32 %sub, 0 - br i1 %cmp.i.i133, label %if.then.i.i, label %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i - -if.then.i.i: ; preds = %if.end10 - tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.24) #27 - unreachable - -_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = %if.end10 store i64 0, ptr %inputs, align 8 %cmp.not.i.i.i.i = icmp eq i32 %4, %8 br i1 %cmp.not.i.i.i.i, label %invoke.cont, label %for.body.preheader.i.i.i.i.i -for.body.preheader.i.i.i.i.i: ; preds = %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i +for.body.preheader.i.i.i.i.i: ; preds = %if.end10 + %sub = sub nsw i32 %4, %8 + %conv = sext i32 %sub to i64 %mul.i.i.i.i.i.i = mul nuw nsw i64 %conv, 56 %call5.i.i.i.i2.i.i134 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #28 store ptr %call5.i.i.i.i2.i.i134, ptr %inputs, align 8 @@ -3277,10 +3268,10 @@ for.body.preheader.i.i.i.i.i: ; preds = %_ZNSt6vectorIN7rock %scevgep.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i134, i64 %mul.i.i.i.i.i.i br label %invoke.cont -invoke.cont: ; preds = %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i, %for.body.preheader.i.i.i.i.i - %10 = phi ptr [ %call5.i.i.i.i2.i.i134, %for.body.preheader.i.i.i.i.i ], [ null, %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ] - %add.ptr.i.i.sink.i = phi ptr [ %add.ptr.i.i.i, %for.body.preheader.i.i.i.i.i ], [ null, %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ] - %__cur.0.lcssa.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ], [ null, %_ZNSt6vectorIN7rocksdb20CompactionInputFilesESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ] +invoke.cont: ; preds = %if.end10, %for.body.preheader.i.i.i.i.i + %10 = phi ptr [ %call5.i.i.i.i2.i.i134, %for.body.preheader.i.i.i.i.i ], [ null, %if.end10 ] + %add.ptr.i.i.sink.i = phi ptr [ %add.ptr.i.i.i, %for.body.preheader.i.i.i.i.i ], [ null, %if.end10 ] + %__cur.0.lcssa.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i, %for.body.preheader.i.i.i.i.i ], [ null, %if.end10 ] %_M_finish.i.i7.i = getelementptr inbounds i8, ptr %inputs, i64 8 %11 = getelementptr inbounds i8, ptr %inputs, i64 16 store ptr %add.ptr.i.i.sink.i, ptr %11, align 8 diff --git a/bench/ruby/optimized/array.ll b/bench/ruby/optimized/array.ll index 3a41bc11036..2c37b56d3ed 100644 --- a/bench/ruby/optimized/array.ll +++ b/bench/ruby/optimized/array.ll @@ -16256,12 +16256,12 @@ rb_array_const_ptr.exit69: ; preds = %128 %132 = getelementptr inbounds i8, ptr %39, i64 32 %133 = load ptr, ptr %132, align 8 %134 = icmp sgt i64 %129, 16 - br i1 %134, label %137, label %rb_ary_ptr_use_start.exit24.i.i71 + br i1 %134, label %137, label %.lr.ph.i.i73 rb_array_const_ptr.exit69.thread: ; preds = %128 %135 = getelementptr inbounds i8, ptr %39, i64 16 %136 = icmp sgt i64 %129, 16 - br i1 %136, label %137, label %rb_ary_ptr_use_start.exit24.i.i71 + br i1 %136, label %137, label %.lr.ph.i.i73 137: ; preds = %rb_array_const_ptr.exit69.thread, %rb_array_const_ptr.exit69 %.0.i6895 = phi ptr [ %135, %rb_array_const_ptr.exit69.thread ], [ %133, %rb_array_const_ptr.exit69 ] @@ -16295,40 +16295,36 @@ rbimpl_size_mul_or_raise.exit.i.i79: ; preds = %rb_ary_ptr_use_star tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %147, ptr readonly align 1 %.0.i6895, i64 %148, i1 false) br label %ary_memcpy.exit80 -rb_ary_ptr_use_start.exit24.i.i71: ; preds = %rb_array_const_ptr.exit69, %rb_array_const_ptr.exit69.thread +.lr.ph.i.i73: ; preds = %rb_array_const_ptr.exit69, %rb_array_const_ptr.exit69.thread %.0.i689498 = phi ptr [ %135, %rb_array_const_ptr.exit69.thread ], [ %133, %rb_array_const_ptr.exit69 ] - %149 = icmp sgt i64 %129, 0 - br i1 %149, label %.lr.ph.i.i73, label %ary_memcpy.exit80 - -.lr.ph.i.i73: ; preds = %rb_ary_ptr_use_start.exit24.i.i71 - %150 = getelementptr i64, ptr %.0.i689498, i64 %.040.lcssa - br label %151 - -151: ; preds = %rb_obj_write.exit.i.i75, %.lr.ph.i.i73 - %152 = phi i64 [ 0, %.lr.ph.i.i73 ], [ %162, %rb_obj_write.exit.i.i75 ] - %.025.i.i74 = phi i32 [ 0, %.lr.ph.i.i73 ], [ %161, %rb_obj_write.exit.i.i75 ] - %153 = getelementptr i64, ptr %150, i64 %152 - %154 = getelementptr i64, ptr %.0.i689498, i64 %152 - %155 = load i64, ptr %154, align 8 - store i64 %155, ptr %153, align 8 - %156 = and i64 %155, 7 - %157 = icmp ne i64 %156, 0 - %158 = icmp eq i64 %155, 0 - %159 = or i1 %158, %157 - br i1 %159, label %rb_obj_write.exit.i.i75, label %160 - -160: ; preds = %151 - tail call void @rb_gc_writebarrier(i64 noundef %38, i64 noundef %155) #21 + %149 = getelementptr i64, ptr %.0.i689498, i64 %.040.lcssa + br label %150 + +150: ; preds = %rb_obj_write.exit.i.i75, %.lr.ph.i.i73 + %151 = phi i64 [ 0, %.lr.ph.i.i73 ], [ %161, %rb_obj_write.exit.i.i75 ] + %.025.i.i74 = phi i32 [ 0, %.lr.ph.i.i73 ], [ %160, %rb_obj_write.exit.i.i75 ] + %152 = getelementptr i64, ptr %149, i64 %151 + %153 = getelementptr i64, ptr %.0.i689498, i64 %151 + %154 = load i64, ptr %153, align 8 + store i64 %154, ptr %152, align 8 + %155 = and i64 %154, 7 + %156 = icmp ne i64 %155, 0 + %157 = icmp eq i64 %154, 0 + %158 = or i1 %157, %156 + br i1 %158, label %rb_obj_write.exit.i.i75, label %159 + +159: ; preds = %150 + tail call void @rb_gc_writebarrier(i64 noundef %38, i64 noundef %154) #21 br label %rb_obj_write.exit.i.i75 -rb_obj_write.exit.i.i75: ; preds = %160, %151 - %161 = add i32 %.025.i.i74, 1 - %162 = sext i32 %161 to i64 - %163 = icmp sgt i64 %129, %162 - br i1 %163, label %151, label %ary_memcpy.exit80, !llvm.loop !13 +rb_obj_write.exit.i.i75: ; preds = %159, %150 + %160 = add i32 %.025.i.i74, 1 + %161 = sext i32 %160 to i64 + %162 = icmp sgt i64 %129, %161 + br i1 %162, label %150, label %ary_memcpy.exit80, !llvm.loop !13 -ary_memcpy.exit80: ; preds = %rb_obj_write.exit.i.i75, %rb_ary_ptr_use_start.exit24.i.i71, %rbimpl_size_mul_or_raise.exit.i.i79, %rb_array_len.exit50.thread, %14, %._crit_edge, %rb_array_len.exit50, %5 - %.0 = phi i64 [ %6, %5 ], [ %16, %14 ], [ %38, %._crit_edge ], [ %38, %rb_array_len.exit50 ], [ %38, %rb_array_len.exit50.thread ], [ %38, %rbimpl_size_mul_or_raise.exit.i.i79 ], [ %38, %rb_ary_ptr_use_start.exit24.i.i71 ], [ %38, %rb_obj_write.exit.i.i75 ] +ary_memcpy.exit80: ; preds = %rb_obj_write.exit.i.i75, %rbimpl_size_mul_or_raise.exit.i.i79, %rb_array_len.exit50.thread, %14, %._crit_edge, %rb_array_len.exit50, %5 + %.0 = phi i64 [ %6, %5 ], [ %16, %14 ], [ %38, %._crit_edge ], [ %38, %rb_array_len.exit50 ], [ %38, %rb_array_len.exit50.thread ], [ %38, %rbimpl_size_mul_or_raise.exit.i.i79 ], [ %38, %rb_obj_write.exit.i.i75 ] ret i64 %.0 } diff --git a/bench/spike/optimized/vfwadd_vf.ll b/bench/spike/optimized/vfwadd_vf.ll index eb12684705e..a2dcf63fba6 100644 --- a/bench/spike/optimized/vfwadd_vf.ll +++ b/bench/spike/optimized/vfwadd_vf.ll @@ -381,8 +381,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -1110,8 +1109,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -1797,8 +1795,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -2486,8 +2483,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -3173,8 +3169,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -3862,8 +3857,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -4549,8 +4543,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -5238,8 +5231,7 @@ _ZNSt13unordered_mapIm10float128_tSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixE 155: ; preds = %151 %156 = add nsw i32 %138, %136 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %137, i32 %156) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %138, i32 %96) - %157 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %157 = sub nsw i32 %.sroa.speculated.i15.i, %96 %158 = icmp slt i32 %157, %153 br i1 %158, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -6031,9 +6023,6 @@ declare i32 @llvm.umax.i32(i32, i32) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #15 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #15 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #15 diff --git a/bench/spike/optimized/vloxei16_v.ll b/bench/spike/optimized/vloxei16_v.ll index 4edd4432fe7..b90a195d6c5 100644 --- a/bench/spike/optimized/vloxei16_v.ll +++ b/bench/spike/optimized/vloxei16_v.ll @@ -464,8 +464,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us364: ; preds = %.preheader.split.sp 193: ; preds = %189 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %176, i32 %145) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %144, i32 %175) - %194 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %194 = sub nsw i32 %.sroa.speculated.i15.i, %175 %195 = icmp slt i32 %194, %.pre32.i br i1 %195, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -1369,8 +1368,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us364: ; preds = %.preheader.split.sp 193: ; preds = %189 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %176, i32 %145) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %144, i32 %175) - %194 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %194 = sub nsw i32 %.sroa.speculated.i15.i, %175 %195 = icmp slt i32 %194, %.pre32.i br i1 %195, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -2242,8 +2240,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us364: ; preds = %.preheader.split.sp 193: ; preds = %189 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %176, i32 %145) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %144, i32 %175) - %194 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %194 = sub nsw i32 %.sroa.speculated.i15.i, %175 %195 = icmp slt i32 %194, %.pre32.i br i1 %195, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -3117,8 +3114,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us364: ; preds = %.preheader.split.sp 193: ; preds = %189 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %176, i32 %145) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %144, i32 %175) - %194 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %194 = sub nsw i32 %.sroa.speculated.i15.i, %175 %195 = icmp slt i32 %194, %.pre32.i br i1 %195, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -4006,8 +4002,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us368: ; preds = %.preheader.split.sp 200: ; preds = %196 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %183, i32 %152) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %151, i32 %182) - %201 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %201 = sub nsw i32 %.sroa.speculated.i15.i, %182 %202 = icmp slt i32 %201, %.pre32.i br i1 %202, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -4897,8 +4892,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us368: ; preds = %.preheader.split.sp 200: ; preds = %196 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %183, i32 %152) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %151, i32 %182) - %201 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %201 = sub nsw i32 %.sroa.speculated.i15.i, %182 %202 = icmp slt i32 %201, %.pre32.i br i1 %202, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -5786,8 +5780,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us368: ; preds = %.preheader.split.sp 200: ; preds = %196 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %183, i32 %152) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %151, i32 %182) - %201 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %201 = sub nsw i32 %.sroa.speculated.i15.i, %182 %202 = icmp slt i32 %201, %.pre32.i br i1 %202, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread @@ -6677,8 +6670,7 @@ _ZL19is_overlapped_wideniiii.exit.thread.us368: ; preds = %.preheader.split.sp 200: ; preds = %196 %.sroa.speculated.i15.i = tail call i32 @llvm.smax.i32(i32 %183, i32 %152) - %.sroa.speculated12.i16.i = tail call i32 @llvm.smin.i32(i32 %151, i32 %182) - %201 = sub nsw i32 %.sroa.speculated.i15.i, %.sroa.speculated12.i16.i + %201 = sub nsw i32 %.sroa.speculated.i15.i, %182 %202 = icmp slt i32 %201, %.pre32.i br i1 %202, label %_ZL19is_overlapped_wideniiii.exit, label %_ZL19is_overlapped_wideniiii.exit.thread diff --git a/bench/verilator/optimized/V3Number.cpp.ll b/bench/verilator/optimized/V3Number.cpp.ll index 4c8d69b2c29..78bce90f190 100644 --- a/bench/verilator/optimized/V3Number.cpp.ll +++ b/bench/verilator/optimized/V3Number.cpp.ll @@ -14813,7 +14813,7 @@ define dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8V3Number9o br label %48 48: ; preds = %.lr.ph.us, %_ZN8V3Number6setBitEic.exit.us - %.046.us = phi i32 [ 0, %.lr.ph.us ], [ %117, %_ZN8V3Number6setBitEic.exit.us ] + %.046.us = phi i32 [ 0, %.lr.ph.us ], [ %116, %_ZN8V3Number6setBitEic.exit.us ] %49 = load i32, ptr %39, align 8 %50 = sub nsw i32 %49, %.02748.us %51 = icmp slt i32 %.046.us, %50 @@ -14827,138 +14827,136 @@ define dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8V3Number9o 54: ; preds = %48 %55 = add nuw nsw i32 %.046.us, %.sroa.speculated.us %56 = add nsw i32 %.046.us, %.02748.us - %57 = icmp sge i32 %56, %49 - %58 = icmp slt i32 %56, 0 - %or.cond.i.us = or i1 %58, %57 - br i1 %or.cond.i.us, label %_ZNK8V3Number5bitIsEi.exit.us, label %59 + %57 = icmp slt i32 %56, 0 + br i1 %57, label %_ZNK8V3Number5bitIsEi.exit.us, label %58 -59: ; preds = %54 - %60 = load i8, ptr %11, align 4 - %61 = add i8 %60, -1 - %spec.select.i.i.i.us = icmp ult i8 %61, 2 +58: ; preds = %54 + %59 = load i8, ptr %11, align 4 + %60 = add i8 %59, -1 + %spec.select.i.i.i.us = icmp ult i8 %60, 2 br i1 %spec.select.i.i.i.us, label %_ZNK12V3NumberData3numEv.exit.i.us, label %.split.us -_ZNK12V3NumberData3numEv.exit.i.us: ; preds = %59 - %62 = icmp slt i32 %49, 129 - %63 = load ptr, ptr %1, align 8 - %spec.select.i.i.us = select i1 %62, ptr %1, ptr %63 - %64 = lshr i32 %56, 5 - %65 = zext nneg i32 %64 to i64 - %66 = getelementptr inbounds %"struct.V3NumberData::ValueAndX", ptr %spec.select.i.i.us, i64 %65 - %.sroa.0.0.copyload.i.us = load i32, ptr %66, align 4 - %.sroa.2.0..sroa_idx.i.us = getelementptr inbounds i8, ptr %66, i64 4 +_ZNK12V3NumberData3numEv.exit.i.us: ; preds = %58 + %61 = icmp slt i32 %49, 129 + %62 = load ptr, ptr %1, align 8 + %spec.select.i.i.us = select i1 %61, ptr %1, ptr %62 + %63 = lshr i32 %56, 5 + %64 = zext nneg i32 %63 to i64 + %65 = getelementptr inbounds %"struct.V3NumberData::ValueAndX", ptr %spec.select.i.i.us, i64 %64 + %.sroa.0.0.copyload.i.us = load i32, ptr %65, align 4 + %.sroa.2.0..sroa_idx.i.us = getelementptr inbounds i8, ptr %65, i64 4 %.sroa.2.0.copyload.i.us = load i32, ptr %.sroa.2.0..sroa_idx.i.us, align 4 - %67 = and i32 %56, 31 - %68 = zext nneg i32 %67 to i64 - %69 = shl nuw nsw i64 1, %68 - %70 = lshr i32 %.sroa.0.0.copyload.i.us, %67 - %71 = and i32 %70, 1 - %72 = zext i32 %.sroa.2.0.copyload.i.us to i64 - %73 = and i64 %69, %72 - %.not.i.us = icmp eq i64 %73, 0 - %74 = select i1 %.not.i.us, i32 0, i32 2 - %75 = or disjoint i32 %74, %71 - %76 = zext nneg i32 %75 to i64 - %77 = getelementptr inbounds [5 x i8], ptr @.str.510, i64 0, i64 %76 - %78 = load i8, ptr %77, align 1 + %66 = and i32 %56, 31 + %67 = zext nneg i32 %66 to i64 + %68 = shl nuw nsw i64 1, %67 + %69 = lshr i32 %.sroa.0.0.copyload.i.us, %66 + %70 = and i32 %69, 1 + %71 = zext i32 %.sroa.2.0.copyload.i.us to i64 + %72 = and i64 %68, %71 + %.not.i.us = icmp eq i64 %72, 0 + %73 = select i1 %.not.i.us, i32 0, i32 2 + %74 = or disjoint i32 %73, %70 + %75 = zext nneg i32 %74 to i64 + %76 = getelementptr inbounds [5 x i8], ptr @.str.510, i64 0, i64 %75 + %77 = load i8, ptr %76, align 1 br label %_ZNK8V3Number5bitIsEi.exit.us _ZNK8V3Number5bitIsEi.exit.us: ; preds = %_ZNK12V3NumberData3numEv.exit.i.us, %54 - %.0.i.us = phi i8 [ %78, %_ZNK12V3NumberData3numEv.exit.i.us ], [ 48, %54 ] - %79 = load i32, ptr %43, align 8 - %.not.i32.us = icmp slt i32 %55, %79 - br i1 %.not.i32.us, label %80, label %_ZN8V3Number6setBitEic.exit.us - -80: ; preds = %_ZNK8V3Number5bitIsEi.exit.us - %81 = and i32 %55, 31 - %82 = shl nuw i32 1, %81 - %83 = load i8, ptr %44, align 4 - %84 = add i8 %83, -1 - %spec.select.i.i.i33.us = icmp ult i8 %84, 2 + %.0.i.us = phi i8 [ %77, %_ZNK12V3NumberData3numEv.exit.i.us ], [ 48, %54 ] + %78 = load i32, ptr %43, align 8 + %.not.i32.us = icmp slt i32 %55, %78 + br i1 %.not.i32.us, label %79, label %_ZN8V3Number6setBitEic.exit.us + +79: ; preds = %_ZNK8V3Number5bitIsEi.exit.us + %80 = and i32 %55, 31 + %81 = shl nuw i32 1, %80 + %82 = load i8, ptr %44, align 4 + %83 = add i8 %82, -1 + %spec.select.i.i.i33.us = icmp ult i8 %83, 2 br i1 %spec.select.i.i.i33.us, label %_ZN12V3NumberData3numEv.exit.i.us, label %.split51.us -_ZN12V3NumberData3numEv.exit.i.us: ; preds = %80 - %85 = icmp slt i32 %79, 129 - %86 = load ptr, ptr %0, align 8 - %spec.select.i.i34.us = select i1 %85, ptr %0, ptr %86 - %87 = lshr i32 %55, 5 - %88 = zext nneg i32 %87 to i64 - %89 = getelementptr inbounds %"struct.V3NumberData::ValueAndX", ptr %spec.select.i.i34.us, i64 %88 - switch i8 %.0.i.us, label %111 [ - i8 48, label %104 - i8 0, label %104 - i8 49, label %97 - i8 1, label %97 - i8 122, label %90 - i8 2, label %90 +_ZN12V3NumberData3numEv.exit.i.us: ; preds = %79 + %84 = icmp slt i32 %78, 129 + %85 = load ptr, ptr %0, align 8 + %spec.select.i.i34.us = select i1 %84, ptr %0, ptr %85 + %86 = lshr i32 %55, 5 + %87 = zext nneg i32 %86 to i64 + %88 = getelementptr inbounds %"struct.V3NumberData::ValueAndX", ptr %spec.select.i.i34.us, i64 %87 + switch i8 %.0.i.us, label %110 [ + i8 48, label %103 + i8 0, label %103 + i8 49, label %96 + i8 1, label %96 + i8 122, label %89 + i8 2, label %89 ] -90: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us - %91 = xor i32 %82, -1 - %92 = load i32, ptr %89, align 4 - %93 = and i32 %92, %91 - store i32 %93, ptr %89, align 4 - %94 = getelementptr inbounds i8, ptr %89, i64 4 - %95 = load i32, ptr %94, align 4 - %96 = or i32 %95, %82 - store i32 %96, ptr %94, align 4 +89: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us + %90 = xor i32 %81, -1 + %91 = load i32, ptr %88, align 4 + %92 = and i32 %91, %90 + store i32 %92, ptr %88, align 4 + %93 = getelementptr inbounds i8, ptr %88, i64 4 + %94 = load i32, ptr %93, align 4 + %95 = or i32 %94, %81 + store i32 %95, ptr %93, align 4 br label %_ZN8V3Number6setBitEic.exit.us -97: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us - %98 = load i32, ptr %89, align 4 - %99 = or i32 %98, %82 - store i32 %99, ptr %89, align 4 - %100 = xor i32 %82, -1 - %101 = getelementptr inbounds i8, ptr %89, i64 4 - %102 = load i32, ptr %101, align 4 - %103 = and i32 %102, %100 - store i32 %103, ptr %101, align 4 +96: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us + %97 = load i32, ptr %88, align 4 + %98 = or i32 %97, %81 + store i32 %98, ptr %88, align 4 + %99 = xor i32 %81, -1 + %100 = getelementptr inbounds i8, ptr %88, i64 4 + %101 = load i32, ptr %100, align 4 + %102 = and i32 %101, %99 + store i32 %102, ptr %100, align 4 br label %_ZN8V3Number6setBitEic.exit.us -104: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us - %105 = xor i32 %82, -1 - %106 = load i32, ptr %89, align 4 - %107 = and i32 %106, %105 - store i32 %107, ptr %89, align 4 - %108 = getelementptr inbounds i8, ptr %89, i64 4 - %109 = load i32, ptr %108, align 4 - %110 = and i32 %109, %105 - store i32 %110, ptr %108, align 4 +103: ; preds = %_ZN12V3NumberData3numEv.exit.i.us, %_ZN12V3NumberData3numEv.exit.i.us + %104 = xor i32 %81, -1 + %105 = load i32, ptr %88, align 4 + %106 = and i32 %105, %104 + store i32 %106, ptr %88, align 4 + %107 = getelementptr inbounds i8, ptr %88, i64 4 + %108 = load i32, ptr %107, align 4 + %109 = and i32 %108, %104 + store i32 %109, ptr %107, align 4 br label %_ZN8V3Number6setBitEic.exit.us -111: ; preds = %_ZN12V3NumberData3numEv.exit.i.us - %112 = load i32, ptr %89, align 4 - %113 = or i32 %112, %82 - store i32 %113, ptr %89, align 4 - %114 = getelementptr inbounds i8, ptr %89, i64 4 - %115 = load i32, ptr %114, align 4 - %116 = or i32 %115, %82 - store i32 %116, ptr %114, align 4 +110: ; preds = %_ZN12V3NumberData3numEv.exit.i.us + %111 = load i32, ptr %88, align 4 + %112 = or i32 %111, %81 + store i32 %112, ptr %88, align 4 + %113 = getelementptr inbounds i8, ptr %88, i64 4 + %114 = load i32, ptr %113, align 4 + %115 = or i32 %114, %81 + store i32 %115, ptr %113, align 4 br label %_ZN8V3Number6setBitEic.exit.us -_ZN8V3Number6setBitEic.exit.us: ; preds = %111, %104, %97, %90, %_ZNK8V3Number5bitIsEi.exit.us - %117 = add nuw nsw i32 %.046.us, 1 - %exitcond.not = icmp eq i32 %117, %.sroa.speculated38 +_ZN8V3Number6setBitEic.exit.us: ; preds = %110, %103, %96, %89, %_ZNK8V3Number5bitIsEi.exit.us + %116 = add nuw nsw i32 %.046.us, 1 + %exitcond.not = icmp eq i32 %116, %.sroa.speculated38 br i1 %exitcond.not, label %_ZN8V3Number6setBitEic.exit.us..critedge.us_crit_edge, label %48, !llvm.loop !126 _ZN8V3Number6setBitEic.exit.us..critedge.us_crit_edge: ; preds = %_ZN8V3Number6setBitEic.exit.us %.pre = load i32, ptr %39, align 8 br label %.critedge.us -.split.us: ; preds = %59 - %118 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.78, i32 noundef 206, i1 noundef zeroext false) - %119 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %120 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull @.str.79) - %121 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 1 dereferenceable(1) %11) - tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %121) #31 +.split.us: ; preds = %58 + %117 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.78, i32 noundef 206, i1 noundef zeroext false) + %118 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %119 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @.str.79) + %120 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 1 dereferenceable(1) %11) + tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %120) #31 unreachable -.split51.us: ; preds = %80 - %122 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.78, i32 noundef 202, i1 noundef zeroext false) - %123 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - %124 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @.str.79) - %125 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 1 dereferenceable(1) %44) - tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %125) #31 +.split51.us: ; preds = %79 + %121 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.78, i32 noundef 202, i1 noundef zeroext false) + %122 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + %123 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull @.str.79) + %124 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN12V3NumberData16V3NumberDataTypeE(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 1 dereferenceable(1) %44) + tail call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %124) #31 unreachable ._crit_edge: ; preds = %.critedge.us, %.lr.ph49, %37 diff --git a/bench/zxing/optimized/GlobalHistogramBinarizer.cpp.ll b/bench/zxing/optimized/GlobalHistogramBinarizer.cpp.ll index 3b93c7d1f66..ebf94351096 100644 --- a/bench/zxing/optimized/GlobalHistogramBinarizer.cpp.ll +++ b/bench/zxing/optimized/GlobalHistogramBinarizer.cpp.ll @@ -210,158 +210,153 @@ _ZSt11max_elementIPKtET_S2_S2_.exit.i: ; preds = %.lr.ph.i.i.i %spec.select58.i = call i32 @llvm.smax.i32(i32 %spec.select55.i, i32 %51) %53 = sub nsw i32 %spec.select58.i, %spec.select57.i %54 = icmp slt i32 %53, 3 - br i1 %54, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %55 + br i1 %54, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %.lr.ph.preheader.i -55: ; preds = %50 - %56 = add nsw i32 %spec.select58.i, -1 - %57 = icmp sgt i32 %56, %spec.select57.i - br i1 %57, label %.lr.ph.preheader.i, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit - -.lr.ph.preheader.i: ; preds = %55 - %58 = sext i32 %56 to i64 - %59 = sext i32 %spec.select57.i to i64 +.lr.ph.preheader.i: ; preds = %50 + %55 = add nsw i32 %spec.select58.i, -1 + %56 = sext i32 %55 to i64 + %57 = sext i32 %spec.select57.i to i64 br label %.lr.ph.i9 .lr.ph.i9: ; preds = %.lr.ph.i9, %.lr.ph.preheader.i - %indvars.iv68.i = phi i64 [ %58, %.lr.ph.preheader.i ], [ %indvars.iv.next69.i, %.lr.ph.i9 ] + %indvars.iv68.i = phi i64 [ %56, %.lr.ph.preheader.i ], [ %indvars.iv.next69.i, %.lr.ph.i9 ] %.03465.i = phi i32 [ -1, %.lr.ph.preheader.i ], [ %spec.select42.i, %.lr.ph.i9 ] - %.03664.i = phi i32 [ %56, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i9 ] - %60 = trunc i64 %indvars.iv68.i to i32 - %61 = sub i32 %60, %spec.select57.i - %62 = mul nsw i32 %61, %61 - %63 = sub i32 %spec.select58.i, %60 - %64 = mul nsw i32 %62, %63 - %65 = getelementptr inbounds [32 x i16], ptr %6, i64 0, i64 %indvars.iv68.i - %66 = load i16, ptr %65, align 2 - %67 = zext i16 %66 to i32 - %68 = sub nsw i32 %52, %67 - %69 = mul nsw i32 %64, %68 - %70 = icmp sgt i32 %69, %.03465.i - %spec.select.i = select i1 %70, i32 %60, i32 %.03664.i - %spec.select42.i = call i32 @llvm.smax.i32(i32 %69, i32 %.03465.i) + %.03664.i = phi i32 [ %55, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i9 ] + %58 = trunc i64 %indvars.iv68.i to i32 + %59 = sub i32 %58, %spec.select57.i + %60 = mul nsw i32 %59, %59 + %61 = sub i32 %spec.select58.i, %58 + %62 = mul nsw i32 %60, %61 + %63 = getelementptr inbounds [32 x i16], ptr %6, i64 0, i64 %indvars.iv68.i + %64 = load i16, ptr %63, align 2 + %65 = zext i16 %64 to i32 + %66 = sub nsw i32 %52, %65 + %67 = mul nsw i32 %62, %66 + %68 = icmp sgt i32 %67, %.03465.i + %spec.select.i = select i1 %68, i32 %58, i32 %.03664.i + %spec.select42.i = call i32 @llvm.smax.i32(i32 %67, i32 %.03465.i) %indvars.iv.next69.i = add nsw i64 %indvars.iv68.i, -1 - %71 = icmp sgt i64 %indvars.iv.next69.i, %59 - br i1 %71, label %.lr.ph.i9, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit, !llvm.loop !13 + %69 = icmp sgt i64 %indvars.iv.next69.i, %57 + br i1 %69, label %.lr.ph.i9, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit, !llvm.loop !13 -_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit: ; preds = %.lr.ph.i9, %55 - %.036.lcssa.i = phi i32 [ %56, %55 ], [ %spec.select.i, %.lr.ph.i9 ] - %72 = shl i32 %.036.lcssa.i, 3 - %73 = add nsw i32 %72, -1 - %74 = icmp slt i32 %72, 2 - br i1 %74, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %75 +_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit: ; preds = %.lr.ph.i9 + %70 = shl i32 %spec.select.i, 3 + %71 = add nsw i32 %70, -1 + %72 = icmp slt i32 %70, 2 + br i1 %72, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %73 -75: ; preds = %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit +73: ; preds = %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit %.b = load i1, ptr @_ZGVZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized, align 1 - br i1 %.b, label %78, label %76, !prof !14 + br i1 %.b, label %76, label %74, !prof !14 -76: ; preds = %75 +74: ; preds = %73 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized, i8 0, i64 24, i1 false) - %77 = call i32 @__cxa_thread_atexit(ptr nonnull @_ZNSt6vectorIhSaIhEED2Ev, ptr nonnull @_ZZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized, ptr nonnull @__dso_handle) #6 + %75 = call i32 @__cxa_thread_atexit(ptr nonnull @_ZNSt6vectorIhSaIhEED2Ev, ptr nonnull @_ZZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized, ptr nonnull @__dso_handle) #6 store i1 true, ptr @_ZGVZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized, align 1 - br label %78 - -78: ; preds = %76, %75 - %79 = icmp eq i32 %15, 1 - %80 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized) - br i1 %79, label %81, label %99 - -81: ; preds = %78 - call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %19) - %82 = load ptr, ptr %80, align 8 - %83 = getelementptr inbounds i8, ptr %13, i64 1 - %84 = load i8, ptr %13, align 1 - %85 = zext i8 %84 to i32 - %.not.i12 = icmp samesign uge i32 %73, %85 - %86 = sext i1 %.not.i12 to i8 - store i8 %86, ptr %82, align 1 + br label %76 + +76: ; preds = %74, %73 + %77 = icmp eq i32 %15, 1 + %78 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZZNK5ZXing24GlobalHistogramBinarizer13getPatternRowEiiRSt6vectorItSaItEEE9binarized) + br i1 %77, label %79, label %97 + +79: ; preds = %76 + call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %19) + %80 = load ptr, ptr %78, align 8 + %81 = getelementptr inbounds i8, ptr %13, i64 1 + %82 = load i8, ptr %13, align 1 + %83 = zext i8 %82 to i32 + %.not.i12 = icmp samesign uge i32 %71, %83 + %84 = sext i1 %.not.i12 to i8 + store i8 %84, ptr %80, align 1 %.add = add nsw i64 %19, -1 %.ptr102 = getelementptr inbounds i8, ptr %13, i64 %.add - %.sroa.031.047.i = getelementptr inbounds i8, ptr %82, i64 1 + %.sroa.031.047.i = getelementptr inbounds i8, ptr %80, i64 1 %.not4448.i = icmp eq i64 %.add, 1 br i1 %.not4448.i, label %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit, label %.lr.ph.i13 -.lr.ph.i13: ; preds = %81, %.lr.ph.i13 - %.sroa.031.050.i = phi ptr [ %.sroa.031.0.i, %.lr.ph.i13 ], [ %.sroa.031.047.i, %81 ] - %.sroa.034.049.i = phi ptr [ %93, %.lr.ph.i13 ], [ %83, %81 ] - %87 = getelementptr inbounds i8, ptr %.sroa.034.049.i, i64 -1 - %88 = load i8, ptr %87, align 1 +.lr.ph.i13: ; preds = %79, %.lr.ph.i13 + %.sroa.031.050.i = phi ptr [ %.sroa.031.0.i, %.lr.ph.i13 ], [ %.sroa.031.047.i, %79 ] + %.sroa.034.049.i = phi ptr [ %91, %.lr.ph.i13 ], [ %81, %79 ] + %85 = getelementptr inbounds i8, ptr %.sroa.034.049.i, i64 -1 + %86 = load i8, ptr %85, align 1 + %87 = zext i8 %86 to i16 + %88 = load i8, ptr %.sroa.034.049.i, align 1 %89 = zext i8 %88 to i16 - %90 = load i8, ptr %.sroa.034.049.i, align 1 - %91 = zext i8 %90 to i16 - %92 = shl nuw nsw i16 %91, 2 - %93 = getelementptr inbounds i8, ptr %.sroa.034.049.i, i64 1 - %94 = load i8, ptr %93, align 1 - %95 = zext i8 %94 to i16 - %96 = add nuw nsw i16 %95, %89 - %.lhs.trunc.i = sub nsw i16 %92, %96 - %97 = sdiv i16 %.lhs.trunc.i, 2 - %.sext.i = sext i16 %97 to i32 - %.not5.i = icmp sgt i32 %72, %.sext.i - %98 = sext i1 %.not5.i to i8 - store i8 %98, ptr %.sroa.031.050.i, align 1 + %90 = shl nuw nsw i16 %89, 2 + %91 = getelementptr inbounds i8, ptr %.sroa.034.049.i, i64 1 + %92 = load i8, ptr %91, align 1 + %93 = zext i8 %92 to i16 + %94 = add nuw nsw i16 %93, %87 + %.lhs.trunc.i = sub nsw i16 %90, %94 + %95 = sdiv i16 %.lhs.trunc.i, 2 + %.sext.i = sext i16 %95 to i32 + %.not5.i = icmp sgt i32 %70, %.sext.i + %96 = sext i1 %.not5.i to i8 + store i8 %96, ptr %.sroa.031.050.i, align 1 %.sroa.031.0.i = getelementptr inbounds i8, ptr %.sroa.031.050.i, i64 1 - %.not44.i = icmp eq ptr %93, %.ptr102 + %.not44.i = icmp eq ptr %91, %.ptr102 br i1 %.not44.i, label %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit, label %.lr.ph.i13, !llvm.loop !15 -99: ; preds = %78 - %100 = sext i32 %15 to i64 - %101 = sdiv i64 %19, %100 - %sext.i19 = shl i64 %101, 32 - %102 = ashr exact i64 %sext.i19, 32 - call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %102) - %103 = load ptr, ptr %80, align 8 - %104 = getelementptr inbounds i8, ptr %13, i64 %100 - %105 = load i8, ptr %13, align 1 - %106 = zext i8 %105 to i32 - %.not.i22 = icmp samesign uge i32 %73, %106 - %107 = sext i1 %.not.i22 to i8 - store i8 %107, ptr %103, align 1 - %108 = sub nsw i64 0, %100 - %109 = getelementptr inbounds i8, ptr %.ptr, i64 %108 - %.sroa.031.047.i23 = getelementptr inbounds i8, ptr %103, i64 1 - %.not4448.i24 = icmp eq ptr %104, %109 +97: ; preds = %76 + %98 = sext i32 %15 to i64 + %99 = sdiv i64 %19, %98 + %sext.i19 = shl i64 %99, 32 + %100 = ashr exact i64 %sext.i19, 32 + call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %100) + %101 = load ptr, ptr %78, align 8 + %102 = getelementptr inbounds i8, ptr %13, i64 %98 + %103 = load i8, ptr %13, align 1 + %104 = zext i8 %103 to i32 + %.not.i22 = icmp samesign uge i32 %71, %104 + %105 = sext i1 %.not.i22 to i8 + store i8 %105, ptr %101, align 1 + %106 = sub nsw i64 0, %98 + %107 = getelementptr inbounds i8, ptr %.ptr, i64 %106 + %.sroa.031.047.i23 = getelementptr inbounds i8, ptr %101, i64 1 + %.not4448.i24 = icmp eq ptr %102, %107 br i1 %.not4448.i24, label %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit, label %.lr.ph.i25 -.lr.ph.i25: ; preds = %99 - %110 = sub nsw i32 0, %15 - %111 = sext i32 %110 to i64 - br label %112 - -112: ; preds = %112, %.lr.ph.i25 - %.sroa.031.050.i26 = phi ptr [ %.sroa.031.047.i23, %.lr.ph.i25 ], [ %.sroa.031.0.i31, %112 ] - %.sroa.034.049.i27 = phi ptr [ %104, %.lr.ph.i25 ], [ %119, %112 ] - %113 = getelementptr inbounds i8, ptr %.sroa.034.049.i27, i64 %111 - %114 = load i8, ptr %113, align 1 +.lr.ph.i25: ; preds = %97 + %108 = sub nsw i32 0, %15 + %109 = sext i32 %108 to i64 + br label %110 + +110: ; preds = %110, %.lr.ph.i25 + %.sroa.031.050.i26 = phi ptr [ %.sroa.031.047.i23, %.lr.ph.i25 ], [ %.sroa.031.0.i31, %110 ] + %.sroa.034.049.i27 = phi ptr [ %102, %.lr.ph.i25 ], [ %117, %110 ] + %111 = getelementptr inbounds i8, ptr %.sroa.034.049.i27, i64 %109 + %112 = load i8, ptr %111, align 1 + %113 = zext i8 %112 to i16 + %114 = load i8, ptr %.sroa.034.049.i27, align 1 %115 = zext i8 %114 to i16 - %116 = load i8, ptr %.sroa.034.049.i27, align 1 - %117 = zext i8 %116 to i16 - %118 = shl nuw nsw i16 %117, 2 - %119 = getelementptr inbounds i8, ptr %.sroa.034.049.i27, i64 %100 - %120 = load i8, ptr %119, align 1 - %121 = zext i8 %120 to i16 - %122 = add nuw nsw i16 %121, %115 - %.lhs.trunc.i28 = sub nsw i16 %118, %122 - %123 = sdiv i16 %.lhs.trunc.i28, 2 - %.sext.i29 = sext i16 %123 to i32 - %.not5.i30 = icmp sgt i32 %72, %.sext.i29 - %124 = sext i1 %.not5.i30 to i8 - store i8 %124, ptr %.sroa.031.050.i26, align 1 + %116 = shl nuw nsw i16 %115, 2 + %117 = getelementptr inbounds i8, ptr %.sroa.034.049.i27, i64 %98 + %118 = load i8, ptr %117, align 1 + %119 = zext i8 %118 to i16 + %120 = add nuw nsw i16 %119, %113 + %.lhs.trunc.i28 = sub nsw i16 %116, %120 + %121 = sdiv i16 %.lhs.trunc.i28, 2 + %.sext.i29 = sext i16 %121 to i32 + %.not5.i30 = icmp sgt i32 %70, %.sext.i29 + %122 = sext i1 %.not5.i30 to i8 + store i8 %122, ptr %.sroa.031.050.i26, align 1 %.sroa.031.0.i31 = getelementptr inbounds i8, ptr %.sroa.031.050.i26, i64 1 - %.not44.i32 = icmp eq ptr %119, %109 - br i1 %.not44.i32, label %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit, label %112, !llvm.loop !15 - -_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit: ; preds = %112, %.lr.ph.i13, %99, %81 - %.sroa.034.0.lcssa.i34.sink = phi ptr [ %83, %81 ], [ %104, %99 ], [ %.ptr102, %.lr.ph.i13 ], [ %109, %112 ] - %.sroa.031.0.lcssa.i35.sink = phi ptr [ %.sroa.031.047.i, %81 ], [ %.sroa.031.047.i23, %99 ], [ %.sroa.031.0.i, %.lr.ph.i13 ], [ %.sroa.031.0.i31, %112 ] - %125 = load i8, ptr %.sroa.034.0.lcssa.i34.sink, align 1 - %126 = zext i8 %125 to i32 - %.not4.i36 = icmp samesign uge i32 %73, %126 - %127 = sext i1 %.not4.i36 to i8 - store i8 %127, ptr %.sroa.031.0.lcssa.i35.sink, align 1 - %128 = load ptr, ptr %80, align 8 - %129 = getelementptr inbounds i8, ptr %80, i64 8 - %130 = load ptr, ptr %129, align 8 - call void @_ZN5ZXing13GetPatternRowIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEvNS_5RangeIT_EERS5_ItSaItEE(ptr %128, ptr %130, ptr noundef nonnull align 8 dereferenceable(24) %3) + %.not44.i32 = icmp eq ptr %117, %107 + br i1 %.not44.i32, label %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit, label %110, !llvm.loop !15 + +_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit: ; preds = %110, %.lr.ph.i13, %97, %79 + %.sroa.034.0.lcssa.i34.sink = phi ptr [ %81, %79 ], [ %102, %97 ], [ %.ptr102, %.lr.ph.i13 ], [ %107, %110 ] + %.sroa.031.0.lcssa.i35.sink = phi ptr [ %.sroa.031.047.i, %79 ], [ %.sroa.031.047.i23, %97 ], [ %.sroa.031.0.i, %.lr.ph.i13 ], [ %.sroa.031.0.i31, %110 ] + %123 = load i8, ptr %.sroa.034.0.lcssa.i34.sink, align 1 + %124 = zext i8 %123 to i32 + %.not4.i36 = icmp samesign uge i32 %71, %124 + %125 = sext i1 %.not4.i36 to i8 + store i8 %125, ptr %.sroa.031.0.lcssa.i35.sink, align 1 + %126 = load ptr, ptr %78, align 8 + %127 = getelementptr inbounds i8, ptr %78, i64 8 + %128 = load ptr, ptr %127, align 8 + call void @_ZN5ZXing13GetPatternRowIN9__gnu_cxx17__normal_iteratorIPKhSt6vectorIhSaIhEEEEEEvNS_5RangeIT_EERS5_ItSaItEE(ptr %126, ptr %128, ptr noundef nonnull align 8 dereferenceable(24) %3) br label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread _ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread: ; preds = %50, %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit, %4, %_ZN5ZXingL18ThresholdSharpenedENS_5RangeINS_10StrideIterIPKhEEEEiRSt6vectorIhSaIhEE.exit @@ -709,98 +704,93 @@ _ZSt11max_elementIPKtET_S2_S2_.exit.i: ; preds = %.lr.ph.i.i.i %spec.select58.i = call i32 @llvm.smax.i32(i32 %spec.select55.i, i32 %52) %54 = sub nsw i32 %spec.select58.i, %spec.select57.i %55 = icmp slt i32 %54, 3 - br i1 %55, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %56 + br i1 %55, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %.lr.ph.preheader.i -56: ; preds = %51 - %57 = add nsw i32 %spec.select58.i, -1 - %58 = icmp sgt i32 %57, %spec.select57.i - br i1 %58, label %.lr.ph.preheader.i, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit - -.lr.ph.preheader.i: ; preds = %56 - %59 = sext i32 %57 to i64 - %60 = sext i32 %spec.select57.i to i64 +.lr.ph.preheader.i: ; preds = %51 + %56 = add nsw i32 %spec.select58.i, -1 + %57 = sext i32 %56 to i64 + %58 = sext i32 %spec.select57.i to i64 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %indvars.iv68.i = phi i64 [ %59, %.lr.ph.preheader.i ], [ %indvars.iv.next69.i, %.lr.ph.i ] + %indvars.iv68.i = phi i64 [ %57, %.lr.ph.preheader.i ], [ %indvars.iv.next69.i, %.lr.ph.i ] %.03465.i = phi i32 [ -1, %.lr.ph.preheader.i ], [ %spec.select42.i, %.lr.ph.i ] - %.03664.i = phi i32 [ %57, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] - %61 = trunc i64 %indvars.iv68.i to i32 - %62 = sub i32 %61, %spec.select57.i - %63 = mul nsw i32 %62, %62 - %64 = sub i32 %spec.select58.i, %61 - %65 = mul nsw i32 %63, %64 - %66 = getelementptr inbounds [32 x i16], ptr %3, i64 0, i64 %indvars.iv68.i - %67 = load i16, ptr %66, align 2 - %68 = zext i16 %67 to i32 - %69 = sub nsw i32 %53, %68 - %70 = mul nsw i32 %65, %69 - %71 = icmp sgt i32 %70, %.03465.i - %spec.select.i = select i1 %71, i32 %61, i32 %.03664.i - %spec.select42.i = call i32 @llvm.smax.i32(i32 %70, i32 %.03465.i) + %.03664.i = phi i32 [ %56, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] + %59 = trunc i64 %indvars.iv68.i to i32 + %60 = sub i32 %59, %spec.select57.i + %61 = mul nsw i32 %60, %60 + %62 = sub i32 %spec.select58.i, %59 + %63 = mul nsw i32 %61, %62 + %64 = getelementptr inbounds [32 x i16], ptr %3, i64 0, i64 %indvars.iv68.i + %65 = load i16, ptr %64, align 2 + %66 = zext i16 %65 to i32 + %67 = sub nsw i32 %53, %66 + %68 = mul nsw i32 %63, %67 + %69 = icmp sgt i32 %68, %.03465.i + %spec.select.i = select i1 %69, i32 %59, i32 %.03664.i + %spec.select42.i = call i32 @llvm.smax.i32(i32 %68, i32 %.03465.i) %indvars.iv.next69.i = add nsw i64 %indvars.iv68.i, -1 - %72 = icmp sgt i64 %indvars.iv.next69.i, %60 - br i1 %72, label %.lr.ph.i, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit, !llvm.loop !13 + %70 = icmp sgt i64 %indvars.iv.next69.i, %58 + br i1 %70, label %.lr.ph.i, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit, !llvm.loop !13 -_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit: ; preds = %.lr.ph.i, %56 - %.036.lcssa.i = phi i32 [ %57, %56 ], [ %spec.select.i, %.lr.ph.i ] - %73 = shl i32 %.036.lcssa.i, 3 - %74 = icmp slt i32 %73, 1 - br i1 %74, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %75 +_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit: ; preds = %.lr.ph.i + %71 = shl i32 %spec.select.i, 3 + %72 = icmp slt i32 %71, 1 + br i1 %72, label %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread, label %73 _ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread: ; preds = %51, %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) br label %_ZN5ZXing9BitMatrixD2Ev.exit -75: ; preds = %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit - %76 = trunc i32 %73 to i8 - call void @_ZNK5ZXing12BinaryBitmap8binarizeEh(ptr dead_on_unwind nonnull writable sret(%"class.ZXing::BitMatrix") align 8 %4, ptr noundef nonnull align 8 dereferenceable(56) %1, i8 noundef zeroext %76) +73: ; preds = %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit + %74 = trunc i32 %71 to i8 + call void @_ZNK5ZXing12BinaryBitmap8binarizeEh(ptr dead_on_unwind nonnull writable sret(%"class.ZXing::BitMatrix") align 8 %4, ptr noundef nonnull align 8 dereferenceable(56) %1, i8 noundef zeroext %74) call void @llvm.experimental.noalias.scope.decl(metadata !19) - %77 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #18 - to label %78 unwind label %93 - -78: ; preds = %75 - %79 = getelementptr inbounds i8, ptr %0, i64 8 - %80 = getelementptr inbounds i8, ptr %77, i64 8 - store i32 1, ptr %80, align 8, !noalias !19 - %81 = getelementptr inbounds i8, ptr %77, i64 12 - store i32 1, ptr %81, align 4, !noalias !19 - store ptr getelementptr inbounds (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIKN5ZXing9BitMatrixESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %77, align 8, !noalias !19 - %82 = getelementptr inbounds i8, ptr %77, i64 16 - %83 = load i64, ptr %4, align 8, !noalias !19 - store i64 %83, ptr %82, align 8, !noalias !19 - %84 = getelementptr inbounds i8, ptr %77, i64 24 - %85 = getelementptr inbounds i8, ptr %4, i64 8 - %86 = load ptr, ptr %85, align 8, !noalias !19 - store ptr %86, ptr %84, align 8, !noalias !19 - %87 = getelementptr inbounds i8, ptr %77, i64 32 - %88 = getelementptr inbounds i8, ptr %4, i64 16 - %89 = load ptr, ptr %88, align 8, !noalias !19 - store ptr %89, ptr %87, align 8, !noalias !19 - %90 = getelementptr inbounds i8, ptr %77, i64 40 - %91 = getelementptr inbounds i8, ptr %4, i64 24 - %92 = load ptr, ptr %91, align 8, !noalias !19 - store ptr %92, ptr %90, align 8, !noalias !19 - store ptr %77, ptr %79, align 8, !alias.scope !19 - store ptr %82, ptr %0, align 8, !alias.scope !19 + %75 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #18 + to label %76 unwind label %91 + +76: ; preds = %73 + %77 = getelementptr inbounds i8, ptr %0, i64 8 + %78 = getelementptr inbounds i8, ptr %75, i64 8 + store i32 1, ptr %78, align 8, !noalias !19 + %79 = getelementptr inbounds i8, ptr %75, i64 12 + store i32 1, ptr %79, align 4, !noalias !19 + store ptr getelementptr inbounds (i8, ptr @_ZTVSt23_Sp_counted_ptr_inplaceIKN5ZXing9BitMatrixESaIvELN9__gnu_cxx12_Lock_policyE2EE, i64 16), ptr %75, align 8, !noalias !19 + %80 = getelementptr inbounds i8, ptr %75, i64 16 + %81 = load i64, ptr %4, align 8, !noalias !19 + store i64 %81, ptr %80, align 8, !noalias !19 + %82 = getelementptr inbounds i8, ptr %75, i64 24 + %83 = getelementptr inbounds i8, ptr %4, i64 8 + %84 = load ptr, ptr %83, align 8, !noalias !19 + store ptr %84, ptr %82, align 8, !noalias !19 + %85 = getelementptr inbounds i8, ptr %75, i64 32 + %86 = getelementptr inbounds i8, ptr %4, i64 16 + %87 = load ptr, ptr %86, align 8, !noalias !19 + store ptr %87, ptr %85, align 8, !noalias !19 + %88 = getelementptr inbounds i8, ptr %75, i64 40 + %89 = getelementptr inbounds i8, ptr %4, i64 24 + %90 = load ptr, ptr %89, align 8, !noalias !19 + store ptr %90, ptr %88, align 8, !noalias !19 + store ptr %75, ptr %77, align 8, !alias.scope !19 + store ptr %80, ptr %0, align 8, !alias.scope !19 br label %_ZN5ZXing9BitMatrixD2Ev.exit -93: ; preds = %75 - %94 = landingpad { ptr, i32 } +91: ; preds = %73 + %92 = landingpad { ptr, i32 } cleanup - %95 = getelementptr inbounds i8, ptr %4, i64 8 - %96 = load ptr, ptr %95, align 8 - %.not.i.i.i.i15 = icmp eq ptr %96, null - br i1 %.not.i.i.i.i15, label %_ZN5ZXing9BitMatrixD2Ev.exit16, label %97 + %93 = getelementptr inbounds i8, ptr %4, i64 8 + %94 = load ptr, ptr %93, align 8 + %.not.i.i.i.i15 = icmp eq ptr %94, null + br i1 %.not.i.i.i.i15, label %_ZN5ZXing9BitMatrixD2Ev.exit16, label %95 -97: ; preds = %93 - call void @_ZdlPv(ptr noundef nonnull %96) #17 +95: ; preds = %91 + call void @_ZdlPv(ptr noundef nonnull %94) #17 br label %_ZN5ZXing9BitMatrixD2Ev.exit16 -_ZN5ZXing9BitMatrixD2Ev.exit16: ; preds = %93, %97 - resume { ptr, i32 } %94 +_ZN5ZXing9BitMatrixD2Ev.exit16: ; preds = %91, %95 + resume { ptr, i32 } %92 -_ZN5ZXing9BitMatrixD2Ev.exit: ; preds = %78, %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread +_ZN5ZXing9BitMatrixD2Ev.exit: ; preds = %76, %_ZN5ZXingL18EstimateBlackPointERKSt5arrayItLm32EE.exit.thread ret void } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..4f7d0eabc4e 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/118219 # Please rebase manually # git fetch origin