diff --git a/bench/abc/optimized/cbaReadBlif.c.ll b/bench/abc/optimized/cbaReadBlif.c.ll index d0c19f9046b..bfe60d39718 100644 --- a/bench/abc/optimized/cbaReadBlif.c.ll +++ b/bench/abc/optimized/cbaReadBlif.c.ll @@ -6389,18 +6389,18 @@ Cba_ManNtk.exit.i: ; preds = %.critedge2, %Cba_Nt %.phi.trans.insert.i.i.i = getelementptr inbounds nuw i8, ptr %400, i64 80 br label %410 -410: ; preds = %495, %.lr.ph.i.i - %indvars.iv.i.i = phi i64 [ 1, %.lr.ph.i.i ], [ %indvars.iv.next.i.i, %495 ] +410: ; preds = %491, %.lr.ph.i.i + %indvars.iv.i.i = phi i64 [ 1, %.lr.ph.i.i ], [ %indvars.iv.next.i.i, %491 ] %.val11.i.i = load ptr, ptr %404, align 8 %411 = getelementptr inbounds nuw i8, ptr %.val11.i.i, i64 %indvars.iv.i.i %412 = load i8, ptr %411, align 1 %413 = add i8 %412, -90 %414 = icmp ult i8 %413, -87 - br i1 %414, label %495, label %415 + br i1 %414, label %491, label %415 415: ; preds = %410 %416 = icmp eq i8 %412, 3 - br i1 %416, label %Cba_ObjNtkId.exit.i.i.i.i, label %460 + br i1 %416, label %Cba_ObjNtkId.exit.i.i.i.i, label %Cba_ObjIsSeq.exit.i.i Cba_ObjNtkId.exit.i.i.i.i: ; preds = %415 %.val5.i.i.i.i.i = load i32, ptr %405, align 4 @@ -6500,100 +6500,93 @@ Vec_IntFillExtra.exit.i: ; preds = %._crit_edge.i.i, %C %454 = load ptr, ptr %453, align 8 %455 = getelementptr inbounds nuw i8, ptr %454, i64 20 %456 = load i8, ptr %455, align 4 - %457 = lshr i8 %456, 2 - %458 = and i8 %457, 1 - %459 = zext nneg i8 %458 to i32 - br label %Cba_ObjIsSeq.exit.i.i - -460: ; preds = %415 - %461 = add nsw i8 %412, -76 - %462 = icmp ult i8 %461, 12 - %463 = zext i1 %462 to i32 - br label %Cba_ObjIsSeq.exit.i.i - -Cba_ObjIsSeq.exit.i.i: ; preds = %460, %Vec_IntFillExtra.exit.i - %464 = phi i32 [ %459, %Vec_IntFillExtra.exit.i ], [ %463, %460 ] - %.not10.i.i = icmp eq i32 %464, 0 - br i1 %.not10.i.i, label %495, label %465 - -465: ; preds = %Cba_ObjIsSeq.exit.i.i - %466 = load i32, ptr %409, align 4 - %467 = load i32, ptr %408, align 8 - %468 = icmp eq i32 %466, %467 - br i1 %468, label %469, label %.Vec_IntGrow.exit10_crit_edge.i.i.i - -.Vec_IntGrow.exit10_crit_edge.i.i.i: ; preds = %465 + %457 = and i8 %456, 4 + %458 = icmp eq i8 %457, 0 + br i1 %458, label %491, label %461 + +Cba_ObjIsSeq.exit.i.i: ; preds = %415 + %459 = add nsw i8 %412, -88 + %460 = icmp ult i8 %459, -12 + br i1 %460, label %491, label %461 + +461: ; preds = %Cba_ObjIsSeq.exit.i.i, %Vec_IntFillExtra.exit.i + %462 = load i32, ptr %409, align 4 + %463 = load i32, ptr %408, align 8 + %464 = icmp eq i32 %462, %463 + br i1 %464, label %465, label %.Vec_IntGrow.exit10_crit_edge.i.i.i + +.Vec_IntGrow.exit10_crit_edge.i.i.i: ; preds = %461 %.pre.i.i.i = load ptr, ptr %.phi.trans.insert.i.i.i, align 8 br label %Vec_IntPush.exit.i.i -469: ; preds = %465 - %470 = icmp slt i32 %466, 16 - br i1 %470, label %471, label %478 +465: ; preds = %461 + %466 = icmp slt i32 %462, 16 + br i1 %466, label %467, label %474 -471: ; preds = %469 - %472 = load ptr, ptr %.phi.trans.insert.i.i.i, align 8 - %.not9.i.i.i.i = icmp eq ptr %472, null - br i1 %.not9.i.i.i.i, label %475, label %473 +467: ; preds = %465 + %468 = load ptr, ptr %.phi.trans.insert.i.i.i, align 8 + %.not9.i.i.i.i = icmp eq ptr %468, null + br i1 %.not9.i.i.i.i, label %471, label %469 -473: ; preds = %471 - %474 = call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %472, i64 noundef 64) #21 +469: ; preds = %467 + %470 = call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %468, i64 noundef 64) #21 br label %Vec_IntGrow.exit.i.i.i -475: ; preds = %471 - %476 = call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 +471: ; preds = %467 + %472 = call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #19 br label %Vec_IntGrow.exit.i.i.i -Vec_IntGrow.exit.i.i.i: ; preds = %475, %473 - %477 = phi ptr [ %474, %473 ], [ %476, %475 ] - store ptr %477, ptr %.phi.trans.insert.i.i.i, align 8 +Vec_IntGrow.exit.i.i.i: ; preds = %471, %469 + %473 = phi ptr [ %470, %469 ], [ %472, %471 ] + store ptr %473, ptr %.phi.trans.insert.i.i.i, align 8 store i32 16, ptr %408, align 8 br label %Vec_IntPush.exit.i.i -478: ; preds = %469 - %479 = shl nuw nsw i32 %466, 1 - %480 = load ptr, ptr %.phi.trans.insert.i.i.i, align 8 - %.not9.i9.i.i.i = icmp eq ptr %480, null - %481 = zext nneg i32 %479 to i64 - %482 = shl nuw nsw i64 %481, 2 - br i1 %.not9.i9.i.i.i, label %485, label %483 - -483: ; preds = %478 - %484 = call ptr @realloc(ptr noundef nonnull %480, i64 noundef %482) #21 - br label %487 - -485: ; preds = %478 - %486 = call noalias ptr @malloc(i64 noundef %482) #19 - br label %487 - -487: ; preds = %485, %483 - %488 = phi ptr [ %484, %483 ], [ %486, %485 ] - store ptr %488, ptr %.phi.trans.insert.i.i.i, align 8 - store i32 %479, ptr %408, align 8 +474: ; preds = %465 + %475 = shl nuw nsw i32 %462, 1 + %476 = load ptr, ptr %.phi.trans.insert.i.i.i, align 8 + %.not9.i9.i.i.i = icmp eq ptr %476, null + %477 = zext nneg i32 %475 to i64 + %478 = shl nuw nsw i64 %477, 2 + br i1 %.not9.i9.i.i.i, label %481, label %479 + +479: ; preds = %474 + %480 = call ptr @realloc(ptr noundef nonnull %476, i64 noundef %478) #21 + br label %483 + +481: ; preds = %474 + %482 = call noalias ptr @malloc(i64 noundef %478) #19 + br label %483 + +483: ; preds = %481, %479 + %484 = phi ptr [ %480, %479 ], [ %482, %481 ] + store ptr %484, ptr %.phi.trans.insert.i.i.i, align 8 + store i32 %475, ptr %408, align 8 br label %Vec_IntPush.exit.i.i -Vec_IntPush.exit.i.i: ; preds = %487, %Vec_IntGrow.exit.i.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i.i - %489 = phi ptr [ %.pre.i.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i.i ], [ %488, %487 ], [ %477, %Vec_IntGrow.exit.i.i.i ] - %490 = load i32, ptr %409, align 4 - %491 = add nsw i32 %490, 1 - store i32 %491, ptr %409, align 4 - %492 = sext i32 %490 to i64 - %493 = getelementptr inbounds i32, ptr %489, i64 %492 - %494 = trunc nuw nsw i64 %indvars.iv.i.i to i32 - store i32 %494, ptr %493, align 4 - br label %495 - -495: ; preds = %Vec_IntPush.exit.i.i, %Cba_ObjIsSeq.exit.i.i, %410 +Vec_IntPush.exit.i.i: ; preds = %483, %Vec_IntGrow.exit.i.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i.i + %485 = phi ptr [ %.pre.i.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i.i ], [ %484, %483 ], [ %473, %Vec_IntGrow.exit.i.i.i ] + %486 = load i32, ptr %409, align 4 + %487 = add nsw i32 %486, 1 + store i32 %487, ptr %409, align 4 + %488 = sext i32 %486 to i64 + %489 = getelementptr inbounds i32, ptr %485, i64 %488 + %490 = trunc nuw nsw i64 %indvars.iv.i.i to i32 + store i32 %490, ptr %489, align 4 + br label %491 + +491: ; preds = %Vec_IntPush.exit.i.i, %Cba_ObjIsSeq.exit.i.i, %Vec_IntFillExtra.exit.i, %410 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %.val.i6.i = load i32, ptr %402, align 4 - %496 = sext i32 %.val.i6.i to i64 - %497 = icmp slt i64 %indvars.iv.next.i.i, %496 - br i1 %497, label %410, label %Cba_NtkPrepareSeq.exit.i, !llvm.loop !33 + %492 = sext i32 %.val.i6.i to i64 + %493 = icmp slt i64 %indvars.iv.next.i.i, %492 + br i1 %493, label %410, label %Cba_NtkPrepareSeq.exit.i, !llvm.loop !33 -Cba_NtkPrepareSeq.exit.i: ; preds = %495, %.preheader.i.i, %Cba_ManNtk.exit.i +Cba_NtkPrepareSeq.exit.i: ; preds = %491, %.preheader.i.i, %Cba_ManNtk.exit.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %.val.i62 = load i32, ptr %51, align 4 - %498 = sext i32 %.val.i62 to i64 - %.not.not.i = icmp slt i64 %indvars.iv.next.i, %498 + %494 = sext i32 %.val.i62 to i64 + %.not.not.i = icmp slt i64 %indvars.iv.next.i, %494 br i1 %.not.not.i, label %Cba_ManNtk.exit.i, label %Cba_ManPrepareSeq.exit, !llvm.loop !34 Cba_ManPrepareSeq.exit: ; preds = %Cba_NtkPrepareSeq.exit.i, %.critedge2 diff --git a/bench/abc/optimized/cmdUtils.c.ll b/bench/abc/optimized/cmdUtils.c.ll index 9e345b73aa4..85ded639110 100644 --- a/bench/abc/optimized/cmdUtils.c.ll +++ b/bench/abc/optimized/cmdUtils.c.ll @@ -579,11 +579,10 @@ define range(i32 0, 2) i32 @CmdApplyAlias(ptr noundef %0, ptr nocapture noundef 12: ; preds = %.lr.ph187, %._crit_edge181 %.0185 = phi ptr [ %9, %.lr.ph187 ], [ %.2.lcssa, %._crit_edge181 ] - %.0110184 = phi i32 [ 0, %.lr.ph187 ], [ %spec.select, %._crit_edge181 ] + %.0110184 = phi i1 [ true, %.lr.ph187 ], [ %26, %._crit_edge181 ] %.0112183 = phi i32 [ %10, %.lr.ph187 ], [ %.2114.lcssa, %._crit_edge181 ] %13 = icmp ne i32 %.0112183, 0 - %.not = icmp eq i32 %.0110184, 0 - %or.cond = select i1 %13, i1 %.not, i1 false + %or.cond = select i1 %13, i1 %.0110184, i1 false br i1 %or.cond, label %14, label %.loopexit154 14: ; preds = %12 @@ -600,8 +599,7 @@ define range(i32 0, 2) i32 @CmdApplyAlias(ptr noundef %0, ptr nocapture noundef %23 = load ptr, ptr %22, align 8 %24 = load ptr, ptr %23, align 8 %25 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %20, ptr noundef nonnull dereferenceable(1) %24) #25 - %26 = icmp eq i32 %25, 0 - %spec.select = zext i1 %26 to i32 + %26 = icmp ne i32 %25, 0 %.not129 = icmp eq ptr %20, null br i1 %.not129, label %28, label %27 diff --git a/bench/abc/optimized/cuddApa.c.ll b/bench/abc/optimized/cuddApa.c.ll index 4935345bad5..e961d90a692 100644 --- a/bench/abc/optimized/cuddApa.c.ll +++ b/bench/abc/optimized/cuddApa.c.ll @@ -619,7 +619,7 @@ define range(i32 0, 2) i32 @Cudd_ApaPrintDecimal(ptr nocapture noundef %0, i32 n %8 = shl nsw i64 %7, 2 %9 = tail call noalias noundef ptr @malloc(i64 noundef %8) #17 %10 = icmp eq ptr %9, null - br i1 %10, label %46, label %11 + br i1 %10, label %43, label %11 11: ; preds = %3 %12 = add i32 %6, 1 @@ -646,7 +646,7 @@ Cudd_ApaCopy.exit.thread: ; preds = %16 ._crit_edge.thread67: ; preds = %Cudd_ApaCopy.exit.thread %21 = zext i32 %12 to i64 tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %14, i8 0, i64 %21, i1 false) - br label %.lr.ph57.preheader + br label %.lr.ph58.preheader .lr.ph.i44.us.preheader: ; preds = %Cudd_ApaCopy.exit %wide.trip.count.i45 = zext nneg i32 %1 to i64 @@ -679,53 +679,51 @@ Cudd_ApaCopy.exit.thread: ; preds = %16 store i8 %32, ptr %33, align 1 %indvars.iv.next = add nsw i64 %indvars.iv, -1 %34 = icmp sgt i64 %indvars.iv, 0 - br i1 %34, label %.lr.ph.i44.us, label %.lr.ph57.preheader, !llvm.loop !15 + br i1 %34, label %.lr.ph.i44.us, label %.lr.ph58.preheader, !llvm.loop !15 ._crit_edge.thread: ; preds = %Cudd_ApaCopy.exit.thread, %Cudd_ApaCopy.exit tail call void @free(ptr noundef nonnull %9) #18 br label %.sink.split -.lr.ph57.preheader: ; preds = %._crit_edge.loopexit.i.us, %._crit_edge.thread67 +.lr.ph58.preheader: ; preds = %._crit_edge.loopexit.i.us, %._crit_edge.thread67 tail call void @free(ptr noundef nonnull %9) #18 %35 = zext nneg i32 %6 to i64 %wide.trip.count = zext i32 %12 to i64 - br label %.lr.ph57 + br label %.lr.ph58 -.lr.ph57: ; preds = %.lr.ph57.preheader, %44 - %indvars.iv62 = phi i64 [ 0, %.lr.ph57.preheader ], [ %indvars.iv.next63, %44 ] - %.03855 = phi i32 [ 1, %.lr.ph57.preheader ], [ %45, %44 ] - %.not42 = icmp eq i32 %.03855, 0 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %14, i64 %indvars.iv62 +.lr.ph58: ; preds = %.lr.ph58.preheader, %42 + %indvars.iv63 = phi i64 [ 0, %.lr.ph58.preheader ], [ %indvars.iv.next64, %42 ] + %.03856 = phi i1 [ false, %.lr.ph58.preheader ], [ %.not4351, %42 ] + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %14, i64 %indvars.iv63 %.pre = load i8, ptr %.phi.trans.insert, align 1 - br i1 %.not42, label %.thread, label %36 - -36: ; preds = %.lr.ph57 - %37 = icmp eq i8 %.pre, 0 - %38 = zext i1 %37 to i32 - %39 = icmp ne i64 %indvars.iv62, %35 - %or.cond.not = select i1 %37, i1 %39, i1 false - br i1 %or.cond.not, label %44, label %.thread - -.thread: ; preds = %.lr.ph57, %36 - %40 = phi i32 [ %38, %36 ], [ 0, %.lr.ph57 ] - %41 = zext i8 %.pre to i32 - %42 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.1, i32 noundef %41) #18 - %43 = icmp eq i32 %42, -1 - br i1 %43, label %.sink.split, label %44 - -44: ; preds = %36, %.thread - %45 = phi i32 [ %38, %36 ], [ %40, %.thread ] - %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next63, %wide.trip.count - br i1 %exitcond.not, label %.sink.split, label %.lr.ph57, !llvm.loop !16 - -.sink.split: ; preds = %44, %.thread, %._crit_edge.thread, %11 - %.sink = phi ptr [ %9, %11 ], [ %14, %._crit_edge.thread ], [ %14, %.thread ], [ %14, %44 ] - %.0.ph = phi i32 [ 0, %11 ], [ 1, %._crit_edge.thread ], [ 1, %44 ], [ 0, %.thread ] + br i1 %.03856, label %.thread, label %36 + +36: ; preds = %.lr.ph58 + %37 = icmp ne i8 %.pre, 0 + %38 = icmp eq i64 %indvars.iv63, %35 + %or.cond = select i1 %37, i1 true, i1 %38 + br i1 %or.cond, label %.thread, label %42 + +.thread: ; preds = %.lr.ph58, %36 + %.not4352 = phi i1 [ %37, %36 ], [ true, %.lr.ph58 ] + %39 = zext i8 %.pre to i32 + %40 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %0, ptr noundef nonnull @.str.1, i32 noundef %39) #18 + %41 = icmp eq i32 %40, -1 + br i1 %41, label %.sink.split, label %42 + +42: ; preds = %36, %.thread + %.not4351 = phi i1 [ false, %36 ], [ %.not4352, %.thread ] + %indvars.iv.next64 = add nuw nsw i64 %indvars.iv63, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next64, %wide.trip.count + br i1 %exitcond.not, label %.sink.split, label %.lr.ph58, !llvm.loop !16 + +.sink.split: ; preds = %42, %.thread, %._crit_edge.thread, %11 + %.sink = phi ptr [ %9, %11 ], [ %14, %._crit_edge.thread ], [ %14, %.thread ], [ %14, %42 ] + %.0.ph = phi i32 [ 0, %11 ], [ 1, %._crit_edge.thread ], [ 1, %42 ], [ 0, %.thread ] tail call void @free(ptr noundef nonnull %.sink) #18 - br label %46 + br label %43 -46: ; preds = %.sink.split, %3 +43: ; preds = %.sink.split, %3 %.0 = phi i32 [ 0, %3 ], [ %.0.ph, %.sink.split ] ret i32 %.0 } diff --git a/bench/abc/optimized/mvcUtils.c.ll b/bench/abc/optimized/mvcUtils.c.ll index b1532f4f6cc..2361b04cf92 100644 --- a/bench/abc/optimized/mvcUtils.c.ll +++ b/bench/abc/optimized/mvcUtils.c.ll @@ -813,13 +813,13 @@ Mvc_CoverSupport.exit50: ; preds = %60, %55, %.loopexit %81 = getelementptr inbounds nuw i8, ptr %77, i64 16 switch i32 %80, label %.preheader [ i32 0, label %84 - i32 1, label %91 + i32 1, label %92 ] .preheader: ; preds = %Mvc_CoverSupport.exit50 %82 = load ptr, ptr %3, align 8 %83 = getelementptr inbounds nuw i8, ptr %82, i64 16 - br label %110 + br label %106 84: ; preds = %Mvc_CoverSupport.exit50 %85 = load i32, ptr %81, align 8 @@ -828,51 +828,48 @@ Mvc_CoverSupport.exit50: ; preds = %60, %55, %.loopexit %88 = load i32, ptr %87, align 8 %89 = xor i32 %88, -1 %90 = and i32 %85, %89 + %91 = icmp eq i32 %90, 0 br label %.loopexit -91: ; preds = %Mvc_CoverSupport.exit50 - %92 = load i32, ptr %81, align 8 - %93 = load ptr, ptr %3, align 8 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 16 - %95 = load i32, ptr %94, align 8 - %96 = xor i32 %95, -1 - %97 = and i32 %92, %96 - %.not23 = icmp eq i32 %97, 0 - br i1 %.not23, label %98, label %.loopexit - -98: ; preds = %91 - %99 = getelementptr inbounds nuw i8, ptr %77, i64 20 - %100 = load i32, ptr %99, align 4 - %101 = getelementptr inbounds nuw i8, ptr %93, i64 20 - %102 = load i32, ptr %101, align 4 - %103 = xor i32 %102, -1 - %104 = and i32 %100, %103 - %105 = icmp ne i32 %104, 0 - %106 = zext i1 %105 to i32 +92: ; preds = %Mvc_CoverSupport.exit50 + %93 = load i32, ptr %81, align 8 + %94 = load ptr, ptr %3, align 8 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 16 + %96 = load i32, ptr %95, align 8 + %97 = xor i32 %96, -1 + %98 = and i32 %93, %97 + %.not23 = icmp eq i32 %98, 0 + br i1 %.not23, label %99, label %.loopexit + +99: ; preds = %92 + %100 = getelementptr inbounds nuw i8, ptr %77, i64 20 + %101 = load i32, ptr %100, align 4 + %102 = getelementptr inbounds nuw i8, ptr %94, i64 20 + %103 = load i32, ptr %102, align 4 + %104 = xor i32 %103, -1 + %105 = and i32 %101, %104 + %.not51 = icmp eq i32 %105, 0 br label %.loopexit -107: ; preds = %110 - %108 = add nsw i32 %.055, -1 - %109 = icmp sgt i32 %.055, 0 - br i1 %109, label %110, label %.loopexit, !llvm.loop !15 - -110: ; preds = %.preheader, %107 - %.055 = phi i32 [ %80, %.preheader ], [ %108, %107 ] - %111 = zext nneg i32 %.055 to i64 - %112 = getelementptr inbounds nuw [1 x i32], ptr %81, i64 0, i64 %111 - %113 = load i32, ptr %112, align 4 - %114 = getelementptr inbounds nuw [1 x i32], ptr %83, i64 0, i64 %111 - %115 = load i32, ptr %114, align 4 - %116 = xor i32 %115, -1 - %117 = and i32 %113, %116 - %.not = icmp eq i32 %117, 0 - br i1 %.not, label %107, label %.loopexit - -.loopexit: ; preds = %110, %107, %91, %98, %84 - %.021 = phi i32 [ %90, %84 ], [ 1, %91 ], [ %106, %98 ], [ 1, %110 ], [ 0, %107 ] - %.not24 = icmp eq i32 %.021, 0 - %118 = zext i1 %.not24 to i32 - ret i32 %118 +106: ; preds = %106, %.preheader + %.056 = phi i32 [ %80, %.preheader ], [ %114, %106 ] + %107 = zext nneg i32 %.056 to i64 + %108 = getelementptr inbounds nuw [1 x i32], ptr %81, i64 0, i64 %107 + %109 = load i32, ptr %108, align 4 + %110 = getelementptr inbounds nuw [1 x i32], ptr %83, i64 0, i64 %107 + %111 = load i32, ptr %110, align 4 + %112 = xor i32 %111, -1 + %113 = and i32 %109, %112 + %.not = icmp eq i32 %113, 0 + %114 = add nsw i32 %.056, -1 + %115 = icmp sgt i32 %.056, 0 + %or.cond = and i1 %.not, %115 + br i1 %or.cond, label %106, label %.loopexit, !llvm.loop !15 + +.loopexit: ; preds = %106, %92, %99, %84 + %.021 = phi i1 [ %91, %84 ], [ false, %92 ], [ %.not51, %99 ], [ %.not, %106 ] + %116 = zext i1 %.021 to i32 + ret i32 %116 } ; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/clamav/optimized/dlp.c.ll b/bench/clamav/optimized/dlp.c.ll index 07abdcb208e..ae2fb95e36e 100644 --- a/bench/clamav/optimized/dlp.c.ll +++ b/bench/clamav/optimized/dlp.c.ll @@ -239,26 +239,25 @@ get_iin.exit: ; preds = %52, %.lr.ph.split.u .lr.ph120: ; preds = %.thread91, %.lr.ph120 %.068119 = phi i64 [ %.068, %.lr.ph120 ], [ %.068116, %.thread91 ] - %.071118 = phi i32 [ %110, %.lr.ph120 ], [ 0, %.thread91 ] - %.072117 = phi i32 [ %109, %.lr.ph120 ], [ 0, %.thread91 ] + %.071118 = phi i32 [ %109, %.lr.ph120 ], [ 0, %.thread91 ] + %.072117 = phi i1 [ %110, %.lr.ph120 ], [ true, %.thread91 ] %102 = getelementptr inbounds nuw [20 x i8], ptr %4, i64 0, i64 %.068119 %103 = load i8, ptr %102, align 1 %104 = sext i8 %103 to i32 %105 = add nsw i32 %104, -48 - %.not85 = icmp eq i32 %.072117, 0 %106 = shl nsw i32 %105, 1 %107 = icmp sgt i8 %103, 52 %108 = add nsw i32 %106, -9 %spec.select88 = select i1 %107, i32 %108, i32 %106 - %.067 = select i1 %.not85, i32 %105, i32 %spec.select88 - %109 = xor i32 %.072117, 1 - %110 = add nsw i32 %.067, %.071118 + %.067 = select i1 %.072117, i32 %105, i32 %spec.select88 + %109 = add nsw i32 %.067, %.071118 + %110 = xor i1 %.072117, true %.068 = add nsw i64 %.068119, -1 %.not145 = icmp eq i64 %.068119, 0 br i1 %.not145, label %._crit_edge121, label %.lr.ph120 ._crit_edge121: ; preds = %.lr.ph120 - %111 = srem i32 %110, 10 + %111 = srem i32 %109, 10 %112 = icmp eq i32 %111, 0 br i1 %112, label %.thread.sink.split, label %.thread diff --git a/bench/cmake/optimized/archive_read_support_format_zip.c.ll b/bench/cmake/optimized/archive_read_support_format_zip.c.ll index d64339f83ac..3607e86bb7b 100644 --- a/bench/cmake/optimized/archive_read_support_format_zip.c.ll +++ b/bench/cmake/optimized/archive_read_support_format_zip.c.ll @@ -1996,10 +1996,10 @@ zip_get_local_file_header_size.exit.i: ; preds = %370, %369, %367 %387 = getelementptr inbounds nuw i8, ptr %320, i64 224 br label %388 -388: ; preds = %430, %.lr.ph.i73 - %.085125.i = phi ptr [ %351, %.lr.ph.i73 ], [ %.1.i75, %430 ] - %.091123.i = phi i64 [ %378, %.lr.ph.i73 ], [ %432, %430 ] - %.092122.i = phi i64 [ %379, %.lr.ph.i73 ], [ %.193.i, %430 ] +388: ; preds = %431, %.lr.ph.i73 + %.085125.i = phi ptr [ %351, %.lr.ph.i73 ], [ %.1.i75, %431 ] + %.091123.i = phi i64 [ %378, %.lr.ph.i73 ], [ %433, %431 ] + %.092122.i = phi i64 [ %379, %.lr.ph.i73 ], [ %.193.i, %431 ] %389 = call ptr @__archive_read_ahead(ptr noundef %0, i64 noundef 1, ptr noundef nonnull %3) #21 %390 = icmp eq ptr %389, null br i1 %390, label %391, label %392 @@ -2020,7 +2020,7 @@ zip_get_local_file_header_size.exit.i: ; preds = %370, %369, %367 396: ; preds = %395, %392 %397 = phi i64 [ %.091123.i, %395 ], [ %393, %392 ] %398 = load i8, ptr %322, align 8 - switch i8 %398, label %430 [ + switch i8 %398, label %431 [ i8 0, label %399 i8 8, label %408 ] @@ -2039,9 +2039,8 @@ zip_get_local_file_header_size.exit.i: ; preds = %370, %369, %367 %404 = load i64, ptr %3, align 8 %405 = sub i64 %.092122.i, %404 %406 = getelementptr inbounds i8, ptr %.085125.i, i64 %404 - %407 = icmp eq i64 %405, 0 - %spec.select110.i = zext i1 %407 to i32 - br label %430 + %407 = icmp ne i64 %405, 0 + br label %431 408: ; preds = %396 %409 = load i8, ptr %380, align 1 @@ -2106,29 +2105,29 @@ zip_deflate_init.exit.i: ; preds = %416 %427 = load i64, ptr %387, align 8 %428 = sub i64 %.092122.i, %427 %429 = getelementptr inbounds i8, ptr %.085125.i, i64 %427 - br label %430 + %430 = icmp eq i32 %422, 0 + br label %431 -430: ; preds = %425, %402, %396 +431: ; preds = %425, %402, %396 %.193.i = phi i64 [ %428, %425 ], [ %405, %402 ], [ %.092122.i, %396 ] - %.187.i = phi i32 [ %422, %425 ], [ %spec.select110.i, %402 ], [ 0, %396 ] + %.187.i = phi i1 [ %430, %425 ], [ %407, %402 ], [ true, %396 ] %.1.i75 = phi ptr [ %429, %425 ], [ %406, %402 ], [ %.085125.i, %396 ] %.084.i = phi i64 [ %426, %425 ], [ %404, %402 ], [ 0, %396 ] - %431 = call i64 @__archive_read_consume(ptr noundef %0, i64 noundef %.084.i) #21 - %432 = sub i64 %.091123.i, %.084.i - %.not108.i = icmp eq i32 %.187.i, 0 - %433 = icmp ne i64 %432, 0 - %434 = select i1 %.not108.i, i1 %433, i1 false - br i1 %434, label %388, label %._crit_edge.loopexit.i, !llvm.loop !13 - -._crit_edge.loopexit.i: ; preds = %430 + %432 = call i64 @__archive_read_consume(ptr noundef %0, i64 noundef %.084.i) #21 + %433 = sub i64 %.091123.i, %.084.i + %434 = icmp ne i64 %433, 0 + %435 = select i1 %.187.i, i1 %434, i1 false + br i1 %435, label %388, label %._crit_edge.loopexit.i, !llvm.loop !13 + +._crit_edge.loopexit.i: ; preds = %431 %.pre132.i = load i64, ptr %342, align 8 br label %._crit_edge.i76 ._crit_edge.i76: ; preds = %._crit_edge.loopexit.i, %zip_get_local_file_header_size.exit.i - %435 = phi i64 [ %379, %zip_get_local_file_header_size.exit.i ], [ %.pre132.i, %._crit_edge.loopexit.i ] + %436 = phi i64 [ %379, %zip_get_local_file_header_size.exit.i ], [ %.pre132.i, %._crit_edge.loopexit.i ] %.092.lcssa.i = phi i64 [ %379, %zip_get_local_file_header_size.exit.i ], [ %.193.i, %._crit_edge.loopexit.i ] - %436 = sub i64 %435, %.092.lcssa.i - call void @archive_entry_copy_mac_metadata(ptr noundef %1, ptr noundef nonnull %351, i64 noundef %436) #21 + %437 = sub i64 %436, %.092.lcssa.i + call void @archive_entry_copy_mac_metadata(ptr noundef %1, ptr noundef nonnull %351, i64 noundef %437) #21 br label %zip_read_mac_metadata.exit zip_read_mac_metadata.exit.thread: ; preds = %compression_name.exit.i, %344, %349, %353, %329 @@ -2138,9 +2137,9 @@ zip_read_mac_metadata.exit.thread: ; preds = %compression_name.ex zip_read_mac_metadata.exit: ; preds = %391, %zip_deflate_init.exit.i, %423, %424, %._crit_edge.i76 %spec.select = phi i32 [ -20, %391 ], [ -30, %zip_deflate_init.exit.i ], [ -30, %424 ], [ -30, %423 ], [ 0, %._crit_edge.i76 ] - %437 = call i64 @__archive_read_seek(ptr noundef %0, i64 noundef %321, i32 noundef 0) #21 - %438 = getelementptr inbounds nuw i8, ptr %320, i64 161 - store i8 0, ptr %438, align 1 + %438 = call i64 @__archive_read_seek(ptr noundef %0, i64 noundef %321, i32 noundef 0) #21 + %439 = getelementptr inbounds nuw i8, ptr %320, i64 161 + store i8 0, ptr %439, align 1 call void @free(ptr noundef %351) #21 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) br label %.thread diff --git a/bench/cmake/optimized/zstd_compress_literals.c.ll b/bench/cmake/optimized/zstd_compress_literals.c.ll index 913fb841557..185baf4829b 100644 --- a/bench/cmake/optimized/zstd_compress_literals.c.ll +++ b/bench/cmake/optimized/zstd_compress_literals.c.ll @@ -113,7 +113,7 @@ define dso_local i64 @ZSTD_compressLiterals(ptr noundef %0, i64 noundef %1, ptr %16 = icmp ugt i64 %3, 16383 %17 = zext i1 %16 to i64 %18 = add nuw nsw i64 %15, %17 - %19 = icmp ult i64 %3, 256 + %19 = icmp ugt i64 %3, 255 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %7, ptr noundef nonnull align 8 dereferenceable(2064) %6, i64 2064, i1 false) %.not = icmp eq i32 %9, 0 br i1 %.not, label %40, label %20 @@ -130,7 +130,7 @@ define dso_local i64 @ZSTD_compressLiterals(ptr noundef %0, i64 noundef %1, ptr br i1 %28, label %ZSTD_noCompressLiterals.exit, label %29 29: ; preds = %20 - switch i32 %25, label %default.unreachable117 [ + switch i32 %25, label %default.unreachable118 [ i32 1, label %30 i32 2, label %32 i32 3, label %35 @@ -156,7 +156,7 @@ define dso_local i64 @ZSTD_compressLiterals(ptr noundef %0, i64 noundef %1, ptr store i32 %37, ptr %0, align 1 br label %38 -default.unreachable117: ; preds = %130, %105, %59, %29 +default.unreachable118: ; preds = %130, %105, %59, %29 unreachable 38: ; preds = %35, %32, %30 @@ -169,10 +169,10 @@ default.unreachable117: ; preds = %130, %105, %59, %29 %42 = load i32, ptr %41, align 8 %43 = sub nsw i32 9, %8 %44 = tail call i32 @llvm.smin.i32(i32 %43, i32 3) - %45 = icmp eq i32 %42, 2 + %45 = icmp ne i32 %42, 2 %46 = zext nneg i32 %44 to i64 %47 = shl i64 8, %46 - %48 = select i1 %45, i64 6, i64 %47 + %48 = select i1 %45, i64 %47, i64 6 %49 = icmp ult i64 %3, %48 br i1 %49, label %50, label %70 @@ -188,7 +188,7 @@ default.unreachable117: ; preds = %130, %105, %59, %29 br i1 %58, label %ZSTD_noCompressLiterals.exit, label %59 59: ; preds = %50 - switch i32 %55, label %default.unreachable117 [ + switch i32 %55, label %default.unreachable118 [ i32 1, label %60 i32 2, label %62 i32 3, label %65 @@ -238,10 +238,10 @@ default.unreachable117: ; preds = %130, %105, %59, %29 %80 = or disjoint i32 %76, %78 %81 = or disjoint i32 %80, %79 %82 = or disjoint i32 %81, %72 - %83 = icmp eq i64 %18, 3 - %or.cond = select i1 %45, i1 %83, i1 false - %narrow = or i1 %19, %or.cond - %84 = select i1 %narrow, ptr @HUF_compress1X_repeat, ptr @HUF_compress4X_repeat + %83 = icmp ne i64 %18, 3 + %or.cond.not = select i1 %45, i1 true, i1 %83 + %spec.select = and i1 %19, %or.cond.not + %84 = select i1 %spec.select, ptr @HUF_compress4X_repeat, ptr @HUF_compress1X_repeat %85 = getelementptr inbounds nuw i8, ptr %0, i64 %18 %86 = sub nuw i64 %1, %18 %87 = call i64 %84(ptr noundef nonnull %85, i64 noundef %86, ptr noundef %2, i64 noundef %3, i32 noundef 255, i32 noundef 11, ptr noundef %4, i64 noundef %5, ptr noundef nonnull %7, ptr noundef nonnull %13, i32 noundef %82) #5, !callees !5 @@ -252,13 +252,13 @@ default.unreachable117: ; preds = %130, %105, %59, %29 %90 = add i32 %89, -1 %91 = zext nneg i32 %90 to i64 %92 = lshr i64 %3, %91 - %.neg116 = add i64 %3, -2 - %93 = sub i64 %.neg116, %92 + %.neg117 = add i64 %3, -2 + %93 = sub i64 %.neg117, %92 %.not97 = icmp ult i64 %87, %93 %94 = add i64 %87, -1 %95 = icmp ult i64 %94, -120 - %or.cond115 = select i1 %95, i1 %.not97, i1 false - br i1 %or.cond115, label %116, label %96 + %or.cond = select i1 %95, i1 %.not97, i1 false + br i1 %or.cond, label %116, label %96 96: ; preds = %71 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %7, ptr noundef nonnull align 8 dereferenceable(2064) %6, i64 2064, i1 false) @@ -273,7 +273,7 @@ default.unreachable117: ; preds = %130, %105, %59, %29 br i1 %104, label %ZSTD_noCompressLiterals.exit, label %105 105: ; preds = %96 - switch i32 %101, label %default.unreachable117 [ + switch i32 %101, label %default.unreachable118 [ i32 1, label %106 i32 2, label %108 i32 3, label %111 @@ -343,62 +343,61 @@ allBytesIdentical.exit: ; preds = %.lr.ph.i, %116 br label %130 130: ; preds = %128, %allBytesIdentical.exit - switch i64 %18, label %default.unreachable117 [ + switch i64 %18, label %default.unreachable118 [ i64 3, label %131 - i64 4, label %145 - i64 5, label %153 + i64 4, label %144 + i64 5, label %152 ] 131: ; preds = %130 - %132 = select i1 %narrow, i32 4, i32 0 + %132 = select i1 %spec.select, i32 4, i32 0 %133 = trunc i64 %3 to i32 %134 = shl i32 %133, 4 %135 = or disjoint i32 %132, %134 - %136 = or disjoint i32 %.088, %135 - %137 = xor i32 %136, 4 - %138 = trunc i64 %87 to i32 - %139 = shl i32 %138, 14 - %140 = add i32 %137, %139 - %141 = trunc i32 %140 to i16 - store i16 %141, ptr %0, align 1 - %142 = lshr i32 %140, 16 - %143 = trunc i32 %142 to i8 - %144 = getelementptr inbounds nuw i8, ptr %0, i64 2 - store i8 %143, ptr %144, align 1 - br label %164 - -145: ; preds = %130 - %146 = trunc i64 %3 to i32 - %147 = shl i32 %146, 4 - %148 = trunc i64 %87 to i32 - %149 = shl i32 %148, 18 - %150 = or disjoint i32 %147, 8 - %151 = add i32 %150, %149 - %152 = or disjoint i32 %151, %.088 - store i32 %152, ptr %0, align 1 - br label %164 - -153: ; preds = %130 - %154 = trunc i64 %3 to i32 - %155 = shl i32 %154, 4 - %156 = trunc i64 %87 to i32 - %157 = shl i32 %156, 22 - %158 = or disjoint i32 %155, 12 - %159 = add i32 %158, %157 - %160 = or disjoint i32 %159, %.088 - store i32 %160, ptr %0, align 1 - %161 = lshr i64 %87, 10 - %162 = trunc i64 %161 to i8 - %163 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i8 %162, ptr %163, align 1 - br label %164 - -164: ; preds = %153, %145, %131 - %165 = add i64 %87, %18 + %136 = trunc i64 %87 to i32 + %137 = shl i32 %136, 14 + %138 = add i32 %135, %137 + %139 = or disjoint i32 %138, %.088 + %140 = trunc i32 %139 to i16 + store i16 %140, ptr %0, align 1 + %141 = lshr i32 %138, 16 + %142 = trunc i32 %141 to i8 + %143 = getelementptr inbounds nuw i8, ptr %0, i64 2 + store i8 %142, ptr %143, align 1 + br label %163 + +144: ; preds = %130 + %145 = trunc i64 %3 to i32 + %146 = shl i32 %145, 4 + %147 = trunc i64 %87 to i32 + %148 = shl i32 %147, 18 + %149 = or disjoint i32 %146, 8 + %150 = add i32 %149, %148 + %151 = or disjoint i32 %150, %.088 + store i32 %151, ptr %0, align 1 + br label %163 + +152: ; preds = %130 + %153 = trunc i64 %3 to i32 + %154 = shl i32 %153, 4 + %155 = trunc i64 %87 to i32 + %156 = shl i32 %155, 22 + %157 = or disjoint i32 %154, 12 + %158 = add i32 %157, %156 + %159 = or disjoint i32 %158, %.088 + store i32 %159, ptr %0, align 1 + %160 = lshr i64 %87, 10 + %161 = trunc i64 %160 to i8 + %162 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i8 %161, ptr %162, align 1 + br label %163 + +163: ; preds = %152, %144, %131 + %164 = add i64 %87, %18 br label %ZSTD_noCompressLiterals.exit -ZSTD_noCompressLiterals.exit: ; preds = %114, %96, %68, %50, %38, %20, %70, %164, %allBytesIdentical.exit.thread - %.0 = phi i64 [ %127, %allBytesIdentical.exit.thread ], [ %165, %164 ], [ -70, %70 ], [ %27, %38 ], [ -70, %20 ], [ %57, %68 ], [ -70, %50 ], [ %103, %114 ], [ -70, %96 ] +ZSTD_noCompressLiterals.exit: ; preds = %114, %96, %68, %50, %38, %20, %70, %163, %allBytesIdentical.exit.thread + %.0 = phi i64 [ %127, %allBytesIdentical.exit.thread ], [ %164, %163 ], [ -70, %70 ], [ %27, %38 ], [ -70, %20 ], [ %57, %68 ], [ -70, %50 ], [ %103, %114 ], [ -70, %96 ] ret i64 %.0 } diff --git a/bench/cpython/optimized/_threadmodule.ll b/bench/cpython/optimized/_threadmodule.ll index 5abd71958ff..959609cb35a 100644 --- a/bench/cpython/optimized/_threadmodule.ll +++ b/bench/cpython/optimized/_threadmodule.ll @@ -2063,90 +2063,85 @@ _Py_XNewRef.exit: ; preds = %_Py_NewRef.exit19, %kwargs24 = getelementptr inbounds nuw i8, ptr %call5, i64 24 store ptr %kwargs, ptr %kwargs24, align 8 %tobool25.not = icmp eq i32 %joinable, 0 - br i1 %tobool25.not, label %if.else, label %if.then26 + br i1 %tobool25.not, label %if.end30, label %if.then26 if.then26: ; preds = %_Py_XNewRef.exit %call27 = tail call i32 @PyThread_start_joinable_thread(ptr noundef nonnull @thread_run, ptr noundef nonnull %call5, ptr noundef nonnull %ident, ptr noundef nonnull %handle) #8 - br label %if.end30 + %9 = icmp eq i32 %call27, 0 + br i1 %9, label %return, label %if.then32 -if.else: ; preds = %_Py_XNewRef.exit +if.end30: ; preds = %_Py_XNewRef.exit store i64 0, ptr %handle, align 8 %call28 = tail call i64 @PyThread_start_new_thread(ptr noundef nonnull @thread_run, ptr noundef nonnull %call5) #8 store i64 %call28, ptr %ident, align 8 - %cmp29 = icmp eq i64 %call28, -1 - %conv = zext i1 %cmp29 to i32 - br label %if.end30 - -if.end30: ; preds = %if.else, %if.then26 - %err.0 = phi i32 [ %call27, %if.then26 ], [ %conv, %if.else ] - %tobool31.not = icmp eq i32 %err.0, 0 - br i1 %tobool31.not, label %return, label %if.then32 - -if.then32: ; preds = %if.end30 - %9 = load ptr, ptr @PyExc_RuntimeError, align 8 - tail call void @PyErr_SetString(ptr noundef %9, ptr noundef nonnull @.str.24) #8 - %10 = load ptr, ptr %call5, align 8 - tail call void @PyThreadState_Clear(ptr noundef %10) #8 - %11 = load ptr, ptr %func20, align 8 - %12 = load i64, ptr %11, align 8 - %13 = and i64 %12, 2147483648 - %cmp.i11.not.i = icmp eq i64 %13, 0 + %cmp29.not = icmp eq i64 %call28, -1 + br i1 %cmp29.not, label %if.then32, label %return + +if.then32: ; preds = %if.then26, %if.end30 + %10 = load ptr, ptr @PyExc_RuntimeError, align 8 + tail call void @PyErr_SetString(ptr noundef %10, ptr noundef nonnull @.str.24) #8 + %11 = load ptr, ptr %call5, align 8 + tail call void @PyThreadState_Clear(ptr noundef %11) #8 + %12 = load ptr, ptr %func20, align 8 + %13 = load i64, ptr %12, align 8 + %14 = and i64 %13, 2147483648 + %cmp.i11.not.i = icmp eq i64 %14, 0 br i1 %cmp.i11.not.i, label %if.end.i4.i, label %Py_DECREF.exit9.i if.end.i4.i: ; preds = %if.then32 - %dec.i5.i = add i64 %12, -1 - store i64 %dec.i5.i, ptr %11, align 8 + %dec.i5.i = add i64 %13, -1 + store i64 %dec.i5.i, ptr %12, align 8 %cmp.i6.i = icmp eq i64 %dec.i5.i, 0 br i1 %cmp.i6.i, label %if.then1.i7.i, label %Py_DECREF.exit9.i if.then1.i7.i: ; preds = %if.end.i4.i - tail call void @_Py_Dealloc(ptr noundef nonnull %11) #8 + tail call void @_Py_Dealloc(ptr noundef nonnull %12) #8 br label %Py_DECREF.exit9.i Py_DECREF.exit9.i: ; preds = %if.then1.i7.i, %if.end.i4.i, %if.then32 - %14 = load ptr, ptr %args22, align 8 - %15 = load i64, ptr %14, align 8 - %16 = and i64 %15, 2147483648 - %cmp.i14.not.i = icmp eq i64 %16, 0 + %15 = load ptr, ptr %args22, align 8 + %16 = load i64, ptr %15, align 8 + %17 = and i64 %16, 2147483648 + %cmp.i14.not.i = icmp eq i64 %17, 0 br i1 %cmp.i14.not.i, label %if.end.i.i24, label %Py_DECREF.exit.i if.end.i.i24: ; preds = %Py_DECREF.exit9.i - %dec.i.i = add i64 %15, -1 - store i64 %dec.i.i, ptr %14, align 8 + %dec.i.i = add i64 %16, -1 + store i64 %dec.i.i, ptr %15, align 8 %cmp.i.i25 = icmp eq i64 %dec.i.i, 0 br i1 %cmp.i.i25, label %if.then1.i.i, label %Py_DECREF.exit.i if.then1.i.i: ; preds = %if.end.i.i24 - tail call void @_Py_Dealloc(ptr noundef nonnull %14) #8 + tail call void @_Py_Dealloc(ptr noundef nonnull %15) #8 br label %Py_DECREF.exit.i Py_DECREF.exit.i: ; preds = %if.then1.i.i, %if.end.i.i24, %Py_DECREF.exit9.i - %17 = load ptr, ptr %kwargs24, align 8 - %cmp.not.i.i20 = icmp eq ptr %17, null + %18 = load ptr, ptr %kwargs24, align 8 + %cmp.not.i.i20 = icmp eq ptr %18, null br i1 %cmp.not.i.i20, label %thread_bootstate_free.exit, label %if.then.i.i21 if.then.i.i21: ; preds = %Py_DECREF.exit.i - %18 = load i64, ptr %17, align 8 - %19 = and i64 %18, 2147483648 - %cmp.i2.not.i.i = icmp eq i64 %19, 0 + %19 = load i64, ptr %18, align 8 + %20 = and i64 %19, 2147483648 + %cmp.i2.not.i.i = icmp eq i64 %20, 0 br i1 %cmp.i2.not.i.i, label %if.end.i.i.i22, label %thread_bootstate_free.exit if.end.i.i.i22: ; preds = %if.then.i.i21 - %dec.i.i.i = add i64 %18, -1 - store i64 %dec.i.i.i, ptr %17, align 8 + %dec.i.i.i = add i64 %19, -1 + store i64 %dec.i.i.i, ptr %18, align 8 %cmp.i.i.i23 = icmp eq i64 %dec.i.i.i, 0 br i1 %cmp.i.i.i23, label %if.then1.i.i.i, label %thread_bootstate_free.exit if.then1.i.i.i: ; preds = %if.end.i.i.i22 - tail call void @_Py_Dealloc(ptr noundef nonnull %17) #8 + tail call void @_Py_Dealloc(ptr noundef nonnull %18) #8 br label %thread_bootstate_free.exit thread_bootstate_free.exit: ; preds = %Py_DECREF.exit.i, %if.then.i.i21, %if.end.i.i.i22, %if.then1.i.i.i tail call void @PyMem_RawFree(ptr noundef nonnull %call5) #8 br label %return -return: ; preds = %if.end30, %if.then12, %if.then15, %thread_bootstate_free.exit, %if.then6, %if.then3, %if.then - %retval.0 = phi i32 [ -1, %if.then3 ], [ -1, %if.then6 ], [ -1, %thread_bootstate_free.exit ], [ -1, %if.then ], [ -1, %if.then15 ], [ -1, %if.then12 ], [ 0, %if.end30 ] +return: ; preds = %if.then26, %if.end30, %if.then12, %if.then15, %thread_bootstate_free.exit, %if.then6, %if.then3, %if.then + %retval.0 = phi i32 [ -1, %if.then3 ], [ -1, %if.then6 ], [ -1, %thread_bootstate_free.exit ], [ -1, %if.then ], [ -1, %if.then15 ], [ -1, %if.then12 ], [ 0, %if.end30 ], [ 0, %if.then26 ] ret i32 %retval.0 } diff --git a/bench/cpython/optimized/action_helpers.ll b/bench/cpython/optimized/action_helpers.ll index 3803de24eb5..b5836a109da 100644 --- a/bench/cpython/optimized/action_helpers.ll +++ b/bench/cpython/optimized/action_helpers.ll @@ -5191,25 +5191,31 @@ for.inc102: ; preds = %cond.end84, %if.the %exitcond150.not = icmp eq i64 %inc103, %0 br i1 %exitcond150.not, label %for.cond105.preheader, label %for.body64, !llvm.loop !44 -for.body107: ; preds = %for.body107.lr.ph, %for.body107 - %i.3131 = phi i64 [ %inc137, %for.body107 ], [ 0, %for.body107.lr.ph ] - %prev_is_constant.0130 = phi i1 [ %30, %for.body107 ], [ false, %for.body107.lr.ph ] - %n_elements.0129 = phi i64 [ %n_elements.2, %for.body107 ], [ 0, %for.body107.lr.ph ] +for.body107: ; preds = %for.body107.lr.ph, %if.end133 + %i.3131 = phi i64 [ %inc137, %if.end133 ], [ 0, %for.body107.lr.ph ] + %prev_is_constant.0130 = phi i1 [ %cmp135, %if.end133 ], [ true, %for.body107.lr.ph ] + %n_elements.0129 = phi i64 [ %n_elements.2, %if.end133 ], [ 0, %for.body107.lr.ph ] %arrayidx110 = getelementptr [1 x ptr], ptr %typed_elements109, i64 0, i64 %i.3131 %29 = load ptr, ptr %arrayidx110, align 8 %.pre.pre = load i32, ptr %29, align 8 %cmp130.not = icmp ne i32 %.pre.pre, 20 - %not.prev_is_constant.0130 = xor i1 %prev_is_constant.0130, true - %or.cond242 = select i1 %not.prev_is_constant.0130, i1 true, i1 %cmp130.not - %30 = icmp eq i32 %.pre.pre, 20 - %inc132 = zext i1 %or.cond242 to i64 - %n_elements.2 = add i64 %n_elements.0129, %inc132 + %or.cond242.not = select i1 %prev_is_constant.0130, i1 true, i1 %cmp130.not + br i1 %or.cond242.not, label %if.then131, label %if.end133 + +if.then131: ; preds = %for.body107 + %inc132 = add i64 %n_elements.0129, 1 + %30 = icmp ne i32 %.pre.pre, 20 + br label %if.end133 + +if.end133: ; preds = %for.body107, %if.then131 + %cmp135 = phi i1 [ %30, %if.then131 ], [ false, %for.body107 ] + %n_elements.2 = phi i64 [ %inc132, %if.then131 ], [ %n_elements.0129, %for.body107 ] %inc137 = add nuw nsw i64 %i.3131, 1 %exitcond151.not = icmp eq i64 %inc137, %n_flattened_elements.0.lcssa171183196 br i1 %exitcond151.not, label %for.end138, label %for.body107, !llvm.loop !42 -for.end138: ; preds = %for.body107, %for.inc136.us - %n_elements.0.lcssa = phi i64 [ %n_elements.1.us, %for.inc136.us ], [ %n_elements.2, %for.body107 ] +for.end138: ; preds = %if.end133, %for.inc136.us + %n_elements.0.lcssa = phi i64 [ %n_elements.1.us, %for.inc136.us ], [ %n_elements.2, %if.end133 ] %31 = load ptr, ptr %arena57, align 8 %call141 = tail call ptr @_Py_asdl_expr_seq_new(i64 noundef %n_elements.0.lcssa, ptr noundef %31) #8 %cmp142 = icmp eq ptr %call141, null diff --git a/bench/cpython/optimized/arraymodule.ll b/bench/cpython/optimized/arraymodule.ll index 9be8456c7fe..30a4355b706 100644 --- a/bench/cpython/optimized/arraymodule.ll +++ b/bench/cpython/optimized/arraymodule.ll @@ -3940,7 +3940,8 @@ if.then23: ; preds = %land.lhs.true20 %ob_item31 = getelementptr inbounds nuw i8, ptr %w, i64 24 %14 = load ptr, ptr %ob_item31, align 8 %call32 = tail call i32 %12(ptr noundef %13, ptr noundef %14, i64 noundef %spec.select) #11 - %cmp33 = icmp eq i32 %call32, 0 + %call32.fr = freeze i32 %call32 + %cmp33 = icmp eq i32 %call32.fr, 0 br i1 %cmp33, label %if.then23.compare_sizes_crit_edge, label %if.end35 if.then23.compare_sizes_crit_edge: ; preds = %if.then23 @@ -3949,64 +3950,55 @@ if.then23.compare_sizes_crit_edge: ; preds = %if.then23 if.end35: ; preds = %if.then23 switch i32 %op, label %return [ - i32 0, label %sw.bb + i32 0, label %sw.epilog i32 1, label %sw.bb38 i32 2, label %sw.epilog.thread - i32 3, label %sw.epilog.thread124 + i32 3, label %sw.epilog.thread123 i32 4, label %sw.bb47 i32 5, label %sw.bb50 ] -sw.bb: ; preds = %if.end35 - %call32.lobit = lshr i32 %call32, 31 - br label %sw.epilog - sw.bb38: ; preds = %if.end35 - %cmp39 = icmp slt i32 %call32, 1 - %conv40 = zext i1 %cmp39 to i32 - br label %sw.epilog + %cmp39 = icmp sgt i32 %call32.fr, 0 + br i1 %cmp39, label %sw.epilog.thread, label %sw.epilog.thread123 sw.bb47: ; preds = %if.end35 - %cmp48 = icmp sgt i32 %call32, 0 - %conv49 = zext i1 %cmp48 to i32 - br label %sw.epilog + %cmp48 = icmp slt i32 %call32.fr, 1 + br i1 %cmp48, label %sw.epilog.thread, label %sw.epilog.thread123 sw.bb50: ; preds = %if.end35 - %cmp51 = icmp sgt i32 %call32, -1 - %conv52 = zext i1 %cmp51 to i32 - br label %sw.epilog - -sw.epilog: ; preds = %sw.bb50, %sw.bb47, %sw.bb38, %sw.bb - %cmp36.0 = phi i32 [ %conv52, %sw.bb50 ], [ %conv49, %sw.bb47 ], [ %conv40, %sw.bb38 ], [ %call32.lobit, %sw.bb ] - %cmp36.0.fr = freeze i32 %cmp36.0 - %tobool54.not = icmp eq i32 %cmp36.0.fr, 0 - br i1 %tobool54.not, label %sw.epilog.thread, label %sw.epilog.thread124 - -sw.epilog.thread: ; preds = %if.end35, %sw.epilog - br label %sw.epilog.thread124 - -sw.epilog.thread124: ; preds = %if.end35, %sw.epilog, %sw.epilog.thread - %15 = phi ptr [ @_Py_FalseStruct, %sw.epilog.thread ], [ @_Py_TrueStruct, %sw.epilog ], [ @_Py_TrueStruct, %if.end35 ] - %16 = load i32, ptr %15, align 8 - %add.i.i94 = add i32 %16, 1 + %cmp51 = icmp slt i32 %call32.fr, 0 + br i1 %cmp51, label %sw.epilog.thread, label %sw.epilog.thread123 + +sw.epilog: ; preds = %if.end35 + %15 = icmp sgt i32 %call32.fr, -1 + br i1 %15, label %sw.epilog.thread, label %sw.epilog.thread123 + +sw.epilog.thread: ; preds = %if.end35, %sw.bb38, %sw.bb47, %sw.bb50, %sw.epilog + br label %sw.epilog.thread123 + +sw.epilog.thread123: ; preds = %if.end35, %sw.bb38, %sw.bb47, %sw.bb50, %sw.epilog, %sw.epilog.thread + %16 = phi ptr [ @_Py_FalseStruct, %sw.epilog.thread ], [ @_Py_TrueStruct, %sw.epilog ], [ @_Py_TrueStruct, %sw.bb50 ], [ @_Py_TrueStruct, %sw.bb47 ], [ @_Py_TrueStruct, %sw.bb38 ], [ @_Py_TrueStruct, %if.end35 ] + %17 = load i32, ptr %16, align 8 + %add.i.i94 = add i32 %17, 1 %cmp.i.i95 = icmp eq i32 %add.i.i94, 0 br i1 %cmp.i.i95, label %return, label %if.end.i.i96 -if.end.i.i96: ; preds = %sw.epilog.thread124 - store i32 %add.i.i94, ptr %15, align 8 +if.end.i.i96: ; preds = %sw.epilog.thread123 + store i32 %add.i.i94, ptr %16, align 8 br label %return if.end57: ; preds = %land.lhs.true20, %if.end17 - %cmp59135 = icmp sgt i64 %v.val81, 0 - br i1 %cmp59135, label %land.rhs.preheader, label %compare_sizes + %cmp59136 = icmp sgt i64 %v.val81, 0 + br i1 %cmp59136, label %land.rhs.preheader, label %compare_sizes land.rhs.preheader: ; preds = %if.end57 - %w.val74149 = load i64, ptr %6, align 8 - %cmp62150 = icmp sgt i64 %w.val74149, 0 - br i1 %cmp62150, label %for.body, label %compare_sizes + %w.val74150 = load i64, ptr %6, align 8 + %cmp62151 = icmp sgt i64 %w.val74150, 0 + br i1 %cmp62151, label %for.body, label %compare_sizes for.cond: ; preds = %Py_DECREF.exit141 - %inc = add nuw nsw i64 %i.0136151, 1 + %inc = add nuw nsw i64 %i.0137152, 1 %v.val75 = load i64, ptr %5, align 8 %cmp59 = icmp slt i64 %inc, %v.val75 br i1 %cmp59, label %land.rhs, label %compare_sizes, !llvm.loop !27 @@ -4017,30 +4009,30 @@ land.rhs: ; preds = %for.cond br i1 %cmp62, label %for.body, label %compare_sizes, !llvm.loop !27 for.body: ; preds = %land.rhs.preheader, %land.rhs - %i.0136151 = phi i64 [ %inc, %land.rhs ], [ 0, %land.rhs.preheader ] - %17 = load ptr, ptr %ob_descr, align 8 - %getitem.i = getelementptr inbounds nuw i8, ptr %17, i64 8 - %18 = load ptr, ptr %getitem.i, align 8 - %call.i = tail call ptr %18(ptr noundef nonnull %v, i64 noundef %i.0136151) #11 + %i.0137152 = phi i64 [ %inc, %land.rhs ], [ 0, %land.rhs.preheader ] + %18 = load ptr, ptr %ob_descr, align 8 + %getitem.i = getelementptr inbounds nuw i8, ptr %18, i64 8 + %19 = load ptr, ptr %getitem.i, align 8 + %call.i = tail call ptr %19(ptr noundef nonnull %v, i64 noundef %i.0137152) #11 %cmp65 = icmp eq ptr %call.i, null br i1 %cmp65, label %return, label %if.end68 if.end68: ; preds = %for.body - %19 = load ptr, ptr %ob_descr18, align 8 - %getitem.i99 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %20 = load ptr, ptr %getitem.i99, align 8 - %call.i100 = tail call ptr %20(ptr noundef nonnull %w, i64 noundef %i.0136151) #11 + %20 = load ptr, ptr %ob_descr18, align 8 + %getitem.i99 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = load ptr, ptr %getitem.i99, align 8 + %call.i100 = tail call ptr %21(ptr noundef nonnull %w, i64 noundef %i.0137152) #11 %cmp70 = icmp eq ptr %call.i100, null br i1 %cmp70, label %if.then72, label %if.end73 if.then72: ; preds = %if.end68 - %21 = load i64, ptr %call.i, align 8 - %22 = and i64 %21, 2147483648 - %cmp.i161.not = icmp eq i64 %22, 0 + %22 = load i64, ptr %call.i, align 8 + %23 = and i64 %22, 2147483648 + %cmp.i161.not = icmp eq i64 %23, 0 br i1 %cmp.i161.not, label %if.end.i154, label %return if.end.i154: ; preds = %if.then72 - %dec.i155 = add i64 %21, -1 + %dec.i155 = add i64 %22, -1 store i64 %dec.i155, ptr %call.i, align 8 %cmp.i156 = icmp eq i64 %dec.i155, 0 br i1 %cmp.i156, label %if.then1.i157, label %return @@ -4055,13 +4047,13 @@ if.end73: ; preds = %if.end68 br i1 %cmp76, label %if.end110, label %if.end79 if.end79: ; preds = %if.end73 - %23 = load i64, ptr %call.i, align 8 - %24 = and i64 %23, 2147483648 - %cmp.i164.not = icmp eq i64 %24, 0 + %24 = load i64, ptr %call.i, align 8 + %25 = and i64 %24, 2147483648 + %cmp.i164.not = icmp eq i64 %25, 0 br i1 %cmp.i164.not, label %if.end.i145, label %Py_DECREF.exit150 if.end.i145: ; preds = %if.end79 - %dec.i146 = add i64 %23, -1 + %dec.i146 = add i64 %24, -1 store i64 %dec.i146, ptr %call.i, align 8 %cmp.i147 = icmp eq i64 %dec.i146, 0 br i1 %cmp.i147, label %if.then1.i148, label %Py_DECREF.exit150 @@ -4071,13 +4063,13 @@ if.then1.i148: ; preds = %if.end.i145 br label %Py_DECREF.exit150 Py_DECREF.exit150: ; preds = %if.end79, %if.then1.i148, %if.end.i145 - %25 = load i64, ptr %call.i100, align 8 - %26 = and i64 %25, 2147483648 - %cmp.i168.not = icmp eq i64 %26, 0 + %26 = load i64, ptr %call.i100, align 8 + %27 = and i64 %26, 2147483648 + %cmp.i168.not = icmp eq i64 %27, 0 br i1 %cmp.i168.not, label %if.end.i136, label %Py_DECREF.exit141 if.end.i136: ; preds = %Py_DECREF.exit150 - %dec.i137 = add i64 %25, -1 + %dec.i137 = add i64 %26, -1 store i64 %dec.i137, ptr %call.i100, align 8 %cmp.i138 = icmp eq i64 %dec.i137, 0 br i1 %cmp.i138, label %if.then1.i139, label %Py_DECREF.exit141 @@ -4119,8 +4111,8 @@ sw.epilog104: ; preds = %compare_sizes br i1 %cmp90, label %if.then106.split, label %if.else107.split if.then106.split: ; preds = %sw.bb92, %sw.bb97, %sw.bb100, %compare_sizes, %sw.epilog104 - %27 = load i32, ptr @_Py_TrueStruct, align 8 - %add.i.i101 = add i32 %27, 1 + %28 = load i32, ptr @_Py_TrueStruct, align 8 + %add.i.i101 = add i32 %28, 1 %cmp.i.i102 = icmp eq i32 %add.i.i101, 0 br i1 %cmp.i.i102, label %return, label %if.end.i.i103 @@ -4129,8 +4121,8 @@ if.end.i.i103: ; preds = %if.then106.split br label %return if.else107.split: ; preds = %sw.bb92, %sw.bb97, %sw.bb100, %compare_sizes, %sw.epilog104 - %28 = load i32, ptr @_Py_FalseStruct, align 8 - %add.i.i105 = add i32 %28, 1 + %29 = load i32, ptr @_Py_FalseStruct, align 8 + %add.i.i105 = add i32 %29, 1 %cmp.i.i106 = icmp eq i32 %add.i.i105, 0 br i1 %cmp.i.i106, label %return, label %if.end.i.i107 @@ -4145,8 +4137,8 @@ if.end110: ; preds = %if.end73 ] if.then113: ; preds = %if.end110 - %29 = load i32, ptr @_Py_FalseStruct, align 8 - %add.i.i109 = add i32 %29, 1 + %30 = load i32, ptr @_Py_FalseStruct, align 8 + %add.i.i109 = add i32 %30, 1 %cmp.i.i110 = icmp eq i32 %add.i.i109, 0 br i1 %cmp.i.i110, label %if.end123, label %if.end.i.i111 @@ -4155,8 +4147,8 @@ if.end.i.i111: ; preds = %if.then113 br label %if.end123 if.then118: ; preds = %if.end110 - %30 = load i32, ptr @_Py_TrueStruct, align 8 - %add.i.i113 = add i32 %30, 1 + %31 = load i32, ptr @_Py_TrueStruct, align 8 + %add.i.i113 = add i32 %31, 1 %cmp.i.i114 = icmp eq i32 %add.i.i113, 0 br i1 %cmp.i.i114, label %if.end123, label %if.end.i.i115 @@ -4170,13 +4162,13 @@ if.else120: ; preds = %if.end110 if.end123: ; preds = %if.end.i.i115, %if.then118, %if.end.i.i111, %if.then113, %if.else120 %res.2 = phi ptr [ %call121, %if.else120 ], [ @_Py_FalseStruct, %if.then113 ], [ @_Py_FalseStruct, %if.end.i.i111 ], [ @_Py_TrueStruct, %if.then118 ], [ @_Py_TrueStruct, %if.end.i.i115 ] - %31 = load i64, ptr %call.i, align 8 - %32 = and i64 %31, 2147483648 - %cmp.i172.not = icmp eq i64 %32, 0 + %32 = load i64, ptr %call.i, align 8 + %33 = and i64 %32, 2147483648 + %cmp.i172.not = icmp eq i64 %33, 0 br i1 %cmp.i172.not, label %if.end.i127, label %Py_DECREF.exit132 if.end.i127: ; preds = %if.end123 - %dec.i128 = add i64 %31, -1 + %dec.i128 = add i64 %32, -1 store i64 %dec.i128, ptr %call.i, align 8 %cmp.i129 = icmp eq i64 %dec.i128, 0 br i1 %cmp.i129, label %if.then1.i130, label %Py_DECREF.exit132 @@ -4186,13 +4178,13 @@ if.then1.i130: ; preds = %if.end.i127 br label %Py_DECREF.exit132 Py_DECREF.exit132: ; preds = %if.end123, %if.then1.i130, %if.end.i127 - %33 = load i64, ptr %call.i100, align 8 - %34 = and i64 %33, 2147483648 - %cmp.i176.not = icmp eq i64 %34, 0 + %34 = load i64, ptr %call.i100, align 8 + %35 = and i64 %34, 2147483648 + %cmp.i176.not = icmp eq i64 %35, 0 br i1 %cmp.i176.not, label %if.end.i, label %return if.end.i: ; preds = %Py_DECREF.exit132 - %dec.i = add i64 %33, -1 + %dec.i = add i64 %34, -1 store i64 %dec.i, ptr %call.i100, align 8 %cmp.i = icmp eq i64 %dec.i, 0 br i1 %cmp.i, label %if.then1.i, label %return @@ -4201,8 +4193,8 @@ if.then1.i: ; preds = %if.end.i tail call void @_Py_Dealloc(ptr noundef nonnull %call.i100) #11 br label %return -return: ; preds = %Py_DECREF.exit141, %for.body, %if.end.i.i107, %if.else107.split, %if.end.i.i103, %if.then106.split, %if.end.i.i96, %sw.epilog.thread124, %if.end.i.i92, %if.else.split, %if.end.i.i, %if.then14.split, %if.end.i, %if.then1.i, %Py_DECREF.exit132, %compare_sizes, %if.end.i154, %if.then1.i157, %if.then72, %if.end35, %PyObject_TypeCheck.exit, %PyObject_TypeCheck.exit89 - %retval.0 = phi ptr [ @_Py_NotImplementedStruct, %PyObject_TypeCheck.exit89 ], [ @_Py_NotImplementedStruct, %PyObject_TypeCheck.exit ], [ null, %if.end35 ], [ null, %if.then72 ], [ null, %if.then1.i157 ], [ null, %if.end.i154 ], [ null, %compare_sizes ], [ %res.2, %Py_DECREF.exit132 ], [ %res.2, %if.then1.i ], [ %res.2, %if.end.i ], [ @_Py_FalseStruct, %if.then14.split ], [ @_Py_FalseStruct, %if.end.i.i ], [ @_Py_TrueStruct, %if.else.split ], [ @_Py_TrueStruct, %if.end.i.i92 ], [ %15, %sw.epilog.thread124 ], [ %15, %if.end.i.i96 ], [ @_Py_TrueStruct, %if.then106.split ], [ @_Py_TrueStruct, %if.end.i.i103 ], [ @_Py_FalseStruct, %if.else107.split ], [ @_Py_FalseStruct, %if.end.i.i107 ], [ null, %for.body ], [ null, %Py_DECREF.exit141 ] +return: ; preds = %Py_DECREF.exit141, %for.body, %if.end.i.i107, %if.else107.split, %if.end.i.i103, %if.then106.split, %if.end.i.i96, %sw.epilog.thread123, %if.end.i.i92, %if.else.split, %if.end.i.i, %if.then14.split, %if.end.i, %if.then1.i, %Py_DECREF.exit132, %compare_sizes, %if.end.i154, %if.then1.i157, %if.then72, %if.end35, %PyObject_TypeCheck.exit, %PyObject_TypeCheck.exit89 + %retval.0 = phi ptr [ @_Py_NotImplementedStruct, %PyObject_TypeCheck.exit89 ], [ @_Py_NotImplementedStruct, %PyObject_TypeCheck.exit ], [ null, %if.end35 ], [ null, %if.then72 ], [ null, %if.then1.i157 ], [ null, %if.end.i154 ], [ null, %compare_sizes ], [ %res.2, %Py_DECREF.exit132 ], [ %res.2, %if.then1.i ], [ %res.2, %if.end.i ], [ @_Py_FalseStruct, %if.then14.split ], [ @_Py_FalseStruct, %if.end.i.i ], [ @_Py_TrueStruct, %if.else.split ], [ @_Py_TrueStruct, %if.end.i.i92 ], [ %16, %sw.epilog.thread123 ], [ %16, %if.end.i.i96 ], [ @_Py_TrueStruct, %if.then106.split ], [ @_Py_TrueStruct, %if.end.i.i103 ], [ @_Py_FalseStruct, %if.else107.split ], [ @_Py_FalseStruct, %if.end.i.i107 ], [ null, %for.body ], [ null, %Py_DECREF.exit141 ] ret ptr %retval.0 } diff --git a/bench/cpython/optimized/pystrtod.ll b/bench/cpython/optimized/pystrtod.ll index 9a3eb7f1038..5bcfbc2489b 100644 --- a/bench/cpython/optimized/pystrtod.ll +++ b/bench/cpython/optimized/pystrtod.ll @@ -484,7 +484,8 @@ if.then11.i: ; preds = %sw.epilog do.end13.i: ; preds = %if.then11.i, %do.end.thread.i %call5140.i = phi ptr [ %call5139.i, %do.end.thread.i ], [ %call5.i, %if.then11.i ] %0 = load i32, ptr %decpt_as_int.i, align 4 - %conv14.i = sext i32 %0 to i64 + %.fr208.i = freeze i32 %0 + %conv14.i = sext i32 %.fr208.i to i64 %cmp15.i = icmp eq ptr %call5140.i, null br i1 %cmp15.i, label %if.end255.i, label %if.end19.i @@ -612,90 +613,104 @@ if.then105.i: ; preds = %if.end103.i if.end106.i: ; preds = %if.then105.i, %if.end103.i switch i8 %format_code.addr.3, label %sw.default.i [ - i8 101, label %sw.bb.i - i8 102, label %sw.bb109.i + i8 101, label %sw.epilog.thread178.i + i8 102, label %sw.epilog.thread.i i8 103, label %sw.bb111.i - i8 114, label %sw.bb125.i + i8 114, label %sw.epilog.i ] -sw.bb.i: ; preds = %if.end106.i +sw.epilog.thread178.i: ; preds = %if.end106.i %conv108.i = sext i32 %precision.addr.0 to i64 - br label %sw.epilog.i + br label %if.end163.i.thread23 -sw.bb109.i: ; preds = %if.end106.i +sw.epilog.thread.i: ; preds = %if.end106.i %conv110.i = sext i32 %precision.addr.0 to i64 %add.i = add nsw i64 %conv14.i, %conv110.i - br label %sw.epilog.i + br label %12 sw.bb111.i: ; preds = %if.end106.i - %cmp112.i = icmp slt i32 %0, -3 - br i1 %cmp112.i, label %if.then119.i, label %lor.lhs.false114.i + %cmp112.i = icmp slt i32 %.fr208.i, -3 + br i1 %cmp112.i, label %if.end120.i, label %lor.lhs.false114.i lor.lhs.false114.i: ; preds = %sw.bb111.i %10 = shl nuw i32 %and12, 30 %sext = ashr exact i32 %10, 31 %cond.i = add i32 %precision.addr.0, %sext - %cmp117.i = icmp sgt i32 %0, %cond.i - br i1 %cmp117.i, label %if.then119.i, label %if.end120.i + %cmp117.i = icmp sgt i32 %.fr208.i, %cond.i + br i1 %cmp117.i, label %if.end120.i, label %if.end120.thread.i -if.then119.i: ; preds = %lor.lhs.false114.i, %sw.bb111.i - br label %if.end120.i +if.end120.thread.i: ; preds = %lor.lhs.false114.i + %tobool121.not200.i = icmp eq i32 %and13, 0 + %conv123201.i = sext i32 %precision.addr.0 to i64 + %spec.select202.i = select i1 %tobool121.not200.i, i64 %sub.ptr.sub.i, i64 %conv123201.i + br label %12 -if.end120.i: ; preds = %if.then119.i, %lor.lhs.false114.i - %use_exp.1.i = phi i32 [ 1, %if.then119.i ], [ 0, %lor.lhs.false114.i ] +if.end120.i: ; preds = %lor.lhs.false114.i, %sw.bb111.i %tobool121.not.i = icmp eq i32 %and13, 0 %conv123.i = sext i32 %precision.addr.0 to i64 %spec.select.i = select i1 %tobool121.not.i, i64 %sub.ptr.sub.i, i64 %conv123.i - br label %sw.epilog.i - -sw.bb125.i: ; preds = %if.end106.i - %11 = add i32 %0, -17 - %or.cond1.i = icmp ult i32 %11, -20 - %spec.select134.i = zext i1 %or.cond1.i to i32 - br label %sw.epilog.i + br label %if.end163.i.thread23 sw.default.i: ; preds = %if.end106.i call void @_PyErr_BadInternalCall(ptr noundef nonnull @.str.6, i32 noundef 1103) #13 br label %if.then257.i -sw.epilog.i: ; preds = %sw.bb125.i, %if.end120.i, %sw.bb109.i, %sw.bb.i - %use_exp.0.i = phi i32 [ 0, %sw.bb109.i ], [ 1, %sw.bb.i ], [ %use_exp.1.i, %if.end120.i ], [ %spec.select134.i, %sw.bb125.i ] - %vdigits_end.0.i = phi i64 [ %add.i, %sw.bb109.i ], [ %conv108.i, %sw.bb.i ], [ %spec.select.i, %if.end120.i ], [ %sub.ptr.sub.i, %sw.bb125.i ] - %tobool133.not.i = icmp eq i32 %use_exp.0.i, 0 - %sub136.i = add i32 %0, -1 - %spec.select135.i = select i1 %tobool133.not.i, i64 %conv14.i, i64 1 - %cmp138.i = icmp slt i64 %spec.select135.i, 1 - %12 = call i64 @llvm.smin.i64(i64 %spec.select135.i, i64 1) +sw.epilog.i: ; preds = %if.end106.i + %11 = add i32 %.fr208.i, 3 + %or.cond1.i = icmp ult i32 %11, 20 + %spec.select204.i = select i1 %or.cond1.i, i64 %conv14.i, i64 1 + br label %12 + +12: ; preds = %sw.epilog.i, %if.end120.thread.i, %sw.epilog.thread.i + %vdigits_end.0174.i = phi i64 [ %add.i, %sw.epilog.thread.i ], [ %spec.select202.i, %if.end120.thread.i ], [ %sub.ptr.sub.i, %sw.epilog.i ] + %use_exp.0172.i = phi i1 [ true, %sw.epilog.thread.i ], [ true, %if.end120.thread.i ], [ %or.cond1.i, %sw.epilog.i ] + %13 = phi i64 [ %conv14.i, %sw.epilog.thread.i ], [ %conv14.i, %if.end120.thread.i ], [ %spec.select204.i, %sw.epilog.i ] + %cmp138.i = icmp slt i64 %13, 1 + %14 = call i64 @llvm.smin.i64(i64 %13, i64 1) + %cond144.i = add nsw i64 %14, -1 %tobool147.i = icmp ne i32 %and12, 0 - %or.cond2.i = and i1 %tobool147.i, %tobool133.not.i - br i1 %or.cond2.i, label %if.then148.i, label %if.else156.i + %or.cond2.i = and i1 %tobool147.i, %use_exp.0172.i + br i1 %or.cond2.i, label %if.end163.i.thread, label %if.end163.i -if.then148.i: ; preds = %sw.epilog.i - %cmp149.i = icmp sgt i64 %vdigits_end.0.i, %conv14.i +if.end163.i.thread: ; preds = %12 + %cmp149.i = icmp sgt i64 %vdigits_end.0174.i, %conv14.i %add153.i = add nsw i64 %conv14.i, 1 - %cond155.i = select i1 %cmp149.i, i64 %vdigits_end.0.i, i64 %add153.i - br label %if.end163.i - -if.else156.i: ; preds = %sw.epilog.i - %cond162.i = call i64 @llvm.smax.i64(i64 %vdigits_end.0.i, i64 %spec.select135.i) - br label %if.end163.i - -if.end163.i: ; preds = %if.else156.i, %if.then148.i - %vdigits_end.1.i = phi i64 [ %cond155.i, %if.then148.i ], [ %cond162.i, %if.else156.i ] - %reass.sub.i = select i1 %tobool133.not.i, i64 4, i64 9 - %add165.i = sub nsw i64 %reass.sub.i, %12 - %add169.i = add i64 %add165.i, %vdigits_end.1.i + %cond155.i = select i1 %cmp149.i, i64 %vdigits_end.0174.i, i64 %add153.i + br label %15 + +if.end163.i.thread23: ; preds = %sw.epilog.thread178.i, %if.end120.i + %vdigits_end.0174193.i.ph = phi i64 [ %spec.select.i, %if.end120.i ], [ %conv108.i, %sw.epilog.thread178.i ] + %cond162.i29 = call i64 @llvm.smax.i64(i64 %vdigits_end.0174193.i.ph, i64 1) + br label %15 + +if.end163.i: ; preds = %12 + %cond162.i = call i64 @llvm.smax.i64(i64 %vdigits_end.0174.i, i64 %13) + %spec.select30 = select i1 %use_exp.0172.i, i64 3, i64 8 + br label %15 + +15: ; preds = %if.end163.i, %if.end163.i.thread, %if.end163.i.thread23 + %vdigits_end.1.i21 = phi i64 [ %cond162.i29, %if.end163.i.thread23 ], [ %cond155.i, %if.end163.i.thread ], [ %cond162.i, %if.end163.i ] + %use_exp.0172194.i17 = phi i1 [ false, %if.end163.i.thread23 ], [ true, %if.end163.i.thread ], [ %use_exp.0172.i, %if.end163.i ] + %16 = phi i64 [ 1, %if.end163.i.thread23 ], [ %13, %if.end163.i.thread ], [ %13, %if.end163.i ] + %cmp138196.i15 = phi i1 [ false, %if.end163.i.thread23 ], [ %cmp138.i, %if.end163.i.thread ], [ %cmp138.i, %if.end163.i ] + %17 = phi i64 [ 1, %if.end163.i.thread23 ], [ %14, %if.end163.i.thread ], [ %14, %if.end163.i ] + %cond144198.i13 = phi i64 [ 0, %if.end163.i.thread23 ], [ %cond144.i, %if.end163.i.thread ], [ %cond144.i, %if.end163.i ] + %18 = phi i64 [ 8, %if.end163.i.thread23 ], [ 3, %if.end163.i.thread ], [ %spec.select30, %if.end163.i ] + %sub136176191.i19 = add i32 %.fr208.i, -1 + %reass.sub = sub nsw i64 %18, %17 + %add165.i = add nuw nsw i64 %reass.sub, 1 + %add169.i = add i64 %add165.i, %vdigits_end.1.i21 %call170.i = call ptr @PyMem_Malloc(i64 noundef %add169.i) #13 %cmp171.i = icmp eq ptr %call170.i, null br i1 %cmp171.i, label %if.then173.i, label %if.end175.i -if.then173.i: ; preds = %if.end163.i +if.then173.i: ; preds = %15 %call174.i = call ptr @PyErr_NoMemory() #13 br label %if.then257.i -if.end175.i: ; preds = %if.end163.i - %13 = load i32, ptr %sign.i, align 4 - %cmp176.i = icmp eq i32 %13, 1 +if.end175.i: ; preds = %15 + %19 = load i32, ptr %sign.i, align 4 + %cmp176.i = icmp eq i32 %19, 1 br i1 %cmp176.i, label %if.end185.sink.split.i, label %if.else180.i if.else180.i: ; preds = %if.end175.i @@ -703,42 +718,43 @@ if.else180.i: ; preds = %if.end175.i br i1 %tobool181.not.i, label %if.end185.i, label %if.end185.sink.split.i if.end185.sink.split.i: ; preds = %if.else180.i, %if.end175.i - %.sink168.i = phi i8 [ 45, %if.end175.i ], [ 43, %if.else180.i ] + %.sink205.i = phi i8 [ 45, %if.end175.i ], [ 43, %if.else180.i ] %incdec.ptr183.i = getelementptr i8, ptr %call170.i, i64 1 - store i8 %.sink168.i, ptr %call170.i, align 1 + store i8 %.sink205.i, ptr %call170.i, align 1 br label %if.end185.i if.end185.i: ; preds = %if.end185.sink.split.i, %if.else180.i %p.2.i = phi ptr [ %call170.i, %if.else180.i ], [ %incdec.ptr183.i, %if.end185.sink.split.i ] - br i1 %cmp138.i, label %if.end200.thread.i, label %if.end200.i + br i1 %cmp138196.i15, label %if.end200.thread.i, label %if.end200.i if.end200.thread.i: ; preds = %if.end185.i - store i8 48, ptr %p.2.i, align 1 - %add.ptr191.i = getelementptr i8, ptr %p.2.i, i64 1 - %incdec.ptr192.i = getelementptr i8, ptr %p.2.i, i64 2 + %sub189.i = sub nsw i64 %16, %cond144198.i13 + call void @llvm.memset.p0.i64(ptr align 1 %p.2.i, i8 48, i64 %sub189.i, i1 false) + %add.ptr191.i = getelementptr i8, ptr %p.2.i, i64 %sub189.i + %incdec.ptr192.i = getelementptr i8, ptr %add.ptr191.i, i64 1 store i8 46, ptr %add.ptr191.i, align 1 - %sub193.i = sub nsw i64 0, %spec.select135.i + %sub193.i = sub nsw i64 0, %16 call void @llvm.memset.p0.i64(ptr align 1 %incdec.ptr192.i, i8 48, i64 %sub193.i, i1 false) %add.ptr195.i = getelementptr i8, ptr %incdec.ptr192.i, i64 %sub193.i - %cmp204.not145.i = icmp sgt i64 %spec.select135.i, %sub.ptr.sub.i + %cmp204.not145.i = icmp sgt i64 %16, %sub.ptr.sub.i %call218152.i = call ptr @strncpy(ptr noundef %add.ptr195.i, ptr noundef nonnull %call5140.i, i64 noundef %sub.ptr.sub.i) #13 %add.ptr219153.i = getelementptr i8, ptr %add.ptr195.i, i64 %sub.ptr.sub.i br i1 %cmp204.not145.i, label %if.then223.i, label %if.end235.i if.end200.i: ; preds = %if.end185.i - %sub197.i = sub nuw nsw i64 1, %12 + %sub197.i = sub nuw nsw i64 1, %17 call void @llvm.memset.p0.i64(ptr align 1 %p.2.i, i8 48, i64 %sub197.i, i1 false) %add.ptr199.i = getelementptr i8, ptr %p.2.i, i64 %sub197.i - %cmp204.not.i = icmp sgt i64 %spec.select135.i, %sub.ptr.sub.i + %cmp204.not.i = icmp sgt i64 %16, %sub.ptr.sub.i br i1 %cmp204.not.i, label %if.end220.i, label %if.then206.i if.then206.i: ; preds = %if.end200.i - %call208.i = call ptr @strncpy(ptr noundef %add.ptr199.i, ptr noundef nonnull %call5140.i, i64 noundef %spec.select135.i) #13 - %add.ptr210.i = getelementptr i8, ptr %add.ptr199.i, i64 %spec.select135.i + %call208.i = call ptr @strncpy(ptr noundef %add.ptr199.i, ptr noundef nonnull %call5140.i, i64 noundef %16) #13 + %add.ptr210.i = getelementptr i8, ptr %add.ptr199.i, i64 %16 %incdec.ptr211.i = getelementptr i8, ptr %add.ptr210.i, i64 1 store i8 46, ptr %add.ptr210.i, align 1 - %add.ptr212.i = getelementptr i8, ptr %call5140.i, i64 %spec.select135.i - %sub213.i = sub nsw i64 %sub.ptr.sub.i, %spec.select135.i + %add.ptr212.i = getelementptr i8, ptr %call5140.i, i64 %16 + %sub213.i = sub nsw i64 %sub.ptr.sub.i, %16 %call214.i = call ptr @strncpy(ptr noundef %incdec.ptr211.i, ptr noundef %add.ptr212.i, i64 noundef %sub213.i) #13 %add.ptr216.i = getelementptr i8, ptr %incdec.ptr211.i, i64 %sub213.i br label %if.end235.i @@ -750,7 +766,7 @@ if.end220.i: ; preds = %if.end200.i if.then223.i: ; preds = %if.end220.i, %if.end200.thread.i %p.4150.i = phi ptr [ %add.ptr219.i, %if.end220.i ], [ %add.ptr219153.i, %if.end200.thread.i ] - %sub224.i = sub i64 %spec.select135.i, %sub.ptr.sub.i + %sub224.i = sub i64 %16, %sub.ptr.sub.i call void @llvm.memset.p0.i64(ptr align 1 %p.4150.i, i8 48, i64 %sub224.i, i1 false) %add.ptr226.i = getelementptr i8, ptr %p.4150.i, i64 %sub224.i %incdec.ptr227.i = getelementptr i8, ptr %add.ptr226.i, i64 1 @@ -758,26 +774,26 @@ if.then223.i: ; preds = %if.end220.i, %if.en br label %if.end235.i if.end235.i: ; preds = %if.then223.i, %if.then206.i, %if.end200.thread.i - %sub.ptr.sub.sink.i = phi i64 [ %spec.select135.i, %if.then223.i ], [ %sub.ptr.sub.i, %if.then206.i ], [ %sub.ptr.sub.i, %if.end200.thread.i ] - %p.4151.sink169.i = phi ptr [ %incdec.ptr227.i, %if.then223.i ], [ %add.ptr216.i, %if.then206.i ], [ %add.ptr219153.i, %if.end200.thread.i ] - %sub232.i = sub i64 %vdigits_end.1.i, %sub.ptr.sub.sink.i - call void @llvm.memset.p0.i64(ptr align 1 %p.4151.sink169.i, i8 48, i64 %sub232.i, i1 false) - %add.ptr234.i = getelementptr i8, ptr %p.4151.sink169.i, i64 %sub232.i + %sub.ptr.sub.sink.i = phi i64 [ %16, %if.then223.i ], [ %sub.ptr.sub.i, %if.then206.i ], [ %sub.ptr.sub.i, %if.end200.thread.i ] + %p.4151.sink206.i = phi ptr [ %incdec.ptr227.i, %if.then223.i ], [ %add.ptr216.i, %if.then206.i ], [ %add.ptr219153.i, %if.end200.thread.i ] + %sub232.i = sub i64 %vdigits_end.1.i21, %sub.ptr.sub.sink.i + call void @llvm.memset.p0.i64(ptr align 1 %p.4151.sink206.i, i8 48, i64 %sub232.i, i1 false) + %add.ptr234.i = getelementptr i8, ptr %p.4151.sink206.i, i64 %sub232.i %arrayidx236.i = getelementptr i8, ptr %add.ptr234.i, i64 -1 - %14 = load i8, ptr %arrayidx236.i, align 1 - %cmp238.i = icmp ne i8 %14, 46 + %20 = load i8, ptr %arrayidx236.i, align 1 + %cmp238.i = icmp ne i8 %20, 46 %tobool241.i = icmp ne i32 %and13, 0 %or.cond3.i = or i1 %tobool241.i, %cmp238.i %spec.select138.i = select i1 %or.cond3.i, ptr %add.ptr234.i, ptr %arrayidx236.i - br i1 %tobool133.not.i, label %if.then254.i, label %if.then246.i + br i1 %use_exp.0172194.i17, label %if.then254.i, label %if.then246.i if.then246.i: ; preds = %if.end235.i %arrayidx247.i = getelementptr i8, ptr %float_strings.3, i64 16 - %15 = load ptr, ptr %arrayidx247.i, align 8 - %16 = load i8, ptr %15, align 1 + %21 = load ptr, ptr %arrayidx247.i, align 8 + %22 = load i8, ptr %21, align 1 %incdec.ptr249.i = getelementptr i8, ptr %spec.select138.i, i64 1 - store i8 %16, ptr %spec.select138.i, align 1 - %call250.i = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %incdec.ptr249.i, ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %sub136.i) #13 + store i8 %22, ptr %spec.select138.i, align 1 + %call250.i = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %incdec.ptr249.i, ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %sub136176191.i19) #13 %idx.ext.i = sext i32 %call250.i to i64 %add.ptr251.i = getelementptr i8, ptr %incdec.ptr249.i, i64 %idx.ext.i br label %if.then254.i diff --git a/bench/cvc5/optimized/theory_arith_private.cpp.ll b/bench/cvc5/optimized/theory_arith_private.cpp.ll index d5c629a7853..ccf2b6cbaa4 100644 --- a/bench/cvc5/optimized/theory_arith_private.cpp.ll +++ b/bench/cvc5/optimized/theory_arith_private.cpp.ll @@ -9617,32 +9617,21 @@ _ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariabl lor.lhs.false: ; preds = %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %_mp_size.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 12 %15 = load i32, ptr %_mp_size.i.i, align 4 - %cmp6.i.i = icmp ne i32 %15, 0 - %conv.i.i169 = zext i1 %cmp6.i.i to i32 - %cmp.inv.i.i = icmp sgt i32 %15, -1 - %cond.i.i = select i1 %cmp.inv.i.i, i32 %conv.i.i169, i32 -1 - %cmp.i170 = icmp eq i32 %cond.i.i, 0 - br i1 %cmp.i170, label %if.then.i171, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit + %cmp6.i.i.not = icmp eq i32 %15, 0 + br i1 %cmp6.i.i.not, label %if.then.i171, label %if.then42 if.then.i171: ; preds = %lor.lhs.false %_mp_size.i.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 44 %16 = load i32, ptr %_mp_size.i.i.i, align 4 - %cmp6.i.i.i = icmp ne i32 %16, 0 - %conv.i.i.i172 = zext i1 %cmp6.i.i.i to i32 - %cmp.inv.i.i.i = icmp sgt i32 %16, -1 - br i1 %cmp.inv.i.i.i, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, label %if.then42 + %cmp6.i.i.i.not.not = icmp eq i32 %16, 0 + br i1 %cmp6.i.i.i.not.not, label %if.end45, label %if.then42 -_ZNK4cvc58internal13DeltaRational3sgnEv.exit: ; preds = %if.then.i171, %lor.lhs.false - %retval.0.i = phi i32 [ %cond.i.i, %lor.lhs.false ], [ %conv.i.i.i172, %if.then.i171 ] - %cmp41.not = icmp eq i32 %retval.0.i, 0 - br i1 %cmp41.not, label %if.end45, label %if.then42 - -if.then42: ; preds = %if.then.i171, %if.then38, %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit +if.then42: ; preds = %lor.lhs.false, %if.then.i171, %if.then38, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %17 = load ptr, ptr %constraint.addr, align 8 call void @_ZN4cvc58internal6theory5arith6linear22ArithCongruenceManager14equalsConstantEPKNS3_10ConstraintES7_(ptr noundef nonnull align 8 dereferenceable(680) %d_congruenceManager, ptr noundef %17, ptr noundef %10) br label %if.end45 -if.end45: ; preds = %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, %if.then42, %if.end34 +if.end45: ; preds = %if.then.i171, %if.then42, %if.end34 %18 = load ptr, ptr %constraint.addr, align 8 %call46 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4cvc58internal6theory5arith6linear10Constraint18getValueCollectionEv(ptr noundef nonnull align 8 dereferenceable(145) %18) %call47 = call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear15ValueCollection11hasEqualityEv(ptr noundef nonnull align 8 dereferenceable(32) %call46) @@ -9765,11 +9754,11 @@ if.then.i208: ; preds = %if.end102 if.else.i: ; preds = %if.end102 call void @_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE16_M_push_back_auxIJRKS6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %d_currentPropagationList, ptr noundef nonnull align 8 dereferenceable(8) %constraint.addr) - %.pre392 = load ptr, ptr %_M_finish.i, align 8 + %.pre393 = load ptr, ptr %_M_finish.i, align 8 br label %_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backERKS6_.exit _ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backERKS6_.exit: ; preds = %if.then.i208, %if.else.i - %38 = phi ptr [ %incdec.ptr.i, %if.then.i208 ], [ %.pre392, %if.else.i ] + %38 = phi ptr [ %incdec.ptr.i, %if.then.i208 ], [ %.pre393, %if.else.i ] %39 = load i32, ptr %x_i, align 4 %d_image.i.i210 = getelementptr inbounds nuw i8, ptr %this, i64 1464 %conv.i.i211 = zext i32 %39 to i64 @@ -10310,32 +10299,21 @@ _ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariabl lor.lhs.false: ; preds = %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %_mp_size.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 12 %16 = load i32, ptr %_mp_size.i.i, align 4 - %cmp6.i.i = icmp ne i32 %16, 0 - %conv.i.i399 = zext i1 %cmp6.i.i to i32 - %cmp.inv.i.i = icmp sgt i32 %16, -1 - %cond.i.i = select i1 %cmp.inv.i.i, i32 %conv.i.i399, i32 -1 - %cmp.i400 = icmp eq i32 %cond.i.i, 0 - br i1 %cmp.i400, label %if.then.i401, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit + %cmp6.i.i.not = icmp eq i32 %16, 0 + br i1 %cmp6.i.i.not, label %if.then.i401, label %if.then57 if.then.i401: ; preds = %lor.lhs.false %_mp_size.i.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 44 %17 = load i32, ptr %_mp_size.i.i.i, align 4 - %cmp6.i.i.i = icmp ne i32 %17, 0 - %conv.i.i.i402 = zext i1 %cmp6.i.i.i to i32 - %cmp.inv.i.i.i = icmp sgt i32 %17, -1 - br i1 %cmp.inv.i.i.i, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, label %if.then57 - -_ZNK4cvc58internal13DeltaRational3sgnEv.exit: ; preds = %if.then.i401, %lor.lhs.false - %retval.0.i = phi i32 [ %cond.i.i, %lor.lhs.false ], [ %conv.i.i.i402, %if.then.i401 ] - %cmp56.not = icmp eq i32 %retval.0.i, 0 - br i1 %cmp56.not, label %if.end60, label %if.then57 + %cmp6.i.i.i.not.not = icmp eq i32 %17, 0 + br i1 %cmp6.i.i.i.not.not, label %if.end60, label %if.then57 -if.then57: ; preds = %if.then.i401, %if.then53, %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit +if.then57: ; preds = %lor.lhs.false, %if.then.i401, %if.then53, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %18 = load ptr, ptr %constraint.addr, align 8 call void @_ZN4cvc58internal6theory5arith6linear22ArithCongruenceManager14equalsConstantEPKNS3_10ConstraintES7_(ptr noundef nonnull align 8 dereferenceable(680) %d_congruenceManager, ptr noundef %11, ptr noundef %18) br label %if.end60 -if.end60: ; preds = %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, %if.then57, %if.end48 +if.end60: ; preds = %if.then.i401, %if.then57, %if.end48 %call61 = call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear15ValueCollection14hasDisequalityEv(ptr noundef nonnull align 8 dereferenceable(32) %call49) br i1 %call61, label %cond.end75, label %if.end119 @@ -10456,11 +10434,11 @@ if.then.i498: ; preds = %if.end119 if.else.i: ; preds = %if.end119 call void @_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE16_M_push_back_auxIJRKS6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %d_currentPropagationList, ptr noundef nonnull align 8 dereferenceable(8) %constraint.addr) - %.pre705 = load ptr, ptr %_M_finish.i, align 8 + %.pre706 = load ptr, ptr %_M_finish.i, align 8 br label %_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backERKS6_.exit _ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backERKS6_.exit: ; preds = %if.then.i498, %if.else.i - %38 = phi ptr [ %incdec.ptr.i, %if.then.i498 ], [ %.pre705, %if.else.i ] + %38 = phi ptr [ %incdec.ptr.i, %if.then.i498 ], [ %.pre706, %if.else.i ] %39 = load i32, ptr %x_i, align 4 %d_image.i.i500 = getelementptr inbounds nuw i8, ptr %this, i64 1464 %conv.i.i501 = zext i32 %39 to i64 @@ -10791,14 +10769,14 @@ if.then.i.i: ; preds = %_ZNSt5dequeIPN4cvc5 if.else.i.i: ; preds = %_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backERKS6_.exit call void @_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE16_M_push_back_auxIJS6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %d_currentPropagationList, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp43) - %.pre386 = load i32, ptr %x_i, align 4 - %.pre387 = load ptr, ptr %_M_finish.i, align 8 - %.pre388 = zext i32 %.pre386 to i64 + %.pre387 = load i32, ptr %x_i, align 4 + %.pre388 = load ptr, ptr %_M_finish.i, align 8 + %.pre389 = zext i32 %.pre387 to i64 br label %_ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backEOS6_.exit _ZNSt5dequeIPN4cvc58internal6theory5arith6linear10ConstraintESaIS6_EE9push_backEOS6_.exit: ; preds = %if.then.i.i, %if.else.i.i - %conv.i.i225.pre-phi = phi i64 [ %conv.i.i222, %if.then.i.i ], [ %.pre388, %if.else.i.i ] - %17 = phi ptr [ %incdec.ptr.i.i, %if.then.i.i ], [ %.pre387, %if.else.i.i ] + %conv.i.i225.pre-phi = phi i64 [ %conv.i.i222, %if.then.i.i ], [ %.pre389, %if.else.i.i ] + %17 = phi ptr [ %incdec.ptr.i.i, %if.then.i.i ], [ %.pre388, %if.else.i.i ] %18 = load ptr, ptr %d_image.i.i221, align 8 %d_ub.i226 = getelementptr inbounds nuw %"class.cvc5::internal::theory::arith::linear::ArithVariables::VarInfo", ptr %18, i64 %conv.i.i225.pre-phi, i32 4 %19 = load ptr, ptr %d_ub.i226, align 8 @@ -10853,27 +10831,16 @@ _ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariabl if.then55: ; preds = %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %_mp_size.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 12 %29 = load i32, ptr %_mp_size.i.i, align 4 - %cmp6.i.i = icmp ne i32 %29, 0 - %conv.i.i236 = zext i1 %cmp6.i.i to i32 - %cmp.inv.i.i = icmp sgt i32 %29, -1 - %cond.i.i = select i1 %cmp.inv.i.i, i32 %conv.i.i236, i32 -1 - %cmp.i = icmp eq i32 %cond.i.i, 0 - br i1 %cmp.i, label %if.then.i237, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit + %cmp6.i.i.not = icmp eq i32 %29, 0 + br i1 %cmp6.i.i.not, label %if.then.i237, label %if.else if.then.i237: ; preds = %if.then55 %_mp_size.i.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 44 %30 = load i32, ptr %_mp_size.i.i.i, align 4 - %cmp6.i.i.i = icmp ne i32 %30, 0 - %conv.i.i.i238 = zext i1 %cmp6.i.i.i to i32 - %cmp.inv.i.i.i = icmp sgt i32 %30, -1 - br i1 %cmp.inv.i.i.i, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, label %if.else + %cmp6.i.i.i.not.not = icmp eq i32 %30, 0 + br i1 %cmp6.i.i.i.not.not, label %if.then.i239, label %if.else -_ZNK4cvc58internal13DeltaRational3sgnEv.exit: ; preds = %if.then.i237, %if.then55 - %retval.0.i = phi i32 [ %cond.i.i, %if.then55 ], [ %conv.i.i.i238, %if.then.i237 ] - %cmp57 = icmp eq i32 %retval.0.i, 0 - br i1 %cmp57, label %if.then.i239, label %if.else - -if.then.i239: ; preds = %_ZNK4cvc58internal13DeltaRational3sgnEv.exit +if.then.i239: ; preds = %if.then.i237 %31 = load ptr, ptr %d_image.i.i221, align 8 %d_lb.i.i = getelementptr inbounds nuw %"class.cvc5::internal::theory::arith::linear::ArithVariables::VarInfo", ptr %31, i64 %conv.i.i.i, i32 3 %32 = load ptr, ptr %d_lb.i.i, align 8 @@ -10902,7 +10869,7 @@ if.else10.i: ; preds = %if.else.i242 call void @_ZN4cvc58internal6theory5arith6linear22ArithCongruenceManager21watchedVariableIsZeroEPKNS3_10ConstraintES7_(ptr noundef nonnull align 8 dereferenceable(680) %d_congruenceManager, ptr noundef nonnull %32, ptr noundef nonnull %33) br label %if.end99 -if.else: ; preds = %if.then.i237, %_ZNK4cvc58internal13DeltaRational3sgnEv.exit +if.else: ; preds = %if.then55, %if.then.i237 %36 = load ptr, ptr %constraint.addr, align 8 call void @_ZN4cvc58internal6theory5arith6linear22ArithCongruenceManager27watchedVariableCannotBeZeroEPKNS3_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(680) %d_congruenceManager, ptr noundef %36) %37 = load ptr, ptr %constraint.addr, align 8 @@ -11079,31 +11046,20 @@ _ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariabl if.then13: ; preds = %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit %_mp_size.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 12 %5 = load i32, ptr %_mp_size.i.i, align 4 - %cmp6.i.i = icmp ne i32 %5, 0 - %conv.i.i = zext i1 %cmp6.i.i to i32 - %cmp.inv.i.i = icmp sgt i32 %5, -1 - %cond.i.i = select i1 %cmp.inv.i.i, i32 %conv.i.i, i32 -1 - %cmp.i = icmp eq i32 %cond.i.i, 0 - br i1 %cmp.i, label %if.then.i144, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit + %cmp6.i.i.not = icmp eq i32 %5, 0 + br i1 %cmp6.i.i.not, label %if.then.i144, label %if.end18 if.then.i144: ; preds = %if.then13 %_mp_size.i.i.i = getelementptr inbounds nuw i8, ptr %constraint, i64 44 %6 = load i32, ptr %_mp_size.i.i.i, align 4 - %cmp6.i.i.i = icmp ne i32 %6, 0 - %conv.i.i.i145 = zext i1 %cmp6.i.i.i to i32 - %cmp.inv.i.i.i = icmp sgt i32 %6, -1 - br i1 %cmp.inv.i.i.i, label %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, label %if.end18 - -_ZNK4cvc58internal13DeltaRational3sgnEv.exit: ; preds = %if.then.i144, %if.then13 - %retval.0.i = phi i32 [ %cond.i.i, %if.then13 ], [ %conv.i.i.i145, %if.then.i144 ] - %cmp = icmp eq i32 %retval.0.i, 0 - br i1 %cmp, label %if.then15, label %if.end18 + %cmp6.i.i.i.not.not = icmp eq i32 %6, 0 + br i1 %cmp6.i.i.i.not.not, label %if.then15, label %if.end18 -if.then15: ; preds = %_ZNK4cvc58internal13DeltaRational3sgnEv.exit +if.then15: ; preds = %if.then.i144 tail call void @_ZN4cvc58internal6theory5arith6linear22ArithCongruenceManager27watchedVariableCannotBeZeroEPKNS3_10ConstraintE(ptr noundef nonnull align 8 dereferenceable(680) %d_congruenceManager, ptr noundef nonnull %constraint) br label %if.end18 -if.end18: ; preds = %if.then.i144, %if.then, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit, %if.then15, %_ZNK4cvc58internal13DeltaRational3sgnEv.exit, %cond.end +if.end18: ; preds = %if.then13, %if.then.i144, %if.then, %_ZNK4cvc58internal6theory5arith6linear22ArithCongruenceManager17isWatchedVariableEj.exit, %if.then15, %cond.end %call19 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4cvc58internal6theory5arith6linear10Constraint18getValueCollectionEv(ptr noundef nonnull align 8 dereferenceable(145) %constraint) %call20 = tail call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear15ValueCollection13hasLowerBoundEv(ptr noundef nonnull align 8 dereferenceable(32) %call19) br i1 %call20, label %land.lhs.true, label %if.end32 @@ -11278,8 +11234,8 @@ if.else: ; preds = %land.lhs.true90, %_ if.else120: ; preds = %if.else %call.i582 = call noundef i32 @_ZNK4cvc58internal6theory5arith6linear14ArithVariables15cmpToUpperBoundEjRKNS0_13DeltaRationalE(ptr noundef nonnull align 8 dereferenceable(568) %d_partialModel106, i32 noundef %0, ptr noundef nonnull align 8 dereferenceable(64) %d_value.i) %cmp.i583 = icmp sgt i32 %call.i582, 0 - %brmerge = or i1 %cmp.i583, %tobool.i430 - br i1 %brmerge, label %return, label %cond.end148 + %brmerge854 = or i1 %cmp.i583, %tobool.i430 + br i1 %brmerge854, label %return, label %cond.end148 cond.end148: ; preds = %if.else120 %d_diseqQueue = getelementptr inbounds nuw i8, ptr %this, i64 1088 diff --git a/bench/darktable/optimized/metadata.c.ll b/bench/darktable/optimized/metadata.c.ll index 54f5fead2fa..0cbae81adbf 100644 --- a/bench/darktable/optimized/metadata.c.ll +++ b/bench/darktable/optimized/metadata.c.ll @@ -365,18 +365,18 @@ define internal fastcc void @_write_metadata(ptr noundef %0) unnamed_addr #1 { %6 = getelementptr inbounds nuw i8, ptr %5, i64 128 br label %9 -7: ; preds = %49 - %8 = icmp eq ptr %50, null - br i1 %8, label %93, label %53 +7: ; preds = %45 + %8 = icmp eq ptr %46, null + br i1 %8, label %89, label %49 -9: ; preds = %49, %1 - %10 = phi i64 [ 0, %1 ], [ %51, %49 ] - %11 = phi ptr [ null, %1 ], [ %50, %49 ] +9: ; preds = %45, %1 + %10 = phi i64 [ 0, %1 ], [ %47, %45 ] + %11 = phi ptr [ null, %1 ], [ %46, %45 ] %12 = trunc i64 %10 to i32 %13 = call i32 @dt_metadata_get_keyid_by_display_order(i32 noundef %12) #15 %14 = call i32 @dt_metadata_get_type(i32 noundef %12) #15 %15 = icmp eq i32 %14, 2 - br i1 %15, label %49, label %16 + br i1 %15, label %45, label %16 16: ; preds = %9 %17 = getelementptr inbounds nuw [8 x ptr], ptr %5, i64 0, i64 %10 @@ -393,7 +393,7 @@ define internal fastcc void @_write_metadata(ptr noundef %0) unnamed_addr #1 { %23 = getelementptr inbounds nuw [8 x ptr], ptr %6, i64 0, i64 %10 %24 = load ptr, ptr %23, align 8, !tbaa !15 %25 = icmp eq ptr %24, null - br i1 %25, label %37, label %26 + br i1 %25, label %38, label %26 26: ; preds = %16 %27 = load ptr, ptr %17, align 8, !tbaa !15 @@ -402,112 +402,107 @@ define internal fastcc void @_write_metadata(ptr noundef %0) unnamed_addr #1 { %30 = ptrtoint ptr %29 to i64 %31 = and i64 %30, 4294967295 %32 = icmp eq i64 %31, 0 - br i1 %32, label %33, label %37 + br i1 %32, label %33, label %38 33: ; preds = %26 %34 = load ptr, ptr %23, align 8, !tbaa !15 %35 = load ptr, ptr %34, align 8, !tbaa !16 %36 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %22, ptr noundef nonnull dereferenceable(1) %35) #18 - br label %41 - -37: ; preds = %26, %16 - %38 = load i8, ptr %22, align 1, !tbaa !37 - %39 = icmp ne i8 %38, 0 - %40 = zext i1 %39 to i32 - br label %41 - -41: ; preds = %37, %33 - %42 = phi i32 [ %36, %33 ], [ %40, %37 ] - %43 = icmp eq i32 %42, 0 - br i1 %43, label %48, label %44 - -44: ; preds = %41 - %45 = call ptr @dt_metadata_get_key(i32 noundef %13) #15 - %46 = call ptr @g_list_append(ptr noundef %11, ptr noundef %45) #15 - %47 = call ptr @g_list_append(ptr noundef %46, ptr noundef %22) #15 - br label %49 + %37 = icmp eq i32 %36, 0 + br i1 %37, label %44, label %40 + +38: ; preds = %16, %26 + %39 = load i8, ptr %22, align 1, !tbaa !37 + %.not = icmp eq i8 %39, 0 + br i1 %.not, label %44, label %40 + +40: ; preds = %33, %38 + %41 = call ptr @dt_metadata_get_key(i32 noundef %13) #15 + %42 = call ptr @g_list_append(ptr noundef %11, ptr noundef %41) #15 + %43 = call ptr @g_list_append(ptr noundef %42, ptr noundef %22) #15 + br label %45 -48: ; preds = %41 +44: ; preds = %33, %38 call void @g_free(ptr noundef %22) #15 - br label %49 + br label %45 -49: ; preds = %48, %44, %9 - %50 = phi ptr [ %11, %9 ], [ %11, %48 ], [ %47, %44 ] - %51 = add nuw nsw i64 %10, 1 - %52 = icmp eq i64 %51, 8 - br i1 %52, label %7, label %9 +45: ; preds = %44, %40, %9 + %46 = phi ptr [ %11, %9 ], [ %11, %44 ], [ %43, %40 ] + %47 = add nuw nsw i64 %10, 1 + %48 = icmp eq i64 %47, 8 + br i1 %48, label %7, label %9 -53: ; preds = %7 - %54 = getelementptr inbounds nuw i8, ptr %5, i64 344 - %55 = load ptr, ptr %54, align 8, !tbaa !13 - call void @dt_metadata_set_list(ptr noundef %55, ptr noundef nonnull %50, i32 noundef 1) #15 - br label %63 +49: ; preds = %7 + %50 = getelementptr inbounds nuw i8, ptr %5, i64 344 + %51 = load ptr, ptr %50, align 8, !tbaa !13 + call void @dt_metadata_set_list(ptr noundef %51, ptr noundef nonnull %46, i32 noundef 1) #15 + br label %59 -56: ; preds = %63 - call void @g_list_free(ptr noundef nonnull %50) #15 - %57 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3120), align 8, !tbaa !38 - %58 = and i32 %57, 1 - %59 = icmp ne i32 %58, 0 - %60 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3124), align 4 - %61 = icmp ne i32 %60, 0 - %62 = select i1 %59, i1 %61, i1 false - br i1 %62, label %72, label %77 - -63: ; preds = %63, %53 - %64 = phi ptr [ %50, %53 ], [ %70, %63 ] +52: ; preds = %59 + call void @g_list_free(ptr noundef nonnull %46) #15 + %53 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3120), align 8, !tbaa !38 + %54 = and i32 %53, 1 + %55 = icmp ne i32 %54, 0 + %56 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3124), align 4 + %57 = icmp ne i32 %56, 0 + %58 = select i1 %55, i1 %57, i1 false + br i1 %58, label %68, label %73 + +59: ; preds = %59, %49 + %60 = phi ptr [ %46, %49 ], [ %66, %59 ] + %61 = getelementptr inbounds nuw i8, ptr %60, i64 8 + %62 = load ptr, ptr %61, align 8, !tbaa !18 + %63 = load ptr, ptr %62, align 8, !tbaa !16 + call void @g_free(ptr noundef %63) #15 + %64 = load ptr, ptr %61, align 8, !tbaa !18 %65 = getelementptr inbounds nuw i8, ptr %64, i64 8 - %66 = load ptr, ptr %65, align 8, !tbaa !18 - %67 = load ptr, ptr %66, align 8, !tbaa !16 - call void @g_free(ptr noundef %67) #15 - %68 = load ptr, ptr %65, align 8, !tbaa !18 - %69 = getelementptr inbounds nuw i8, ptr %68, i64 8 - %70 = load ptr, ptr %69, align 8, !tbaa !15 - %71 = icmp eq ptr %70, null - br i1 %71, label %56, label %63 - -72: ; preds = %56 - %73 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !20 - %74 = and i32 %73, 1048576 - %75 = icmp eq i32 %74, 0 - br i1 %75, label %77, label %76 - -76: ; preds = %72 + %66 = load ptr, ptr %65, align 8, !tbaa !15 + %67 = icmp eq ptr %66, null + br i1 %67, label %52, label %59 + +68: ; preds = %52 + %69 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !20 + %70 = and i32 %69, 1048576 + %71 = icmp eq i32 %70, 0 + br i1 %71, label %73, label %72 + +72: ; preds = %68 call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.3, i32 noundef 288, ptr noundef nonnull @__FUNCTION__._write_metadata, ptr noundef nonnull @.str.27) #15 - br label %77 + br label %73 -77: ; preds = %76, %72, %56 - %78 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 96), align 8, !tbaa !39 - call void (ptr, i32, ...) @dt_control_signal_raise(ptr noundef %78, i32 noundef 0) #15 - %79 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3120), align 8, !tbaa !38 - %80 = and i32 %79, 1 - %81 = icmp ne i32 %80, 0 - %82 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3168), align 8 - %83 = icmp ne i32 %82, 0 - %84 = select i1 %81, i1 %83, i1 false - br i1 %84, label %85, label %90 - -85: ; preds = %77 - %86 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !20 - %87 = and i32 %86, 1048576 - %88 = icmp eq i32 %87, 0 - br i1 %88, label %90, label %89 - -89: ; preds = %85 +73: ; preds = %72, %68, %52 + %74 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 96), align 8, !tbaa !39 + call void (ptr, i32, ...) @dt_control_signal_raise(ptr noundef %74, i32 noundef 0) #15 + %75 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3120), align 8, !tbaa !38 + %76 = and i32 %75, 1 + %77 = icmp ne i32 %76, 0 + %78 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 3168), align 8 + %79 = icmp ne i32 %78, 0 + %80 = select i1 %77, i1 %79, i1 false + br i1 %80, label %81, label %86 + +81: ; preds = %73 + %82 = load i32, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 8), align 8, !tbaa !20 + %83 = and i32 %82, 1048576 + %84 = icmp eq i32 %83, 0 + br i1 %84, label %86, label %85 + +85: ; preds = %81 call void (ptr, ...) @dt_print_ext(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.3, i32 noundef 290, ptr noundef nonnull @__FUNCTION__._write_metadata, ptr noundef nonnull @.str.48) #15 - br label %90 - -90: ; preds = %89, %85, %77 - %91 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 96), align 8, !tbaa !39 - call void (ptr, i32, ...) @dt_control_signal_raise(ptr noundef %91, i32 noundef 11, i32 noundef 2) #15 - %92 = load ptr, ptr %54, align 8, !tbaa !13 - call void @dt_image_synch_xmps(ptr noundef %92) #15 - br label %93 - -93: ; preds = %90, %7 - %94 = getelementptr inbounds nuw i8, ptr %5, i64 344 - %95 = load ptr, ptr %94, align 8, !tbaa !13 - call void @g_list_free(ptr noundef %95) #15 - store ptr null, ptr %94, align 8, !tbaa !13 + br label %86 + +86: ; preds = %85, %81, %73 + %87 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 96), align 8, !tbaa !39 + call void (ptr, i32, ...) @dt_control_signal_raise(ptr noundef %87, i32 noundef 11, i32 noundef 2) #15 + %88 = load ptr, ptr %50, align 8, !tbaa !13 + call void @dt_image_synch_xmps(ptr noundef %88) #15 + br label %89 + +89: ; preds = %86, %7 + %90 = getelementptr inbounds nuw i8, ptr %5, i64 344 + %91 = load ptr, ptr %90, align 8, !tbaa !13 + call void @g_list_free(ptr noundef %91) #15 + store ptr null, ptr %90, align 8, !tbaa !13 call void @dt_lib_gui_queue_update(ptr noundef %0) #15 ret void } diff --git a/bench/darktable/optimized/timeline.c.ll b/bench/darktable/optimized/timeline.c.ll index a2628c295ec..3d50a6bba0a 100644 --- a/bench/darktable/optimized/timeline.c.ll +++ b/bench/darktable/optimized/timeline.c.ll @@ -4840,7 +4840,7 @@ define internal fastcc void @_selection_collect(ptr nocapture noundef readonly % %39 = load i32, ptr %38, align 4, !tbaa !70 %40 = icmp eq i32 %37, %39 %41 = getelementptr inbounds nuw i8, ptr %0, i64 148 - br i1 %40, label %42, label %62 + br i1 %40, label %42, label %61 42: ; preds = %34 %43 = getelementptr inbounds nuw i8, ptr %0, i64 128 @@ -4888,11 +4888,10 @@ define internal fastcc void @_selection_collect(ptr nocapture noundef readonly % _time_format_for_collect.exit: ; preds = %47, %49, %51, %53, %55 %58 = phi ptr [ %48, %47 ], [ %50, %49 ], [ %52, %51 ], [ %54, %53 ], [ %57, %55 ] %59 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %58) #21 - %60 = icmp ult i64 %59, 11 - %61 = zext i1 %60 to i32 - br label %110 + %60 = icmp ugt i64 %59, 10 + br label %108 -62: ; preds = %34 +61: ; preds = %34 %.sroa.037.0.copyload = load i32, ptr %41, align 4, !tbaa !25 %.sroa.539.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 152 %.sroa.539.0.copyload = load i32, ptr %.sroa.539.0..sroa_idx, align 4, !tbaa !25 @@ -4902,8 +4901,8 @@ _time_format_for_collect.exit: ; preds = %47, %49, %51, %53, %.sroa.745.0.copyload = load i32, ptr %.sroa.745.0..sroa_idx, align 4, !tbaa !25 %.sroa.848.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 164 %.sroa.848.0.copyload = load i32, ptr %.sroa.848.0..sroa_idx, align 4, !tbaa !25 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 176 - %.sroa.068.0.copyload = load i32, ptr %63, align 8, !tbaa !25 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 176 + %.sroa.068.0.copyload = load i32, ptr %62, align 8, !tbaa !25 %.sroa.570.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 180 %.sroa.570.0.copyload = load i32, ptr %.sroa.570.0..sroa_idx, align 4, !tbaa !25 %.sroa.673.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 184 @@ -4912,141 +4911,139 @@ _time_format_for_collect.exit: ; preds = %47, %49, %51, %53, %.sroa.776.0.copyload = load i32, ptr %.sroa.776.0..sroa_idx, align 4, !tbaa !25 %.sroa.879.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 192 %.sroa.879.0.copyload = load i32, ptr %.sroa.879.0..sroa_idx, align 8, !tbaa !25 - %64 = icmp sgt i32 %37, %39 - br i1 %64, label %65, label %66 - -65: ; preds = %62 - br label %66 - -66: ; preds = %65, %62 - %.sroa.037.0 = phi i32 [ %.sroa.068.0.copyload, %65 ], [ %.sroa.037.0.copyload, %62 ] - %.sroa.539.0 = phi i32 [ %.sroa.570.0.copyload, %65 ], [ %.sroa.539.0.copyload, %62 ] - %.sroa.642.0 = phi i32 [ %.sroa.673.0.copyload, %65 ], [ %.sroa.642.0.copyload, %62 ] - %.sroa.745.0 = phi i32 [ %.sroa.776.0.copyload, %65 ], [ %.sroa.745.0.copyload, %62 ] - %.sroa.848.0 = phi i32 [ %.sroa.879.0.copyload, %65 ], [ %.sroa.848.0.copyload, %62 ] - %.sroa.068.0 = phi i32 [ %.sroa.037.0.copyload, %65 ], [ %.sroa.068.0.copyload, %62 ] - %.sroa.570.0 = phi i32 [ %.sroa.539.0.copyload, %65 ], [ %.sroa.570.0.copyload, %62 ] - %.sroa.673.0 = phi i32 [ %.sroa.642.0.copyload, %65 ], [ %.sroa.673.0.copyload, %62 ] - %.sroa.776.0 = phi i32 [ %.sroa.745.0.copyload, %65 ], [ %.sroa.776.0.copyload, %62 ] - %.sroa.879.0 = phi i32 [ %.sroa.848.0.copyload, %65 ], [ %.sroa.879.0.copyload, %62 ] - %67 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %68 = load i32, ptr %67, align 8, !tbaa !26 - %69 = add i32 %68, 1 - %70 = and i32 %69, -2 - switch i32 %70, label %_time_format_for_collect.exit7 [ - i32 -2, label %71 - i32 0, label %73 - i32 2, label %75 - i32 4, label %77 - i32 6, label %79 + %63 = icmp sgt i32 %37, %39 + br i1 %63, label %64, label %65 + +64: ; preds = %61 + br label %65 + +65: ; preds = %64, %61 + %.sroa.037.0 = phi i32 [ %.sroa.068.0.copyload, %64 ], [ %.sroa.037.0.copyload, %61 ] + %.sroa.539.0 = phi i32 [ %.sroa.570.0.copyload, %64 ], [ %.sroa.539.0.copyload, %61 ] + %.sroa.642.0 = phi i32 [ %.sroa.673.0.copyload, %64 ], [ %.sroa.642.0.copyload, %61 ] + %.sroa.745.0 = phi i32 [ %.sroa.776.0.copyload, %64 ], [ %.sroa.745.0.copyload, %61 ] + %.sroa.848.0 = phi i32 [ %.sroa.879.0.copyload, %64 ], [ %.sroa.848.0.copyload, %61 ] + %.sroa.068.0 = phi i32 [ %.sroa.037.0.copyload, %64 ], [ %.sroa.068.0.copyload, %61 ] + %.sroa.570.0 = phi i32 [ %.sroa.539.0.copyload, %64 ], [ %.sroa.570.0.copyload, %61 ] + %.sroa.673.0 = phi i32 [ %.sroa.642.0.copyload, %64 ], [ %.sroa.673.0.copyload, %61 ] + %.sroa.776.0 = phi i32 [ %.sroa.745.0.copyload, %64 ], [ %.sroa.776.0.copyload, %61 ] + %.sroa.879.0 = phi i32 [ %.sroa.848.0.copyload, %64 ], [ %.sroa.879.0.copyload, %61 ] + %66 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %67 = load i32, ptr %66, align 8, !tbaa !26 + %68 = add i32 %67, 1 + %69 = and i32 %68, -2 + switch i32 %69, label %_time_format_for_collect.exit7 [ + i32 -2, label %70 + i32 0, label %72 + i32 2, label %74 + i32 4, label %76 + i32 6, label %78 ] -71: ; preds = %66 - %72 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %.sroa.037.0) #17 +70: ; preds = %65 + %71 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %.sroa.037.0) #17 br label %_time_format_for_collect.exit7 -73: ; preds = %66 - %74 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.37, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0) #17 +72: ; preds = %65 + %73 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.37, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0) #17 br label %_time_format_for_collect.exit7 -75: ; preds = %66 - %76 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0) #17 +74: ; preds = %65 + %75 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0) #17 br label %_time_format_for_collect.exit7 -77: ; preds = %66 - %78 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.39, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0, i32 noundef %.sroa.745.0) #17 +76: ; preds = %65 + %77 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.39, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0, i32 noundef %.sroa.745.0) #17 br label %_time_format_for_collect.exit7 -79: ; preds = %66 - %80 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.40, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0, i32 noundef %.sroa.745.0, i32 noundef %.sroa.848.0) #17 +78: ; preds = %65 + %79 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.40, i32 noundef %.sroa.037.0, i32 noundef %.sroa.539.0, i32 noundef %.sroa.642.0, i32 noundef %.sroa.745.0, i32 noundef %.sroa.848.0) #17 br label %_time_format_for_collect.exit7 -_time_format_for_collect.exit7: ; preds = %66, %71, %73, %75, %77, %79 - %81 = phi ptr [ %72, %71 ], [ %74, %73 ], [ %76, %75 ], [ %78, %77 ], [ %80, %79 ], [ null, %66 ] - %82 = load i32, ptr %67, align 8, !tbaa !26 - %83 = add i32 %82, 1 - %84 = and i32 %83, -2 - switch i32 %84, label %_time_format_for_collect.exit8.thread [ - i32 -2, label %85 - i32 0, label %87 - i32 2, label %89 - i32 4, label %91 - i32 6, label %93 +_time_format_for_collect.exit7: ; preds = %65, %70, %72, %74, %76, %78 + %80 = phi ptr [ %71, %70 ], [ %73, %72 ], [ %75, %74 ], [ %77, %76 ], [ %79, %78 ], [ null, %65 ] + %81 = load i32, ptr %66, align 8, !tbaa !26 + %82 = add i32 %81, 1 + %83 = and i32 %82, -2 + switch i32 %83, label %_time_format_for_collect.exit8.thread [ + i32 -2, label %84 + i32 0, label %86 + i32 2, label %88 + i32 4, label %90 + i32 6, label %92 ] -85: ; preds = %_time_format_for_collect.exit7 - %86 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %.sroa.068.0) #17 +84: ; preds = %_time_format_for_collect.exit7 + %85 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.22, i32 noundef %.sroa.068.0) #17 br label %_time_format_for_collect.exit8 -87: ; preds = %_time_format_for_collect.exit7 - %88 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.37, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0) #17 +86: ; preds = %_time_format_for_collect.exit7 + %87 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.37, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0) #17 br label %_time_format_for_collect.exit8 -89: ; preds = %_time_format_for_collect.exit7 - %90 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0) #17 +88: ; preds = %_time_format_for_collect.exit7 + %89 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.38, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0) #17 br label %_time_format_for_collect.exit8 -91: ; preds = %_time_format_for_collect.exit7 - %92 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.39, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0, i32 noundef %.sroa.776.0) #17 +90: ; preds = %_time_format_for_collect.exit7 + %91 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.39, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0, i32 noundef %.sroa.776.0) #17 br label %_time_format_for_collect.exit8 -93: ; preds = %_time_format_for_collect.exit7 - %94 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.40, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0, i32 noundef %.sroa.776.0, i32 noundef %.sroa.879.0) #17 +92: ; preds = %_time_format_for_collect.exit7 + %93 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.40, i32 noundef %.sroa.068.0, i32 noundef %.sroa.570.0, i32 noundef %.sroa.673.0, i32 noundef %.sroa.776.0, i32 noundef %.sroa.879.0) #17 br label %_time_format_for_collect.exit8 -_time_format_for_collect.exit8: ; preds = %85, %87, %89, %91, %93 - %95 = phi ptr [ %86, %85 ], [ %88, %87 ], [ %90, %89 ], [ %92, %91 ], [ %94, %93 ] - %96 = icmp ne ptr %81, null - %97 = icmp ne ptr %95, null - %98 = select i1 %96, i1 %97, i1 false - br i1 %98, label %99, label %_time_format_for_collect.exit8.thread +_time_format_for_collect.exit8: ; preds = %84, %86, %88, %90, %92 + %94 = phi ptr [ %85, %84 ], [ %87, %86 ], [ %89, %88 ], [ %91, %90 ], [ %93, %92 ] + %95 = icmp ne ptr %80, null + %96 = icmp ne ptr %94, null + %97 = select i1 %95, i1 %96, i1 false + br i1 %97, label %98, label %_time_format_for_collect.exit8.thread + +98: ; preds = %_time_format_for_collect.exit8 + %99 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.36, ptr noundef nonnull %80, ptr noundef nonnull %94) #17 + %100 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %80) #21 + %101 = icmp ugt i64 %100, 10 + br i1 %101, label %_time_format_for_collect.exit8.thread, label %102 + +102: ; preds = %98 + %103 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %94) #21 + %104 = icmp ugt i64 %103, 10 + br label %_time_format_for_collect.exit8.thread -99: ; preds = %_time_format_for_collect.exit8 - %100 = call noalias ptr (ptr, ...) @g_strdup_printf(ptr noundef nonnull @.str.36, ptr noundef nonnull %81, ptr noundef nonnull %95) #17 - %101 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %81) #21 - %102 = icmp ugt i64 %101, 10 - br i1 %102, label %_time_format_for_collect.exit8.thread, label %103 +_time_format_for_collect.exit8.thread: ; preds = %_time_format_for_collect.exit7, %102, %98, %_time_format_for_collect.exit8 + %105 = phi ptr [ %94, %_time_format_for_collect.exit8 ], [ %94, %102 ], [ %94, %98 ], [ null, %_time_format_for_collect.exit7 ] + %106 = phi ptr [ null, %_time_format_for_collect.exit8 ], [ %99, %102 ], [ %99, %98 ], [ null, %_time_format_for_collect.exit7 ] + %107 = phi i1 [ true, %_time_format_for_collect.exit8 ], [ %104, %102 ], [ true, %98 ], [ true, %_time_format_for_collect.exit7 ] + call void @g_free(ptr noundef %80) #17 + call void @g_free(ptr noundef %105) #17 + br label %108 -103: ; preds = %99 - %104 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %95) #21 - %105 = icmp ult i64 %104, 11 - %106 = zext i1 %105 to i32 - br label %_time_format_for_collect.exit8.thread +108: ; preds = %_time_format_for_collect.exit8.thread, %_time_format_for_collect.exit + %109 = phi ptr [ %58, %_time_format_for_collect.exit ], [ %106, %_time_format_for_collect.exit8.thread ] + %110 = phi i1 [ %60, %_time_format_for_collect.exit ], [ %107, %_time_format_for_collect.exit8.thread ] + %111 = icmp eq ptr %109, null + br i1 %111, label %119, label %112 -_time_format_for_collect.exit8.thread: ; preds = %_time_format_for_collect.exit7, %103, %99, %_time_format_for_collect.exit8 - %107 = phi ptr [ %95, %_time_format_for_collect.exit8 ], [ %95, %103 ], [ %95, %99 ], [ null, %_time_format_for_collect.exit7 ] - %108 = phi ptr [ null, %_time_format_for_collect.exit8 ], [ %100, %103 ], [ %100, %99 ], [ null, %_time_format_for_collect.exit7 ] - %109 = phi i32 [ 0, %_time_format_for_collect.exit8 ], [ %106, %103 ], [ 0, %99 ], [ 0, %_time_format_for_collect.exit7 ] - call void @g_free(ptr noundef %81) #17 - call void @g_free(ptr noundef %107) #17 - br label %110 - -110: ; preds = %_time_format_for_collect.exit8.thread, %_time_format_for_collect.exit - %111 = phi ptr [ %58, %_time_format_for_collect.exit ], [ %108, %_time_format_for_collect.exit8.thread ] - %112 = phi i32 [ %61, %_time_format_for_collect.exit ], [ %109, %_time_format_for_collect.exit8.thread ] - %113 = icmp eq ptr %111, null - br i1 %113, label %122, label %114 - -114: ; preds = %110 - %115 = add nuw nsw i32 %35, 1 - call void @dt_conf_set_int(ptr noundef nonnull @.str.31, i32 noundef %115) #17 +112: ; preds = %108 + %113 = add nuw nsw i32 %35, 1 + call void @dt_conf_set_int(ptr noundef nonnull @.str.31, i32 noundef %113) #17 call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %4) #17 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %4, i8 0, i64 200, i1 false) - %116 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.32, i32 noundef %35) #17 - %117 = icmp eq i32 %112, 0 - %118 = select i1 %117, i32 10, i32 9 - call void @dt_conf_set_int(ptr noundef nonnull %4, i32 noundef %118) #17 - %119 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.33, i32 noundef %35) #17 + %114 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.32, i32 noundef %35) #17 + %115 = select i1 %110, i32 10, i32 9 + call void @dt_conf_set_int(ptr noundef nonnull %4, i32 noundef %115) #17 + %116 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.33, i32 noundef %35) #17 call void @dt_conf_set_int(ptr noundef nonnull %4, i32 noundef 0) #17 - %120 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.34, i32 noundef %35) #17 - call void @dt_conf_set_string(ptr noundef nonnull %4, ptr noundef nonnull %111) #17 - call void @g_free(ptr noundef nonnull %111) #17 - %121 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 160), align 8, !tbaa !95 - call void @dt_collection_update_query(ptr noundef %121, i32 noundef 1, i32 noundef 36, ptr noundef null) #17 + %117 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 200, ptr noundef nonnull @.str.34, i32 noundef %35) #17 + call void @dt_conf_set_string(ptr noundef nonnull %4, ptr noundef nonnull %109) #17 + call void @g_free(ptr noundef nonnull %109) #17 + %118 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @darktable, i64 160), align 8, !tbaa !95 + call void @dt_collection_update_query(ptr noundef %118, i32 noundef 1, i32 noundef 36, ptr noundef null) #17 call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %4) #17 - br label %122 + br label %119 -122: ; preds = %114, %110 +119: ; preds = %112, %108 ret void } diff --git a/bench/flac/optimized/stream_encoder.c.ll b/bench/flac/optimized/stream_encoder.c.ll index 8c2e519b1a5..2cc5f81236f 100644 --- a/bench/flac/optimized/stream_encoder.c.ll +++ b/bench/flac/optimized/stream_encoder.c.ll @@ -4307,9 +4307,9 @@ land.rhs7: ; preds = %land.rhs %window = getelementptr inbounds nuw i8, ptr %.pre.pre320, i64 1560 %arrayidx11 = getelementptr inbounds nuw [32 x ptr], ptr %window, i64 0, i64 %indvars.iv %call = tail call i32 @FLAC__memory_alloc_aligned_real_array(i64 noundef %conv, ptr noundef nonnull %arrayidx, ptr noundef nonnull %arrayidx11) #24 - %tobool12.not = icmp eq i32 %call, 0 + %tobool12 = icmp eq i32 %call, 0 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - br i1 %tobool12.not, label %land.rhs7.if.end.loopexit_crit_edge, label %land.rhs, !llvm.loop !52 + br i1 %tobool12, label %land.rhs7.if.end.loopexit_crit_edge, label %land.rhs, !llvm.loop !52 land.rhs7.if.end.loopexit_crit_edge: ; preds = %land.rhs7 %.pre.pre = load ptr, ptr %private_, align 8 diff --git a/bench/freetype/optimized/pfr.c.ll b/bench/freetype/optimized/pfr.c.ll index 90e5d6205fa..eb44ea840a1 100644 --- a/bench/freetype/optimized/pfr.c.ll +++ b/bench/freetype/optimized/pfr.c.ll @@ -3045,7 +3045,7 @@ define internal fastcc i32 @pfr_aux_name_load(ptr nocapture noundef readonly %0, 8: ; preds = %7, %4 %.not31 = icmp eq i32 %1, 0 - br i1 %.not31, label %.thread, label %9 + br i1 %.not31, label %.critedge, label %9 9: ; preds = %8 %10 = zext nneg i32 %1 to i64 @@ -3055,8 +3055,8 @@ define internal fastcc i32 @pfr_aux_name_load(ptr nocapture noundef readonly %0, %14 = icmp eq i8 %13, 0 %15 = sext i1 %14 to i32 %spec.select = add nsw i32 %1, %15 - %.not36 = icmp eq i32 %spec.select, 0 - br i1 %.not36, label %.thread, label %.lr.ph.preheader + %.not33 = icmp eq i32 %spec.select, 0 + br i1 %.not33, label %.critedge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %9 %wide.trip.count = zext nneg i32 %spec.select to i64 @@ -3072,15 +3072,15 @@ define internal fastcc i32 @pfr_aux_name_load(ptr nocapture noundef readonly %0, %17 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv %18 = load i8, ptr %17, align 1 %or.cond = icmp slt i8 %18, 32 - br i1 %or.cond, label %.thread, label %16 + br i1 %or.cond, label %.critedge, label %16 ._crit_edge: ; preds = %16 %19 = add nuw nsw i32 %spec.select, 1 %20 = zext nneg i32 %19 to i64 %21 = call ptr @ft_mem_qalloc(ptr noundef %2, i64 noundef %20, ptr noundef nonnull %5) #12 %22 = load i32, ptr %5, align 4 - %.not33 = icmp eq i32 %22, 0 - br i1 %.not33, label %23, label %.thread + %.not34 = icmp eq i32 %22, 0 + br i1 %.not34, label %23, label %.critedge 23: ; preds = %._crit_edge %24 = zext nneg i32 %spec.select to i64 @@ -3088,9 +3088,9 @@ define internal fastcc i32 @pfr_aux_name_load(ptr nocapture noundef readonly %0, %25 = getelementptr inbounds nuw i8, ptr %21, i64 %24 store i8 0, ptr %25, align 1 %.pre = load i32, ptr %5, align 4 - br label %.thread + br label %.critedge -.thread: ; preds = %.lr.ph, %8, %9, %23, %._crit_edge +.critedge: ; preds = %.lr.ph, %8, %9, %23, %._crit_edge %26 = phi i32 [ %22, %._crit_edge ], [ %.pre, %23 ], [ 0, %9 ], [ 0, %8 ], [ 0, %.lr.ph ] %.026 = phi ptr [ %21, %._crit_edge ], [ %21, %23 ], [ null, %9 ], [ null, %8 ], [ null, %.lr.ph ] store ptr %.026, ptr %3, align 8 @@ -4177,7 +4177,7 @@ pfr_bitwriter_init.exit: ; preds = %7 switch i32 %2, label %pfr_bitwriter_decode_bytes.exit [ i32 0, label %19 i32 1, label %51 - i32 2, label %81 + i32 2, label %80 ] 19: ; preds = %pfr_bitwriter_init.exit @@ -4272,13 +4272,12 @@ pfr_bitwriter_init.exit: ; preds = %7 %.03478.i = phi i32 [ %.135.i, %75 ], [ 128, %.lr.ph.i13.preheader ] %.03677.i = phi ptr [ %.137.i, %75 ], [ %.sroa.0.0, %.lr.ph.i13.preheader ] %.03876.i = phi i32 [ %.139.i, %75 ], [ %9, %.lr.ph.i13.preheader ] - %.04075.i = phi i32 [ %78, %75 ], [ 1, %.lr.ph.i13.preheader ] - %.04174.i = phi i32 [ %79, %75 ], [ %14, %.lr.ph.i13.preheader ] + %.04075.i = phi i1 [ %77, %75 ], [ false, %.lr.ph.i13.preheader ] + %.04174.i = phi i32 [ %78, %75 ], [ %14, %.lr.ph.i13.preheader ] %.sroa.3.073.i = phi i32 [ %.sroa.3.165.i, %75 ], [ 0, %.lr.ph.i13.preheader ] %.04272.i = phi i32 [ %76, %75 ], [ 0, %.lr.ph.i13.preheader ] %.04671.i = phi i32 [ %.14763.i, %75 ], [ 1, %.lr.ph.i13.preheader ] - %.not53.i = icmp eq i32 %.04075.i, 0 - br i1 %.not53.i, label %.loopexit.i, label %.preheader.i + br i1 %.04075.i, label %.loopexit.i, label %.preheader.i .preheader.i: ; preds = %.lr.ph.i13, %60 %.248.i = phi i32 [ %.349.i, %60 ], [ %.04671.i, %.lr.ph.i13 ] @@ -4352,116 +4351,115 @@ pfr_bitwriter_init.exit: ; preds = %7 %.135.i = phi i32 [ 128, %66 ], [ 128, %72 ], [ %70, %69 ] %.233.i = phi i32 [ 0, %66 ], [ 0, %72 ], [ %63, %69 ] %76 = add nsw i32 %.14364.i, -1 - %77 = icmp slt i32 %.14364.i, 2 - %78 = zext i1 %77 to i32 - %79 = add i32 %.04174.i, -1 - %.not.i15 = icmp eq i32 %79, 0 + %77 = icmp sgt i32 %.14364.i, 1 + %78 = add i32 %.04174.i, -1 + %.not.i15 = icmp eq i32 %78, 0 br i1 %.not.i15, label %._crit_edge.i16, label %.lr.ph.i13, !llvm.loop !28 ._crit_edge.i16: ; preds = %75 - %80 = icmp eq i32 %.135.i, 128 - br i1 %80, label %pfr_bitwriter_decode_bytes.exit, label %pfr_bitwriter_decode_bytes.exit.sink.split + %79 = icmp eq i32 %.135.i, 128 + br i1 %79, label %pfr_bitwriter_decode_bytes.exit, label %pfr_bitwriter_decode_bytes.exit.sink.split -81: ; preds = %pfr_bitwriter_init.exit - %82 = ptrtoint ptr %1 to i64 +80: ; preds = %pfr_bitwriter_init.exit + %81 = ptrtoint ptr %1 to i64 %.not63.i = icmp eq i32 %14, 0 br i1 %.not63.i, label %pfr_bitwriter_decode_bytes.exit, label %.lr.ph73.i.preheader -.lr.ph73.i.preheader: ; preds = %81 - %83 = sext i32 %.sroa.11.0 to i64 +.lr.ph73.i.preheader: ; preds = %80 + %82 = sext i32 %.sroa.11.0 to i64 br label %.lr.ph73.i -.lr.ph73.i: ; preds = %.lr.ph73.i.preheader, %103 - %.sroa.0.5 = phi ptr [ %.sroa.0.6, %103 ], [ %.sroa.0.0, %.lr.ph73.i.preheader ] - %.072.i = phi i32 [ %.2.i23, %103 ], [ 0, %.lr.ph73.i.preheader ] - %.02971.i = phi i32 [ %.130.i, %103 ], [ 128, %.lr.ph73.i.preheader ] - %.03170.i = phi ptr [ %.132.i22, %103 ], [ %.sroa.0.0, %.lr.ph73.i.preheader ] - %.03369.i = phi i32 [ %.134.i21, %103 ], [ %9, %.lr.ph73.i.preheader ] - %.03568.i = phi i1 [ %105, %103 ], [ true, %.lr.ph73.i.preheader ] - %.03667.i = phi i32 [ %106, %103 ], [ %14, %.lr.ph73.i.preheader ] - %.03766.i = phi i32 [ %104, %103 ], [ 0, %.lr.ph73.i.preheader ] - %.04065.i = phi i32 [ %.141.i, %103 ], [ 1, %.lr.ph73.i.preheader ] - %.04364.i = phi ptr [ %.144.i, %103 ], [ %0, %.lr.ph73.i.preheader ] - %.not5258.i = icmp ult ptr %.04364.i, %1 - %or.cond.i = select i1 %.03568.i, i1 %.not5258.i, i1 false - br i1 %or.cond.i, label %.lr.ph.preheader.i, label %.loopexit.i17 +.lr.ph73.i: ; preds = %.lr.ph73.i.preheader, %102 + %.sroa.0.5 = phi ptr [ %.sroa.0.6, %102 ], [ %.sroa.0.0, %.lr.ph73.i.preheader ] + %.072.i = phi i32 [ %.2.i23, %102 ], [ 0, %.lr.ph73.i.preheader ] + %.02971.i = phi i32 [ %.130.i, %102 ], [ 128, %.lr.ph73.i.preheader ] + %.03170.i = phi ptr [ %.132.i22, %102 ], [ %.sroa.0.0, %.lr.ph73.i.preheader ] + %.03369.i = phi i32 [ %.134.i21, %102 ], [ %9, %.lr.ph73.i.preheader ] + %.03568.i = phi i1 [ %104, %102 ], [ false, %.lr.ph73.i.preheader ] + %.03667.i = phi i32 [ %105, %102 ], [ %14, %.lr.ph73.i.preheader ] + %.03766.i = phi i32 [ %103, %102 ], [ 0, %.lr.ph73.i.preheader ] + %.04065.i = phi i32 [ %.141.i, %102 ], [ 1, %.lr.ph73.i.preheader ] + %.04364.i = phi ptr [ %.144.i, %102 ], [ %0, %.lr.ph73.i.preheader ] + %.not5258.i = icmp uge ptr %.04364.i, %1 + %or.cond.not.i = select i1 %.03568.i, i1 true, i1 %.not5258.i + br i1 %or.cond.not.i, label %.loopexit.i18, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %.lr.ph73.i %.0436482.i = ptrtoint ptr %.04364.i to i64 - %scevgep.i = getelementptr i8, ptr %.04364.i, i64 %82 - %84 = sub i64 0, %.0436482.i - %scevgep83.i = getelementptr i8, ptr %scevgep.i, i64 %84 - br label %.lr.ph.i26 - -85: ; preds = %.lr.ph.i26 - %exitcond.not.i = icmp eq ptr %86, %scevgep83.i - br i1 %exitcond.not.i, label %.loopexit.i17, label %.lr.ph.i26, !llvm.loop !29 - -.lr.ph.i26: ; preds = %85, %.lr.ph.preheader.i - %.24260.i = phi i32 [ %88, %85 ], [ %.04065.i, %.lr.ph.preheader.i ] - %.24559.i = phi ptr [ %86, %85 ], [ %.04364.i, %.lr.ph.preheader.i ] - %86 = getelementptr inbounds nuw i8, ptr %.24559.i, i64 1 - %87 = load i8, ptr %.24559.i, align 1 - %88 = xor i32 %.24260.i, 1 - %89 = icmp eq i8 %87, 0 - br i1 %89, label %85, label %.loopexit.split.loop.exit54.i, !llvm.loop !29 - -.loopexit.split.loop.exit54.i: ; preds = %.lr.ph.i26 - %90 = zext i8 %87 to i32 - br label %.loopexit.i17 - -.loopexit.i17: ; preds = %85, %.loopexit.split.loop.exit54.i, %.lr.ph73.i - %.144.i = phi ptr [ %.04364.i, %.lr.ph73.i ], [ %86, %.loopexit.split.loop.exit54.i ], [ %scevgep83.i, %85 ] - %.141.i = phi i32 [ %.04065.i, %.lr.ph73.i ], [ %88, %.loopexit.split.loop.exit54.i ], [ %88, %85 ] - %.138.i18 = phi i32 [ %.03766.i, %.lr.ph73.i ], [ %90, %.loopexit.split.loop.exit54.i ], [ 0, %85 ] - %.not53.i19 = icmp eq i32 %.141.i, 0 - %91 = select i1 %.not53.i19, i32 0, i32 %.02971.i - %spec.select.i20 = or i32 %91, %.072.i - %92 = add i32 %.03369.i, -1 - %93 = icmp eq i32 %92, 0 - br i1 %93, label %94, label %97 - -94: ; preds = %.loopexit.i17 - %95 = trunc i32 %spec.select.i20 to i8 - store i8 %95, ptr %.03170.i, align 1 - %96 = getelementptr inbounds i8, ptr %.sroa.0.5, i64 %83 - br label %103 - -97: ; preds = %.loopexit.i17 - %98 = lshr i32 %.02971.i, 1 - %99 = icmp ult i32 %.02971.i, 2 - br i1 %99, label %100, label %103 - -100: ; preds = %97 - %101 = trunc i32 %spec.select.i20 to i8 - store i8 %101, ptr %.03170.i, align 1 - %102 = getelementptr inbounds nuw i8, ptr %.03170.i, i64 1 - br label %103 - -103: ; preds = %100, %97, %94 - %.sroa.0.6 = phi ptr [ %96, %94 ], [ %.sroa.0.5, %100 ], [ %.sroa.0.5, %97 ] - %.134.i21 = phi i32 [ %9, %94 ], [ %92, %100 ], [ %92, %97 ] - %.132.i22 = phi ptr [ %96, %94 ], [ %102, %100 ], [ %.03170.i, %97 ] - %.130.i = phi i32 [ 128, %94 ], [ 128, %100 ], [ %98, %97 ] - %.2.i23 = phi i32 [ 0, %94 ], [ 0, %100 ], [ %spec.select.i20, %97 ] - %104 = add nsw i32 %.138.i18, -1 - %105 = icmp slt i32 %.138.i18, 2 - %106 = add i32 %.03667.i, -1 - %.not.i24 = icmp eq i32 %106, 0 + %scevgep.i = getelementptr i8, ptr %.04364.i, i64 %81 + %83 = sub i64 0, %.0436482.i + %scevgep83.i = getelementptr i8, ptr %scevgep.i, i64 %83 + br label %.lr.ph.i17 + +84: ; preds = %.lr.ph.i17 + %exitcond.not.i = icmp eq ptr %85, %scevgep83.i + br i1 %exitcond.not.i, label %.loopexit.i18, label %.lr.ph.i17, !llvm.loop !29 + +.lr.ph.i17: ; preds = %84, %.lr.ph.preheader.i + %.24260.i = phi i32 [ %87, %84 ], [ %.04065.i, %.lr.ph.preheader.i ] + %.24559.i = phi ptr [ %85, %84 ], [ %.04364.i, %.lr.ph.preheader.i ] + %85 = getelementptr inbounds nuw i8, ptr %.24559.i, i64 1 + %86 = load i8, ptr %.24559.i, align 1 + %87 = xor i32 %.24260.i, 1 + %88 = icmp eq i8 %86, 0 + br i1 %88, label %84, label %.loopexit.split.loop.exit54.i, !llvm.loop !29 + +.loopexit.split.loop.exit54.i: ; preds = %.lr.ph.i17 + %89 = zext i8 %86 to i32 + br label %.loopexit.i18 + +.loopexit.i18: ; preds = %84, %.loopexit.split.loop.exit54.i, %.lr.ph73.i + %.144.i = phi ptr [ %.04364.i, %.lr.ph73.i ], [ %85, %.loopexit.split.loop.exit54.i ], [ %scevgep83.i, %84 ] + %.141.i = phi i32 [ %.04065.i, %.lr.ph73.i ], [ %87, %.loopexit.split.loop.exit54.i ], [ %87, %84 ] + %.138.i19 = phi i32 [ %.03766.i, %.lr.ph73.i ], [ %89, %.loopexit.split.loop.exit54.i ], [ 0, %84 ] + %.not53.i = icmp eq i32 %.141.i, 0 + %90 = select i1 %.not53.i, i32 0, i32 %.02971.i + %spec.select.i20 = or i32 %90, %.072.i + %91 = add i32 %.03369.i, -1 + %92 = icmp eq i32 %91, 0 + br i1 %92, label %93, label %96 + +93: ; preds = %.loopexit.i18 + %94 = trunc i32 %spec.select.i20 to i8 + store i8 %94, ptr %.03170.i, align 1 + %95 = getelementptr inbounds i8, ptr %.sroa.0.5, i64 %82 + br label %102 + +96: ; preds = %.loopexit.i18 + %97 = lshr i32 %.02971.i, 1 + %98 = icmp ult i32 %.02971.i, 2 + br i1 %98, label %99, label %102 + +99: ; preds = %96 + %100 = trunc i32 %spec.select.i20 to i8 + store i8 %100, ptr %.03170.i, align 1 + %101 = getelementptr inbounds nuw i8, ptr %.03170.i, i64 1 + br label %102 + +102: ; preds = %99, %96, %93 + %.sroa.0.6 = phi ptr [ %95, %93 ], [ %.sroa.0.5, %99 ], [ %.sroa.0.5, %96 ] + %.134.i21 = phi i32 [ %9, %93 ], [ %91, %99 ], [ %91, %96 ] + %.132.i22 = phi ptr [ %95, %93 ], [ %101, %99 ], [ %.03170.i, %96 ] + %.130.i = phi i32 [ 128, %93 ], [ 128, %99 ], [ %97, %96 ] + %.2.i23 = phi i32 [ 0, %93 ], [ 0, %99 ], [ %spec.select.i20, %96 ] + %103 = add nsw i32 %.138.i19, -1 + %104 = icmp sgt i32 %.138.i19, 1 + %105 = add i32 %.03667.i, -1 + %.not.i24 = icmp eq i32 %105, 0 br i1 %.not.i24, label %._crit_edge.i25, label %.lr.ph73.i, !llvm.loop !30 -._crit_edge.i25: ; preds = %103 - %107 = icmp eq i32 %.130.i, 128 - br i1 %107, label %pfr_bitwriter_decode_bytes.exit, label %pfr_bitwriter_decode_bytes.exit.sink.split +._crit_edge.i25: ; preds = %102 + %106 = icmp eq i32 %.130.i, 128 + br i1 %106, label %pfr_bitwriter_decode_bytes.exit, label %pfr_bitwriter_decode_bytes.exit.sink.split pfr_bitwriter_decode_bytes.exit.sink.split: ; preds = %._crit_edge.i25, %._crit_edge.i16, %._crit_edge.i %.2.i23.lcssa.sink = phi i32 [ %.2.i, %._crit_edge.i ], [ %.233.i, %._crit_edge.i16 ], [ %.2.i23, %._crit_edge.i25 ] %.132.i22.lcssa.sink = phi ptr [ %.136.i, %._crit_edge.i ], [ %.137.i, %._crit_edge.i16 ], [ %.132.i22, %._crit_edge.i25 ] - %108 = trunc i32 %.2.i23.lcssa.sink to i8 - store i8 %108, ptr %.132.i22.lcssa.sink, align 1 + %107 = trunc i32 %.2.i23.lcssa.sink to i8 + store i8 %107, ptr %.132.i22.lcssa.sink, align 1 br label %pfr_bitwriter_decode_bytes.exit -pfr_bitwriter_decode_bytes.exit: ; preds = %pfr_bitwriter_decode_bytes.exit.sink.split, %._crit_edge.i25, %81, %._crit_edge.i16, %51, %._crit_edge.i, %19, %pfr_bitwriter_init.exit, %7, %5 +pfr_bitwriter_decode_bytes.exit: ; preds = %pfr_bitwriter_decode_bytes.exit.sink.split, %._crit_edge.i25, %80, %._crit_edge.i16, %51, %._crit_edge.i, %19, %pfr_bitwriter_init.exit, %7, %5 ret void } diff --git a/bench/git/optimized/advice.ll b/bench/git/optimized/advice.ll index 6b2c68efa23..16aeb007dec 100644 --- a/bench/git/optimized/advice.ll +++ b/bench/git/optimized/advice.ll @@ -192,29 +192,24 @@ define dso_local void @advise_if_enabled(i32 noundef %type, ptr noundef %advice, entry: %params = alloca [1 x %struct.__va_list_tag], align 16 %cond.i = icmp eq i32 %type, 23 - br i1 %cond.i, label %sw.bb.i, label %sw.default.i + br i1 %cond.i, label %sw.bb.i, label %advice_enabled.exit sw.bb.i: ; preds = %entry %0 = load i32, ptr getelementptr inbounds nuw (i8, ptr @advice_setting, i64 376), align 8 - %tobool.i = icmp ne i32 %0, 0 + %tobool.i = icmp eq i32 %0, 0 %1 = load i32, ptr getelementptr inbounds nuw (i8, ptr @advice_setting, i64 360), align 8 - %tobool1.i = icmp ne i32 %1, 0 - %2 = select i1 %tobool.i, i1 %tobool1.i, i1 false - %land.ext.i = zext i1 %2 to i32 - br label %advice_enabled.exit + %tobool1.i = icmp eq i32 %1, 0 + %.not = select i1 %tobool.i, i1 true, i1 %tobool1.i + br i1 %.not, label %return, label %if.end -sw.default.i: ; preds = %entry +advice_enabled.exit: ; preds = %entry %idxprom.i = zext i32 %type to i64 %enabled.i = getelementptr inbounds nuw [39 x %struct.anon], ptr @advice_setting, i64 0, i64 %idxprom.i, i32 1 - %3 = load i32, ptr %enabled.i, align 8 - br label %advice_enabled.exit + %2 = load i32, ptr %enabled.i, align 8 + %3 = icmp eq i32 %2, 0 + br i1 %3, label %return, label %if.end -advice_enabled.exit: ; preds = %sw.bb.i, %sw.default.i - %retval.0.i = phi i32 [ %land.ext.i, %sw.bb.i ], [ %3, %sw.default.i ] - %tobool.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool.not, label %return, label %if.end - -if.end: ; preds = %advice_enabled.exit +if.end: ; preds = %sw.bb.i, %advice_enabled.exit call void @llvm.va_start.p0(ptr nonnull %params) %idxprom = zext i32 %type to i64 %arrayidx = getelementptr inbounds nuw [39 x %struct.anon], ptr @advice_setting, i64 0, i64 %idxprom @@ -223,7 +218,7 @@ if.end: ; preds = %advice_enabled.exit call void @llvm.va_end.p0(ptr nonnull %params) br label %return -return: ; preds = %advice_enabled.exit, %if.end +return: ; preds = %sw.bb.i, %advice_enabled.exit, %if.end ret void } diff --git a/bench/git/optimized/diff.ll b/bench/git/optimized/diff.ll index ea56a0d009c..cf4d071e8c7 100644 --- a/bench/git/optimized/diff.ll +++ b/bench/git/optimized/diff.ll @@ -12577,9 +12577,9 @@ if.end6.i.i.i.i: ; preds = %if.end.i.i.i.i294 %wsd.i.i.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i45.i.i, i64 8 %466 = load i32, ptr %wsd.i.i.i.i, align 8 %cmp7.i.i.i.i = icmp eq i32 %466, -2147483648 - br i1 %cmp7.i.i.i.i, label %if.end.thread43.i.i.i, label %if.end.i.i.i295 + br i1 %cmp7.i.i.i.i, label %if.end.thread.i.i.i, label %if.end.i.i.i295 -if.end.thread43.i.i.i: ; preds = %if.end6.i.i.i.i +if.end.thread.i.i.i: ; preds = %if.end6.i.i.i.i store i32 %sub.i.i.i.i, ptr %wsd.i.i.i.i, align 8 br label %if.then16.i.i.i @@ -12591,14 +12591,14 @@ land.rhs10.i.i.i: ; preds = %if.else.i.i.i296 %id.i.i.i = getelementptr inbounds nuw i8, ptr %467, i64 24 %468 = load i32, ptr %id.i.i.i, align 8 %469 = load i32, ptr %459, align 8 - %cmp12.i.i.i = icmp eq i32 %468, %469 - br i1 %cmp12.i.i.i, label %if.then16.i.i.i, label %for.inc.i47.i.i + %cmp12.not.i.i.i = icmp eq i32 %468, %469 + br i1 %cmp12.not.i.i.i, label %if.then16.i.i.i, label %for.inc.i47.i.i if.end.i.i.i295: ; preds = %if.end6.i.i.i.i - %cmp12.i.i.i.i = icmp eq i32 %sub.i.i.i.i, %466 - br i1 %cmp12.i.i.i.i, label %if.then16.i.i.i, label %for.inc.i47.i.i + %cmp12.i.not.i.i.i = icmp eq i32 %sub.i.i.i.i, %466 + br i1 %cmp12.i.not.i.i.i, label %if.then16.i.i.i, label %for.inc.i47.i.i -if.then16.i.i.i: ; preds = %if.end.i.i.i295, %land.rhs10.i.i.i, %if.end.thread43.i.i.i, %if.end.i.i.i.i294 +if.then16.i.i.i: ; preds = %if.end.i.i.i295, %land.rhs10.i.i.i, %if.end.thread.i.i.i, %if.end.i.i.i.i294 %idxprom17.i.i.i = sext i32 %j.037.i.i.i to i64 %arrayidx18.i.i.i = getelementptr inbounds %struct.moved_block, ptr %pmb.0244.i.i, i64 %idxprom17.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %arrayidx18.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %arrayidx.i45.i.i, i64 16, i1 false) @@ -12607,7 +12607,7 @@ if.then16.i.i.i: ; preds = %if.end.i.i.i295, %l br label %for.inc.i47.i.i for.inc.i47.i.i: ; preds = %if.then16.i.i.i, %if.end.i.i.i295, %land.rhs10.i.i.i, %if.else.i.i.i296, %land.rhs.i.i.i, %if.then.i.i67.i, %for.body.i43.i.i - %j.1.i.i.i = phi i32 [ %inc.i50.i.i, %if.then16.i.i.i ], [ %j.037.i.i.i, %if.end.i.i.i295 ], [ %j.037.i.i.i, %if.then.i.i67.i ], [ %j.037.i.i.i, %if.else.i.i.i296 ], [ %j.037.i.i.i, %for.body.i43.i.i ], [ %j.037.i.i.i, %land.rhs10.i.i.i ], [ %j.037.i.i.i, %land.rhs.i.i.i ] + %j.1.i.i.i = phi i32 [ %inc.i50.i.i, %if.then16.i.i.i ], [ %j.037.i.i.i, %if.end.i.i.i295 ], [ %j.037.i.i.i, %if.then.i.i67.i ], [ %j.037.i.i.i, %if.else.i.i.i296 ], [ %j.037.i.i.i, %for.body.i43.i.i ], [ %j.037.i.i.i, %land.rhs.i.i.i ], [ %j.037.i.i.i, %land.rhs10.i.i.i ] %indvars.iv.next.i48.i.i = add nuw nsw i64 %indvars.iv.i44.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i48.i.i, %460 br i1 %exitcond.not.i.i, label %pmb_advance_or_null.exit.i.i, label %for.body.i43.i.i, !llvm.loop !41 diff --git a/bench/git/optimized/read-cache.ll b/bench/git/optimized/read-cache.ll index b912ca8da60..df164ccfa0d 100644 --- a/bench/git/optimized/read-cache.ll +++ b/bench/git/optimized/read-cache.ll @@ -8432,8 +8432,8 @@ entry: %5 = load i32, ptr %index_skip_hash, align 4 %skip_hash = getelementptr inbounds nuw i8, ptr %call3, i64 2472 store i32 %5, ptr %skip_hash, align 8 - %cmp377 = icmp sgt i32 %1, 0 - br i1 %cmp377, label %for.body.preheader, label %for.end + %cmp378 = icmp sgt i32 %1, 0 + br i1 %cmp378, label %for.body.preheader, label %for.end for.body.preheader: ; preds = %entry %wide.trip.count = zext nneg i32 %1 to i64 @@ -8441,15 +8441,15 @@ for.body.preheader: ; preds = %entry for.body: ; preds = %for.body.preheader, %for.inc %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.inc ] - %removed.0379 = phi i32 [ 0, %for.body.preheader ], [ %spec.select, %for.inc ] - %extended.0378 = phi i32 [ 0, %for.body.preheader ], [ %extended.1, %for.inc ] + %removed.0380 = phi i32 [ 0, %for.body.preheader ], [ %spec.select, %for.inc ] + %extended.0379 = phi i32 [ 0, %for.body.preheader ], [ %extended.1, %for.inc ] %arrayidx = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv %6 = load ptr, ptr %arrayidx, align 8 %ce_flags = getelementptr inbounds nuw i8, ptr %6, i64 56 %7 = load i32, ptr %ce_flags, align 8 %and = lshr i32 %7, 17 %8 = and i32 %and, 1 - %spec.select = add i32 %8, %removed.0379 + %spec.select = add i32 %8, %removed.0380 %and7 = and i32 %7, -16385 store i32 %and7, ptr %ce_flags, align 8 %9 = load ptr, ptr %arrayidx, align 8 @@ -8460,13 +8460,13 @@ for.body: ; preds = %for.body.preheader, br i1 %tobool12.not, label %for.inc, label %if.then13 if.then13: ; preds = %for.body - %inc14 = add nsw i32 %extended.0378, 1 + %inc14 = add nsw i32 %extended.0379, 1 %or = or i32 %10, 16384 store i32 %or, ptr %ce_flags10, align 8 br label %for.inc for.inc: ; preds = %for.body, %if.then13 - %extended.1 = phi i32 [ %inc14, %if.then13 ], [ %extended.0378, %for.body ] + %extended.1 = phi i32 [ %inc14, %if.then13 ], [ %extended.0379, %for.body ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %for.end.loopexit, label %for.body, !llvm.loop !41 @@ -8575,28 +8575,24 @@ land.lhs.true: ; preds = %if.end41 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %val.i) %call.i159 = call i32 @git_config_get_bool(ptr noundef nonnull @.str.95, ptr noundef nonnull %val.i) #28 %tobool.not.i160 = icmp eq i32 %call.i159, 0 - br i1 %tobool.not.i160, label %if.then.i163, label %if.end.i - -if.then.i163: ; preds = %land.lhs.true - %27 = load i32, ptr %val.i, align 4 - br label %record_ieot.exit + br i1 %tobool.not.i160, label %record_ieot.exit, label %if.end.i if.end.i: ; preds = %land.lhs.true %call1.i = call i32 @git_config_get_index_threads(ptr noundef nonnull %val.i) #28 - %tobool2.not.i = icmp eq i32 %call1.i, 0 - %28 = load i32, ptr %val.i, align 4 - %cmp.i161 = icmp ne i32 %28, 1 - %29 = select i1 %tobool2.not.i, i1 %cmp.i161, i1 false - %land.ext.i = zext i1 %29 to i32 - br label %record_ieot.exit + %tobool2.not.i = icmp ne i32 %call1.i, 0 + %27 = load i32, ptr %val.i, align 4 + %cmp.i161 = icmp eq i32 %27, 1 + %.not = select i1 %tobool2.not.i, i1 true, i1 %cmp.i161 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %val.i) + br i1 %.not, label %if.end68, label %if.then45 -record_ieot.exit: ; preds = %if.then.i163, %if.end.i - %retval.0.i162 = phi i32 [ %land.ext.i, %if.end.i ], [ %27, %if.then.i163 ] +record_ieot.exit: ; preds = %land.lhs.true + %28 = load i32, ptr %val.i, align 4 + %29 = icmp eq i32 %28, 0 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %val.i) - %tobool44.not = icmp eq i32 %retval.0.i162, 0 - br i1 %tobool44.not, label %if.end68, label %if.then45 + br i1 %29, label %if.end68, label %if.then45 -if.then45: ; preds = %record_ieot.exit +if.then45: ; preds = %if.end.i, %record_ieot.exit %30 = load i32, ptr %nr_threads, align 4 %tobool46.not = icmp eq i32 %30, 0 %31 = load i32, ptr %cache_nr, align 4 @@ -8629,17 +8625,17 @@ if.then62: ; preds = %if.end60 %div66 = sdiv i32 %sub65, %ieot_blocks.0 br label %if.end68 -if.end68: ; preds = %if.end41.thread, %if.end60, %if.then62, %record_ieot.exit, %if.end41 - %ieot_entries.0 = phi i32 [ %div66, %if.then62 ], [ 1, %if.end60 ], [ 1, %record_ieot.exit ], [ 1, %if.end41 ], [ 1, %if.end41.thread ] - %ieot.0 = phi ptr [ %call63, %if.then62 ], [ null, %if.end60 ], [ null, %record_ieot.exit ], [ null, %if.end41 ], [ null, %if.end41.thread ] +if.end68: ; preds = %if.end.i, %if.end41.thread, %if.end60, %if.then62, %record_ieot.exit, %if.end41 + %ieot_entries.0 = phi i32 [ %div66, %if.then62 ], [ 1, %if.end60 ], [ 1, %record_ieot.exit ], [ 1, %if.end41 ], [ 1, %if.end41.thread ], [ 1, %if.end.i ] + %ieot.0 = phi ptr [ %call63, %if.then62 ], [ null, %if.end60 ], [ null, %record_ieot.exit ], [ null, %if.end41 ], [ null, %if.end41.thread ], [ null, %if.end.i ] %32 = getelementptr i8, ptr %call3, i64 8 %33 = getelementptr i8, ptr %call3, i64 2416 %cmp70.not = icmp eq i32 %24, 4 %previous_name_buf. = select i1 %cmp70.not, ptr %previous_name_buf, ptr null - br i1 %cmp377, label %for.body76.lr.ph, label %if.end165.thread + br i1 %cmp378, label %for.body76.lr.ph, label %if.end165.thread if.end165.thread: ; preds = %if.end68 - %tobool148408 = icmp ne ptr %ieot.0, null + %tobool148409 = icmp ne ptr %ieot.0, null call void @strbuf_release(ptr noundef nonnull %previous_name_buf) #28 br label %if.end168 @@ -8653,15 +8649,15 @@ for.body76.lr.ph: ; preds = %if.end68 %entries116 = getelementptr inbounds nuw i8, ptr %ieot.0, i64 4 %previous_name_buf.sroa.gep = getelementptr inbounds nuw i8, ptr %previous_name_buf, i64 16 %previous_name_buf.sroa.gep370 = getelementptr inbounds nuw i8, ptr %previous_name_buf, i64 8 - %wide.trip.count402 = zext nneg i32 %1 to i64 + %wide.trip.count403 = zext nneg i32 %1 to i64 br label %for.body76 for.body76: ; preds = %for.body76.lr.ph, %for.inc145 - %indvars.iv399 = phi i64 [ 0, %for.body76.lr.ph ], [ %indvars.iv.next400, %for.inc145 ] - %nr.0385 = phi i32 [ 0, %for.body76.lr.ph ], [ %nr.2, %for.inc145 ] - %offset.0384 = phi i64 [ %add.i, %for.body76.lr.ph ], [ %offset.2, %for.inc145 ] - %drop_cache_tree.0383 = phi i32 [ %bf.cast, %for.body76.lr.ph ], [ %drop_cache_tree.2, %for.inc145 ] - %arrayidx78 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv399 + %indvars.iv400 = phi i64 [ 0, %for.body76.lr.ph ], [ %indvars.iv.next401, %for.inc145 ] + %nr.0386 = phi i32 [ 0, %for.body76.lr.ph ], [ %nr.2, %for.inc145 ] + %offset.0385 = phi i64 [ %add.i, %for.body76.lr.ph ], [ %offset.2, %for.inc145 ] + %drop_cache_tree.0384 = phi i32 [ %bf.cast, %for.body76.lr.ph ], [ %drop_cache_tree.2, %for.inc145 ] + %arrayidx78 = getelementptr inbounds nuw ptr, ptr %0, i64 %indvars.iv400 %35 = load ptr, ptr %arrayidx78, align 8 %ce_flags79 = getelementptr inbounds nuw i8, ptr %35, i64 56 %36 = load i32, ptr %ce_flags79, align 8 @@ -8773,13 +8769,13 @@ if.else102: ; preds = %if.end99 if.end108: ; preds = %if.then101, %if.else102, %is_null_oid.exit %err.3 = phi i1 [ true, %is_null_oid.exit ], [ false, %if.else102 ], [ true, %if.then101 ] - %drop_cache_tree.3 = phi i32 [ %drop_cache_tree.0383, %is_null_oid.exit ], [ 1, %if.else102 ], [ 1, %if.then101 ] - %tobool111 = icmp ne i64 %indvars.iv399, 0 + %drop_cache_tree.3 = phi i32 [ %drop_cache_tree.0384, %is_null_oid.exit ], [ 1, %if.else102 ], [ 1, %if.then101 ] + %tobool111 = icmp ne i64 %indvars.iv400, 0 %or.cond = and i1 %tobool109, %tobool111 br i1 %or.cond, label %land.lhs.true112, label %if.end135 land.lhs.true112: ; preds = %if.end108 - %45 = trunc nuw nsw i64 %indvars.iv399 to i32 + %45 = trunc nuw nsw i64 %indvars.iv400 to i32 %rem = srem i32 %45, %ieot_entries.0 %cmp113 = icmp eq i32 %rem, 0 br i1 %cmp113, label %if.then115, label %if.end135 @@ -8790,8 +8786,8 @@ if.then115: ; preds = %land.lhs.true112 %nr120.idx = shl nsw i64 %idxprom118, 3 %nr120.offs = or disjoint i64 %nr120.idx, 4 %nr120 = getelementptr inbounds i8, ptr %entries116, i64 %nr120.offs - store i32 %nr.0385, ptr %nr120, align 4 - %conv121 = trunc i64 %offset.0384 to i32 + store i32 %nr.0386, ptr %nr120, align 4 + %conv121 = trunc i64 %offset.0385 to i32 %47 = load i32, ptr %ieot.0, align 4 %idxprom124 = sext i32 %47 to i64 %arrayidx125 = getelementptr inbounds [0 x %struct.index_entry_offset], ptr %entries116, i64 0, i64 %idxprom124 @@ -8813,8 +8809,8 @@ if.end133: ; preds = %if.then130, %if.the br label %if.end135 if.end135: ; preds = %if.end133, %land.lhs.true112, %if.end108 - %offset.3 = phi i64 [ %add.i176, %if.end133 ], [ %offset.0384, %land.lhs.true112 ], [ %offset.0384, %if.end108 ] - %nr.3 = phi i32 [ 0, %if.end133 ], [ %nr.0385, %land.lhs.true112 ], [ %nr.0385, %if.end108 ] + %offset.3 = phi i64 [ %add.i176, %if.end133 ], [ %offset.0385, %land.lhs.true112 ], [ %offset.0385, %if.end108 ] + %nr.3 = phi i32 [ 0, %if.end133 ], [ %nr.0386, %land.lhs.true112 ], [ %nr.0386, %if.end108 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %to_remove_vi.i) %49 = load i32, ptr %ce_flags79, align 8 %and.i177 = and i32 %49, 268435456 @@ -8933,12 +8929,12 @@ if.end143: ; preds = %ce_write_entry.exit br label %for.inc145 for.inc145: ; preds = %for.body76, %if.end143 - %drop_cache_tree.2 = phi i32 [ %drop_cache_tree.0383, %for.body76 ], [ %drop_cache_tree.3, %if.end143 ] - %offset.2 = phi i64 [ %offset.0384, %for.body76 ], [ %offset.3, %if.end143 ] - %nr.2 = phi i32 [ %nr.0385, %for.body76 ], [ %inc144, %if.end143 ] - %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1 - %exitcond403.not = icmp eq i64 %indvars.iv.next400, %wide.trip.count402 - br i1 %exitcond403.not, label %for.end147, label %for.body76, !llvm.loop !43 + %drop_cache_tree.2 = phi i32 [ %drop_cache_tree.0384, %for.body76 ], [ %drop_cache_tree.3, %if.end143 ] + %offset.2 = phi i64 [ %offset.0385, %for.body76 ], [ %offset.3, %if.end143 ] + %nr.2 = phi i32 [ %nr.0386, %for.body76 ], [ %inc144, %if.end143 ] + %indvars.iv.next401 = add nuw nsw i64 %indvars.iv400, 1 + %exitcond404.not = icmp eq i64 %indvars.iv.next401, %wide.trip.count403 + br i1 %exitcond404.not, label %for.end147, label %for.body76, !llvm.loop !43 for.end147: ; preds = %for.inc145, %ce_write_entry.exit %cmp74.not.lcssa = phi i1 [ false, %for.inc145 ], [ true, %ce_write_entry.exit ] @@ -8977,8 +8973,8 @@ if.then167: ; preds = %if.then151, %if.end br label %return if.end168: ; preds = %if.then151, %if.end165.thread, %if.end165 - %drop_cache_tree.1412418 = phi i32 [ %bf.cast, %if.end165.thread ], [ %drop_cache_tree.1, %if.end165 ], [ %drop_cache_tree.1, %if.then151 ] - %tobool148413417 = phi i1 [ %tobool148408, %if.end165.thread ], [ %tobool148, %if.end165 ], [ %tobool148, %if.then151 ] + %drop_cache_tree.1413419 = phi i32 [ %bf.cast, %if.end165.thread ], [ %drop_cache_tree.1, %if.end165 ], [ %drop_cache_tree.1, %if.then151 ] + %tobool148414418 = phi i1 [ %tobool148409, %if.end165.thread ], [ %tobool148, %if.end165 ], [ %tobool148, %if.then151 ] %call3.val150 = load i32, ptr %32, align 8 %call3.val151 = load i64, ptr %33, align 8 %conv.i185 = zext i32 %call3.val150 to i64 @@ -8990,28 +8986,24 @@ land.lhs.true171: ; preds = %if.end168 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %val.i187) %call.i188 = call i32 @git_config_get_bool(ptr noundef nonnull @.str.96, ptr noundef nonnull %val.i187) #28 %tobool.not.i189 = icmp eq i32 %call.i188, 0 - br i1 %tobool.not.i189, label %if.then.i196, label %if.end.i190 - -if.then.i196: ; preds = %land.lhs.true171 - %68 = load i32, ptr %val.i187, align 4 - br label %record_eoie.exit + br i1 %tobool.not.i189, label %record_eoie.exit, label %if.end.i190 if.end.i190: ; preds = %land.lhs.true171 %call1.i191 = call i32 @git_config_get_index_threads(ptr noundef nonnull %val.i187) #28 - %tobool2.not.i192 = icmp eq i32 %call1.i191, 0 - %69 = load i32, ptr %val.i187, align 4 - %cmp.i193 = icmp ne i32 %69, 1 - %70 = select i1 %tobool2.not.i192, i1 %cmp.i193, i1 false - %land.ext.i194 = zext i1 %70 to i32 - br label %record_eoie.exit + %tobool2.not.i192 = icmp ne i32 %call1.i191, 0 + %68 = load i32, ptr %val.i187, align 4 + %cmp.i193 = icmp eq i32 %68, 1 + %.not375 = select i1 %tobool2.not.i192, i1 true, i1 %cmp.i193 + call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %val.i187) + br i1 %.not375, label %if.end176, label %if.then174 -record_eoie.exit: ; preds = %if.then.i196, %if.end.i190 - %retval.0.i195 = phi i32 [ %land.ext.i194, %if.end.i190 ], [ %68, %if.then.i196 ] +record_eoie.exit: ; preds = %land.lhs.true171 + %69 = load i32, ptr %val.i187, align 4 + %70 = icmp eq i32 %69, 0 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %val.i187) - %tobool173.not = icmp eq i32 %retval.0.i195, 0 - br i1 %tobool173.not, label %if.end176, label %if.then174 + br i1 %70, label %if.end176, label %if.then174 -if.then174: ; preds = %record_eoie.exit +if.then174: ; preds = %if.end.i190, %record_eoie.exit %call175 = call ptr @xcalloc(i64 noundef 1, i64 noundef 2400) #28 %71 = load ptr, ptr @the_repository, align 8 %hash_algo = getelementptr inbounds nuw i8, ptr %71, i64 256 @@ -9021,9 +9013,9 @@ if.then174: ; preds = %record_eoie.exit call void %73(ptr noundef %call175) #28 br label %if.end176 -if.end176: ; preds = %if.then174, %record_eoie.exit, %if.end168 - %eoie_c.0 = phi ptr [ %call175, %if.then174 ], [ null, %record_eoie.exit ], [ null, %if.end168 ] - br i1 %tobool148413417, label %if.then178, label %if.end189 +if.end176: ; preds = %if.end.i190, %if.then174, %record_eoie.exit, %if.end168 + %eoie_c.0 = phi ptr [ %call175, %if.then174 ], [ null, %record_eoie.exit ], [ null, %if.end168 ], [ null, %if.end.i190 ] + br i1 %tobool148414418, label %if.then178, label %if.end189 if.then178: ; preds = %if.end176 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %sb, ptr noundef nonnull align 8 dereferenceable(24) @__const.do_write_index.sb.87, i64 24, i1 false) @@ -9217,7 +9209,7 @@ if.then212.critedge: ; preds = %if.end199 if.end214: ; preds = %write_index_ext_header.exit229, %land.lhs.true192, %if.end189 %and215 = and i32 %write_extensions, 2 %tobool216 = icmp eq i32 %and215, 0 - %tobool218 = icmp ne i32 %drop_cache_tree.1412418, 0 + %tobool218 = icmp ne i32 %drop_cache_tree.1413419, 0 %or.cond2 = select i1 %tobool216, i1 true, i1 %tobool218 br i1 %or.cond2, label %if.end235, label %land.lhs.true219 @@ -9604,8 +9596,8 @@ if.end338: ; preds = %if.end333 %trace_perf_key.val146 = load i8, ptr getelementptr inbounds nuw (i8, ptr @trace_perf_key, i64 12), align 4 %tobool.not.i367 = icmp eq i32 %trace_perf_key.val, 0 %bf.clear.i = and i8 %trace_perf_key.val146, 1 - %tobool344.not375 = icmp ne i8 %bf.clear.i, 0 - %tobool344.not = select i1 %tobool.not.i367, i1 %tobool344.not375, i1 false + %tobool344.not376 = icmp ne i8 %bf.clear.i, 0 + %tobool344.not = select i1 %tobool.not.i367, i1 %tobool344.not376, i1 false br i1 %tobool344.not, label %do.end, label %if.then345 if.then345: ; preds = %if.end338 diff --git a/bench/git/optimized/remote.ll b/bench/git/optimized/remote.ll index d701f692810..9adbbc16b9d 100644 --- a/bench/git/optimized/remote.ll +++ b/bench/git/optimized/remote.ll @@ -1518,7 +1518,7 @@ entry: br i1 %cmp6, label %for.body, label %return for.body: ; preds = %entry, %for.inc - %1 = phi i32 [ %6, %for.inc ], [ %0, %entry ] + %1 = phi i32 [ %7, %for.inc ], [ %0, %entry ] %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ] %2 = load ptr, ptr %rs, align 8 %arrayidx = getelementptr inbounds nuw %struct.refspec_item, ptr %2, i64 %indvars.iv @@ -1532,36 +1532,31 @@ land.lhs.true: ; preds = %for.body %tobool.not.i = icmp eq i8 %4, 0 %src1.i = getelementptr inbounds nuw i8, ptr %arrayidx, i64 8 %5 = load ptr, ptr %src1.i, align 8 - br i1 %tobool.not.i, label %if.end.i, label %if.then.i + br i1 %tobool.not.i, label %refspec_match.exit, label %if.then.i if.then.i: ; preds = %land.lhs.true %call.i = tail call fastcc i32 @match_name_with_pattern(ptr noundef %5, ptr noundef %name, ptr noundef null, ptr noundef null) - br label %refspec_match.exit + %6 = icmp eq i32 %call.i, 0 + br i1 %6, label %refspec_match.exit.for.inc_crit_edge, label %return -if.end.i: ; preds = %land.lhs.true +refspec_match.exit: ; preds = %land.lhs.true %call2.i = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) %name) #20 - %tobool3.not.i = icmp eq i32 %call2.i, 0 - %lnot.ext.i = zext i1 %tobool3.not.i to i32 - br label %refspec_match.exit - -refspec_match.exit: ; preds = %if.then.i, %if.end.i - %retval.0.i = phi i32 [ %call.i, %if.then.i ], [ %lnot.ext.i, %if.end.i ] - %tobool4.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool4.not, label %refspec_match.exit.for.inc_crit_edge, label %return + %tobool3.not.i.not = icmp eq i32 %call2.i, 0 + br i1 %tobool3.not.i.not, label %return, label %refspec_match.exit.for.inc_crit_edge -refspec_match.exit.for.inc_crit_edge: ; preds = %refspec_match.exit +refspec_match.exit.for.inc_crit_edge: ; preds = %if.then.i, %refspec_match.exit %.pre = load i32, ptr %nr, align 4 br label %for.inc for.inc: ; preds = %refspec_match.exit.for.inc_crit_edge, %for.body - %6 = phi i32 [ %.pre, %refspec_match.exit.for.inc_crit_edge ], [ %1, %for.body ] + %7 = phi i32 [ %.pre, %refspec_match.exit.for.inc_crit_edge ], [ %1, %for.body ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %7 = sext i32 %6 to i64 - %cmp = icmp slt i64 %indvars.iv.next, %7 + %8 = sext i32 %7 to i64 + %cmp = icmp slt i64 %indvars.iv.next, %8 br i1 %cmp, label %for.body, label %return, !llvm.loop !15 -return: ; preds = %refspec_match.exit, %for.inc, %entry - %retval.0 = phi i32 [ 0, %entry ], [ 0, %for.inc ], [ 1, %refspec_match.exit ] +return: ; preds = %refspec_match.exit, %for.inc, %if.then.i, %entry + %retval.0 = phi i32 [ 0, %entry ], [ 1, %if.then.i ], [ 0, %for.inc ], [ 1, %refspec_match.exit ] ret i32 %retval.0 } @@ -1570,8 +1565,8 @@ define dso_local ptr @apply_negative_refspecs(ptr noundef %ref_map, ptr nocaptur entry: %ref_map.addr = alloca ptr, align 8 store ptr %ref_map, ptr %ref_map.addr, align 8 - %tobool.not12 = icmp eq ptr %ref_map, null - br i1 %tobool.not12, label %for.end, label %for.body.lr.ph + %tobool.not13 = icmp eq ptr %ref_map, null + br i1 %tobool.not13, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %entry %nr.i = getelementptr inbounds nuw i8, ptr %rs, i64 12 @@ -1580,12 +1575,12 @@ for.body.lr.ph: ; preds = %entry br i1 %1, label %for.body, label %for.end for.bodythread-pre-split: ; preds = %if.end - %.pr17 = load i32, ptr %nr.i, align 4 + %.pr18 = load i32, ptr %nr.i, align 4 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.bodythread-pre-split - %2 = phi i32 [ %.pr17, %for.bodythread-pre-split ], [ %0, %for.body.lr.ph ] - %tail.013 = phi ptr [ %tail.1, %for.bodythread-pre-split ], [ %ref_map.addr, %for.body.lr.ph ] + %2 = phi i32 [ %.pr18, %for.bodythread-pre-split ], [ %0, %for.body.lr.ph ] + %tail.014 = phi ptr [ %tail.1, %for.bodythread-pre-split ], [ %ref_map.addr, %for.body.lr.ph ] %3 = phi ptr [ %.pr, %for.bodythread-pre-split ], [ %ref_map, %for.body.lr.ph ] %name = getelementptr inbounds nuw i8, ptr %3, i64 176 %cmp6.i = icmp sgt i32 %2, 0 @@ -1609,7 +1604,7 @@ land.lhs.true.i: ; preds = %for.body.i %tobool.not.i.i = icmp eq i8 %7, 0 %src1.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 %8 = load ptr, ptr %src1.i.i, align 8 - br i1 %tobool.not.i.i, label %if.end.i.i, label %if.then.i.i + br i1 %tobool.not.i.i, label %refspec_match.exit.i, label %if.then.i.i if.then.i.i: ; preds = %land.lhs.true.i %call.i = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %8, i32 noundef 42) #20 @@ -1633,29 +1628,29 @@ if.end.i: ; preds = %if.then.i.i %add.i = add i64 %call2.i, %sub.ptr.sub.i %cmp.not.i = icmp ult i64 %call3.i, %add.i %or.cond25.i = select i1 %tobool5.not.i, i1 true, i1 %cmp.not.i - br i1 %or.cond25.i, label %for.inc.i, label %refspec_match.exit.i - -if.end.i.i: ; preds = %land.lhs.true.i - %call2.i.i = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) %name) #20 - %tobool3.not.i.i = icmp eq i32 %call2.i.i, 0 - br i1 %tobool3.not.i.i, label %if.then, label %for.inc.i + br i1 %or.cond25.i, label %for.inc.i, label %match_name_with_pattern.exit -refspec_match.exit.i: ; preds = %if.end.i +match_name_with_pattern.exit: ; preds = %if.end.i %add.ptr6.i = getelementptr inbounds i8, ptr %name, i64 %call3.i %idx.neg.i = sub i64 0, %call2.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr6.i, i64 %idx.neg.i %bcmp.i = tail call i32 @bcmp(ptr nonnull %add.ptr7.i, ptr nonnull %add.ptr.i, i64 %call2.i) - %tobool10.not.i = icmp eq i32 %bcmp.i, 0 - br i1 %tobool10.not.i, label %if.then, label %for.inc.i + %tobool10.not.i.not = icmp eq i32 %bcmp.i, 0 + br i1 %tobool10.not.i.not, label %if.then, label %for.inc.i -for.inc.i: ; preds = %if.end.i, %if.end.i.i, %refspec_match.exit.i, %for.body.i +refspec_match.exit.i: ; preds = %land.lhs.true.i + %call2.i.i = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %8, ptr noundef nonnull dereferenceable(1) %name) #20 + %tobool3.not.i.not.i = icmp eq i32 %call2.i.i, 0 + br i1 %tobool3.not.i.not.i, label %if.then, label %for.inc.i + +for.inc.i: ; preds = %if.end.i, %match_name_with_pattern.exit, %refspec_match.exit.i, %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next.i, %5 br i1 %exitcond.not, label %if.end, label %for.body.i, !llvm.loop !15 -if.then: ; preds = %if.end.i.i, %refspec_match.exit.i +if.then: ; preds = %refspec_match.exit.i, %match_name_with_pattern.exit %9 = load ptr, ptr %3, align 8 - store ptr %9, ptr %tail.013, align 8 + store ptr %9, ptr %tail.014, align 8 %peer_ref = getelementptr inbounds nuw i8, ptr %3, i64 168 %10 = load ptr, ptr %peer_ref, align 8 tail call void @free(ptr noundef %10) #21 @@ -1663,7 +1658,7 @@ if.then: ; preds = %if.end.i.i, %refspe br label %if.end if.end: ; preds = %for.inc.i, %for.body, %if.then - %tail.1 = phi ptr [ %tail.013, %if.then ], [ %3, %for.body ], [ %3, %for.inc.i ] + %tail.1 = phi ptr [ %tail.014, %if.then ], [ %3, %for.body ], [ %3, %for.inc.i ] %.pr = load ptr, ptr %tail.1, align 8 %tobool.not = icmp eq ptr %.pr, null br i1 %tobool.not, label %for.end.loopexit, label %for.bodythread-pre-split, !llvm.loop !16 @@ -1843,14 +1838,14 @@ entry: %cond = load ptr, ptr %cond.in, align 8 %nr = getelementptr inbounds nuw i8, ptr %rs, i64 12 %2 = load i32, ptr %nr, align 4 - %cmp30 = icmp sgt i32 %2, 0 - br i1 %cmp30, label %for.body, label %for.end60 + %cmp31 = icmp sgt i32 %2, 0 + br i1 %cmp31, label %for.body, label %for.end60 for.cond45.preheader: ; preds = %for.inc %nr47.phi.trans.insert = getelementptr inbounds nuw i8, ptr %reversed, i64 8 - %.pre47 = load i64, ptr %nr47.phi.trans.insert, align 8 - %cmp4832.not = icmp eq i64 %.pre47, 0 - br i1 %cmp4832.not, label %for.end60, label %for.body50.lr.ph + %.pre48 = load i64, ptr %nr47.phi.trans.insert, align 8 + %cmp4833.not = icmp eq i64 %.pre48, 0 + br i1 %cmp4833.not, label %for.end60, label %for.body50.lr.ph for.body50.lr.ph: ; preds = %for.cond45.preheader %3 = load ptr, ptr %reversed, align 8 @@ -1863,8 +1858,8 @@ for.body50.lr.ph.split.us: ; preds = %for.body50.lr.ph br label %for.body50.us for.body50.us: ; preds = %omit_name_by_refspec.exit.loopexit.us, %for.body50.lr.ph.split.us - %indvars.iv44 = phi i64 [ %indvars.iv.next45, %omit_name_by_refspec.exit.loopexit.us ], [ 0, %for.body50.lr.ph.split.us ] - %arrayidx53.us = getelementptr inbounds nuw %struct.string_list_item, ptr %3, i64 %indvars.iv44 + %indvars.iv45 = phi i64 [ %indvars.iv.next46, %omit_name_by_refspec.exit.loopexit.us ], [ 0, %for.body50.lr.ph.split.us ] + %arrayidx53.us = getelementptr inbounds nuw %struct.string_list_item, ptr %3, i64 %indvars.iv45 %6 = load ptr, ptr %arrayidx53.us, align 8 br label %for.body.i.us @@ -1881,7 +1876,7 @@ land.lhs.true.i.us: ; preds = %for.body.i.us %tobool.not.i.i.us = icmp eq i8 %8, 0 %src1.i.i.us = getelementptr inbounds nuw i8, ptr %arrayidx.i.us, i64 8 %9 = load ptr, ptr %src1.i.i.us, align 8 - br i1 %tobool.not.i.i.us, label %if.end.i.i.us, label %if.then.i.i.us + br i1 %tobool.not.i.i.us, label %refspec_match.exit.i.us, label %if.then.i.i.us if.then.i.i.us: ; preds = %land.lhs.true.i.us %call.i.us = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %9, i32 noundef 42) #20 @@ -1900,29 +1895,29 @@ if.end.i.us: ; preds = %if.then.i.i.us %add.i.us = add i64 %call2.i.us, %sub.ptr.sub.i.us %cmp.not.i.us = icmp ult i64 %call3.i.us, %add.i.us %or.cond25.i.us = select i1 %tobool5.not.i.us, i1 true, i1 %cmp.not.i.us - br i1 %or.cond25.i.us, label %for.inc.i.us, label %refspec_match.exit.i.us - -if.end.i.i.us: ; preds = %land.lhs.true.i.us - %call2.i.i.us = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) %6) #20 - %tobool3.not.i.i.us = icmp eq i32 %call2.i.i.us, 0 - br i1 %tobool3.not.i.i.us, label %for.end60, label %for.inc.i.us + br i1 %or.cond25.i.us, label %for.inc.i.us, label %match_name_with_pattern.exit.us -refspec_match.exit.i.us: ; preds = %if.end.i.us +match_name_with_pattern.exit.us: ; preds = %if.end.i.us %add.ptr6.i.us = getelementptr inbounds i8, ptr %6, i64 %call3.i.us %idx.neg.i.us = sub i64 0, %call2.i.us %add.ptr7.i.us = getelementptr inbounds i8, ptr %add.ptr6.i.us, i64 %idx.neg.i.us %bcmp.i.us = call i32 @bcmp(ptr %add.ptr7.i.us, ptr nonnull %add.ptr.i.us, i64 %call2.i.us) - %tobool10.not.i.us = icmp eq i32 %bcmp.i.us, 0 - br i1 %tobool10.not.i.us, label %for.end60, label %for.inc.i.us + %tobool10.not.i.not.us = icmp eq i32 %bcmp.i.us, 0 + br i1 %tobool10.not.i.not.us, label %for.end60, label %for.inc.i.us + +refspec_match.exit.i.us: ; preds = %land.lhs.true.i.us + %call2.i.i.us = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) %6) #20 + %tobool3.not.i.not.i.us = icmp eq i32 %call2.i.i.us, 0 + br i1 %tobool3.not.i.not.i.us, label %for.end60, label %for.inc.i.us -for.inc.i.us: ; preds = %if.end.i.us, %if.end.i.i.us, %refspec_match.exit.i.us, %for.body.i.us +for.inc.i.us: ; preds = %refspec_match.exit.i.us, %match_name_with_pattern.exit.us, %if.end.i.us, %for.body.i.us %indvars.iv.next.i.us = add nuw nsw i64 %indvars.iv.i.us, 1 %exitcond.not = icmp eq i64 %indvars.iv.next.i.us, %4 br i1 %exitcond.not, label %omit_name_by_refspec.exit.loopexit.us, label %for.body.i.us, !llvm.loop !15 omit_name_by_refspec.exit.loopexit.us: ; preds = %for.inc.i.us - %indvars.iv.next45 = add nuw nsw i64 %indvars.iv44, 1 - %cmp48.us = icmp ugt i64 %.pre47, %indvars.iv.next45 + %indvars.iv.next46 = add nuw nsw i64 %indvars.iv45, 1 + %cmp48.us = icmp ugt i64 %.pre48, %indvars.iv.next46 br i1 %cmp48.us, label %for.body50.us, label %for.end60, !llvm.loop !19 for.body: ; preds = %entry, %for.inc @@ -1995,8 +1990,8 @@ if.then.i: ; preds = %if.then.i.i.us call void (ptr, ...) @die(ptr noundef %call1.i, ptr noundef %9) #22 unreachable -for.end60: ; preds = %omit_name_by_refspec.exit.loopexit.us, %if.end.i.i.us, %refspec_match.exit.i.us, %entry, %for.body50.lr.ph, %for.cond45.preheader - %matched_negative.0.lcssa = phi i32 [ 0, %for.cond45.preheader ], [ 0, %for.body50.lr.ph ], [ 0, %entry ], [ 1, %refspec_match.exit.i.us ], [ 1, %if.end.i.i.us ], [ 0, %omit_name_by_refspec.exit.loopexit.us ] +for.end60: ; preds = %omit_name_by_refspec.exit.loopexit.us, %match_name_with_pattern.exit.us, %refspec_match.exit.i.us, %entry, %for.body50.lr.ph, %for.cond45.preheader + %matched_negative.0.lcssa = phi i32 [ 0, %for.cond45.preheader ], [ 0, %for.body50.lr.ph ], [ 0, %entry ], [ 1, %refspec_match.exit.i.us ], [ 1, %match_name_with_pattern.exit.us ], [ 0, %omit_name_by_refspec.exit.loopexit.us ] call void @string_list_clear(ptr noundef nonnull %reversed, i32 noundef 0) #21 ret i32 %matched_negative.0.lcssa } diff --git a/bench/gromacs/optimized/tng_io.c.ll b/bench/gromacs/optimized/tng_io.c.ll index 534a60eafd6..763da095475 100644 --- a/bench/gromacs/optimized/tng_io.c.ll +++ b/bench/gromacs/optimized/tng_io.c.ll @@ -22001,82 +22001,79 @@ tng_block_destroy.exit44: ; preds = %61, %64 73: ; preds = %.lr.ph90 %74 = call fastcc i32 @tng_data_block_meta_information_read(ptr noundef %0, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, i8 noundef signext 0, ptr noundef %15) - %75 = icmp eq i32 %74, 0 - %spec.select38 = zext i1 %75 to i32 + %75 = icmp ne i32 %74, 0 %76 = icmp eq i32 %74, 0 br i1 %76, label %.backedge, label %.thread .backedge: ; preds = %73, %.thread75 - %.067.be = phi i32 [ %spec.select38, %73 ], [ 0, %.thread75 ] + %.067.be = phi i1 [ %75, %73 ], [ true, %.thread75 ] %77 = load i64, ptr %48, align 8 %78 = icmp ne i64 %77, 2 - %79 = icmp eq i32 %.067.be, 0 - %or.cond = and i1 %79, %78 + %or.cond = and i1 %.067.be, %78 br i1 %or.cond, label %.lr.ph90, label %..critedge_crit_edge, !llvm.loop !154 .thread75: ; preds = %.lr.ph90 - %80 = load ptr, ptr %68, align 8 - %81 = load i64, ptr %69, align 8 - %82 = call i32 @fseeko64(ptr noundef %80, i64 noundef %81, i32 noundef 1) - %83 = call fastcc i32 @tng_block_header_read(ptr noundef %0, ptr noundef nonnull %16) - %84 = icmp eq i32 %83, 0 - br i1 %84, label %.backedge, label %.thread + %79 = load ptr, ptr %68, align 8 + %80 = load i64, ptr %69, align 8 + %81 = call i32 @fseeko64(ptr noundef %79, i64 noundef %80, i32 noundef 1) + %82 = call fastcc i32 @tng_block_header_read(ptr noundef %0, ptr noundef nonnull %16) + %83 = icmp eq i32 %82, 0 + br i1 %83, label %.backedge, label %.thread ..critedge_crit_edge: ; preds = %.backedge - %.not92 = icmp eq i32 %.067.be, 0 - br i1 %.not92, label %.thread.sink.split, label %85 + br i1 %.067.be, label %.thread.sink.split, label %84 -85: ; preds = %..critedge_crit_edge - %86 = getelementptr inbounds nuw i8, ptr %0, i64 296 - %87 = load i64, ptr %86, align 8 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 288 - %89 = load i64, ptr %88, align 8 - %90 = load i64, ptr %9, align 8 - %.neg = sub i64 %87, %89 - %91 = add i64 %.neg, %90 - %92 = load i64, ptr %10, align 8 - %93 = sdiv i64 %91, %92 +84: ; preds = %..critedge_crit_edge + %85 = getelementptr inbounds nuw i8, ptr %0, i64 296 + %86 = load i64, ptr %85, align 8 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 288 + %88 = load i64, ptr %87, align 8 + %89 = load i64, ptr %9, align 8 + %.neg = sub i64 %86, %88 + %90 = add i64 %.neg, %89 + %91 = load i64, ptr %10, align 8 + %92 = sdiv i64 %90, %91 br label %.thread.sink.split -.thread.sink.split: ; preds = %.lr.ph, %..critedge_crit_edge, %85 - %.sink = phi i64 [ %93, %85 ], [ 0, %..critedge_crit_edge ], [ 0, %.lr.ph ] +.thread.sink.split: ; preds = %.lr.ph, %..critedge_crit_edge, %84 + %.sink = phi i64 [ %92, %84 ], [ 0, %..critedge_crit_edge ], [ 0, %.lr.ph ] store i64 %.sink, ptr %2, align 8 br label %.thread .thread: ; preds = %.thread75, %73, %.thread.sink.split, %65 - %.264 = phi i32 [ %66, %65 ], [ 0, %.thread.sink.split ], [ %83, %.thread75 ], [ %74, %73 ] - %94 = getelementptr inbounds nuw i8, ptr %16, i64 40 - %95 = load ptr, ptr %94, align 8 - %.not16.i46 = icmp eq ptr %95, null - br i1 %.not16.i46, label %97, label %96 + %.264 = phi i32 [ %66, %65 ], [ 0, %.thread.sink.split ], [ %82, %.thread75 ], [ %74, %73 ] + %93 = getelementptr inbounds nuw i8, ptr %16, i64 40 + %94 = load ptr, ptr %93, align 8 + %.not16.i46 = icmp eq ptr %94, null + br i1 %.not16.i46, label %96, label %95 -96: ; preds = %.thread - call void @free(ptr noundef nonnull %95) #24 - store ptr null, ptr %94, align 8 - br label %97 +95: ; preds = %.thread + call void @free(ptr noundef nonnull %94) #24 + store ptr null, ptr %93, align 8 + br label %96 -97: ; preds = %96, %.thread - %98 = getelementptr inbounds nuw i8, ptr %16, i64 104 - %99 = load ptr, ptr %98, align 8 - %.not17.i47 = icmp eq ptr %99, null - br i1 %.not17.i47, label %101, label %100 +96: ; preds = %95, %.thread + %97 = getelementptr inbounds nuw i8, ptr %16, i64 104 + %98 = load ptr, ptr %97, align 8 + %.not17.i47 = icmp eq ptr %98, null + br i1 %.not17.i47, label %100, label %99 -100: ; preds = %97 - call void @free(ptr noundef nonnull %99) #24 - store ptr null, ptr %98, align 8 - br label %101 +99: ; preds = %96 + call void @free(ptr noundef nonnull %98) #24 + store ptr null, ptr %97, align 8 + br label %100 -101: ; preds = %100, %97 - %102 = getelementptr inbounds nuw i8, ptr %16, i64 112 - %103 = load ptr, ptr %102, align 8 - %.not18.i48 = icmp eq ptr %103, null - br i1 %.not18.i48, label %tng_block_destroy.exit49, label %104 +100: ; preds = %99, %96 + %101 = getelementptr inbounds nuw i8, ptr %16, i64 112 + %102 = load ptr, ptr %101, align 8 + %.not18.i48 = icmp eq ptr %102, null + br i1 %.not18.i48, label %tng_block_destroy.exit49, label %103 -104: ; preds = %101 - call void @free(ptr noundef nonnull %103) #24 +103: ; preds = %100 + call void @free(ptr noundef nonnull %102) #24 br label %tng_block_destroy.exit49 -tng_block_destroy.exit49: ; preds = %101, %104 +tng_block_destroy.exit49: ; preds = %100, %103 call void @free(ptr noundef nonnull %16) #24 br label %tng_block_destroy.exit diff --git a/bench/grpc/optimized/jwt_verifier.cc.ll b/bench/grpc/optimized/jwt_verifier.cc.ll index e2331324620..db647360a06 100644 --- a/bench/grpc/optimized/jwt_verifier.cc.ll +++ b/bench/grpc/optimized/jwt_verifier.cc.ll @@ -1160,23 +1160,23 @@ if.end31: ; preds = %if.end.i, %if.end19 %cmp32 = icmp eq ptr %audience, null %aud = getelementptr inbounds nuw i8, ptr %claims, i64 16 %12 = load ptr, ptr %aud, align 8 - %cmp34 = icmp eq ptr %12, null + %cmp34.not = icmp eq ptr %12, null br i1 %cmp32, label %if.then33, label %if.else if.then33: ; preds = %if.end31 - br i1 %cmp34, label %return, label %if.then42 + br i1 %cmp34.not, label %return, label %if.then42 if.else: ; preds = %if.end31 - br i1 %cmp34, label %if.then42, label %if.end41 + br i1 %cmp34.not, label %if.then42, label %if.end41 if.end41: ; preds = %if.else %call38 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %audience, ptr noundef nonnull dereferenceable(1) %12) #28 - %cmp39 = icmp eq i32 %call38, 0 - br i1 %cmp39, label %return, label %if.then42 + %cmp39.not = icmp eq i32 %call38, 0 + br i1 %cmp39.not, label %return, label %if.then42 if.then42: ; preds = %if.then33, %if.else, %if.end41 - %cond = phi ptr [ %audience, %if.else ], [ %audience, %if.end41 ], [ @.str.21, %if.then33 ] - %13 = phi ptr [ null, %if.else ], [ %12, %if.end41 ], [ %12, %if.then33 ] + %13 = phi ptr [ %12, %if.then33 ], [ null, %if.else ], [ %12, %if.end41 ] + %cond = phi ptr [ @.str.21, %if.then33 ], [ %audience, %if.else ], [ %audience, %if.end41 ] %cmp45 = icmp eq ptr %13, null %spec.select = select i1 %cmp45, ptr @.str.21, ptr %13 tail call void (ptr, i32, i32, ptr, ...) @gpr_log(ptr noundef nonnull @.str.15, i32 noundef 350, i32 noundef 2, ptr noundef nonnull @.str.20, ptr noundef nonnull %cond, ptr noundef nonnull %spec.select) diff --git a/bench/hyperscan/optimized/repeat.c.ll b/bench/hyperscan/optimized/repeat.c.ll index 433e9abec9c..546bf1e78a2 100644 --- a/bench/hyperscan/optimized/repeat.c.ll +++ b/bench/hyperscan/optimized/repeat.c.ll @@ -2163,45 +2163,47 @@ if.then.i733.i: ; preds = %if.then5.i %6 = load i8, ptr %add.ptr.i739.i, align 1 %conv.i740.i = zext i8 %6 to i32 %rem.i.i = and i32 %spec.select.i, 7 - %7 = lshr i32 %conv.i740.i, %rem.i.i - %conv2.i744.i = and i32 %7, 1 - br label %ringHasMatch.exit + %7 = shl nuw nsw i32 1, %rem.i.i + %8 = and i32 %7, %conv.i740.i + %.fr = freeze i32 %8 + %9 = icmp eq i32 %.fr, 0 + br i1 %9, label %ringHasMatch.exit.thread45, label %return if.else.i732.i: ; preds = %if.then5.i - %8 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) - %idxprom.i.i.i = zext nneg i32 %8 to i64 + %10 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) + %idxprom.i.i.i = zext nneg i32 %10 to i64 %arrayidx.i.i.i = getelementptr inbounds nuw [32 x i8], ptr @mmbit_maxlevel_direct_lut, i64 0, i64 %idxprom.i.i.i - %9 = load i8, ptr %arrayidx.i.i.i, align 1 + %11 = load i8, ptr %arrayidx.i.i.i, align 1 %conv.i779.i = zext i32 %spec.select.i to i64 - %10 = zext i8 %9 to i64 + %12 = zext i8 %11 to i64 br label %do.body.i.i do.body.i.i: ; preds = %if.end.i763.i, %if.else.i732.i %indvars.iv17.i = phi i64 [ %indvars.iv.next18.i, %if.end.i763.i ], [ 0, %if.else.i732.i ] %arrayidx.i.i775.i = getelementptr inbounds nuw [7 x i32], ptr @mmbit_root_offset_from_level, i64 0, i64 %indvars.iv17.i - %11 = load i32, ptr %arrayidx.i.i775.i, align 4 - %conv.i.i776.i = zext i32 %11 to i64 + %13 = load i32, ptr %arrayidx.i.i775.i, align 4 + %conv.i.i776.i = zext i32 %13 to i64 %mul.i.i777.i = shl nuw nsw i64 %conv.i.i776.i, 3 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %state, i64 %mul.i.i777.i - %12 = sub nsw i64 %10, %indvars.iv17.i - %13 = mul nsw i64 %12, 6 - %14 = add nsw i64 %13, 6 - %shr.i782.i = lshr i64 %conv.i779.i, %14 + %14 = sub nsw i64 %12, %indvars.iv17.i + %15 = mul nsw i64 %14, 6 + %16 = add nsw i64 %15, 6 + %shr.i782.i = lshr i64 %conv.i779.i, %16 %mul.i783.i = shl nuw nsw i64 %shr.i782.i, 3 %add.ptr.i784.i = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i, i64 %mul.i783.i - %15 = load i64, ptr %add.ptr.i784.i, align 1 - %16 = trunc nsw i64 %13 to i32 - %shr.i.i.i = lshr i32 %spec.select.i, %16 - %17 = and i32 %shr.i.i.i, 63 - %sh_prom.i.i760.i = zext nneg i32 %17 to i64 - %18 = shl nuw i64 1, %sh_prom.i.i760.i - %19 = and i64 %18, %15 - %tobool.i761.not.i = icmp eq i64 %19, 0 + %17 = load i64, ptr %add.ptr.i784.i, align 1 + %18 = trunc nsw i64 %15 to i32 + %shr.i.i.i = lshr i32 %spec.select.i, %18 + %19 = and i32 %shr.i.i.i, 63 + %sh_prom.i.i760.i = zext nneg i32 %19 to i64 + %20 = shl nuw i64 1, %sh_prom.i.i760.i + %21 = and i64 %20, %17 + %tobool.i761.not.i = icmp eq i64 %21, 0 br i1 %tobool.i761.not.i, label %ringHasMatch.exit.thread45, label %if.end.i763.i if.end.i763.i: ; preds = %do.body.i.i %indvars.iv.next18.i = add nuw nsw i64 %indvars.iv17.i, 1 - %cmp.i765.not.i = icmp eq i64 %indvars.iv17.i, %10 + %cmp.i765.not.i = icmp eq i64 %indvars.iv17.i, %12 br i1 %cmp.i765.not.i, label %return, label %do.body.i.i, !llvm.loop !15 if.end7.i: ; preds = %do.end43 @@ -2233,13 +2235,13 @@ if.then.i60.i: ; preds = %if.then2.i46.i ] sw.bb.i307.i: ; preds = %if.then.i60.i - %20 = load i8, ptr %state, align 1 - %conv.i308.i = zext i8 %20 to i64 + %22 = load i8, ptr %state, align 1 + %conv.i308.i = zext i8 %22 to i64 br label %if.end.i437.i sw.bb1.i305.i: ; preds = %if.then.i60.i - %21 = load i16, ptr %state, align 1 - %conv2.i306.i = zext i16 %21 to i64 + %23 = load i16, ptr %state, align 1 + %conv2.i306.i = zext i16 %23 to i64 br label %if.end.i437.i sw.bb3.i295.i: ; preds = %if.then.i60.i, %if.then.i60.i @@ -2247,8 +2249,8 @@ sw.bb3.i295.i: ; preds = %if.then.i60.i, %if. %add.ptr.i297.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext.i296.i %add.ptr4.i298.i = getelementptr inbounds i8, ptr %add.ptr.i297.i, i64 -4 %rv.i290.0.copyload.i = load i32, ptr %add.ptr4.i298.i, align 1 - %22 = and i32 %add.i292.i, 248 - %mul.i301.i = sub nsw i32 32, %22 + %24 = and i32 %add.i292.i, 248 + %mul.i301.i = sub nsw i32 32, %24 %shr.i303.i = lshr i32 %rv.i290.0.copyload.i, %mul.i301.i %conv6.i304.i = zext i32 %shr.i303.i to i64 br label %if.end.i437.i @@ -2258,8 +2260,8 @@ sw.default.i309.i: ; preds = %if.then.i60.i %add.ptr9.i311.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext8.i310.i %add.ptr10.i312.i = getelementptr inbounds i8, ptr %add.ptr9.i311.i, i64 -8 %rv7.i291.0.copyload.i = load i64, ptr %add.ptr10.i312.i, align 1 - %23 = shl nuw nsw i64 %idx.ext8.i310.i, 3 - %mul13.i315.i = sub nuw nsw i64 64, %23 + %25 = shl nuw nsw i64 %idx.ext8.i310.i, 3 + %mul13.i315.i = sub nuw nsw i64 64, %25 %shr14.i316.i = lshr i64 %rv7.i291.0.copyload.i, %mul13.i315.i br label %if.end.i437.i @@ -2280,63 +2282,63 @@ if.end.i437.i: ; preds = %sw.default.i309.i, br i1 %tobool.i61.not.i, label %if.end22.i, label %return if.end5.i59.i: ; preds = %if.then2.i46.i - %24 = and i32 %add.i, 448 - %25 = and i32 %spec.select.i, -64 - %cond.i.i = tail call i32 @llvm.umin.i32(i32 %cond.i, i32 %24) - %cmp14.i7.i = icmp ult i32 %25, %cond.i.i + %26 = and i32 %add.i, 448 + %27 = and i32 %spec.select.i, -64 + %cond.i.i = tail call i32 @llvm.umin.i32(i32 %cond.i, i32 %26) + %cmp14.i7.i = icmp ult i32 %27, %cond.i.i br i1 %cmp14.i7.i, label %for.body.i.preheader.i, label %for.end.i.i for.body.i.preheader.i: ; preds = %if.end5.i59.i - %26 = zext i32 %spec.select.i to i64 - %27 = and i64 %26, 4294967232 - %28 = zext nneg i32 %cond.i.i to i64 + %28 = zext i32 %spec.select.i to i64 + %29 = and i64 %28, 4294967232 + %30 = zext nneg i32 %cond.i.i to i64 br label %for.body.i.i for.body.i.i: ; preds = %if.end23.i.i, %for.body.i.preheader.i - %indvars.iv.i = phi i64 [ %27, %for.body.i.preheader.i ], [ %indvars.iv.next.i, %if.end23.i.i ] - %29 = lshr exact i64 %indvars.iv.i, 3 - %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %state, i64 %29 - %30 = load i64, ptr %add.ptr.i.i, align 1 - %31 = trunc nuw i64 %indvars.iv.i to i32 - %sub.i469.i = sub i32 %cond.i, %31 + %indvars.iv.i = phi i64 [ %29, %for.body.i.preheader.i ], [ %indvars.iv.next.i, %if.end23.i.i ] + %31 = lshr exact i64 %indvars.iv.i, 3 + %add.ptr.i.i = getelementptr inbounds nuw i8, ptr %state, i64 %31 + %32 = load i64, ptr %add.ptr.i.i, align 1 + %33 = trunc nuw i64 %indvars.iv.i to i32 + %sub.i469.i = sub i32 %cond.i, %33 %cmp1.i470.i = icmp ult i32 %sub.i469.i, 64 %sh_prom.i606.i = zext nneg i32 %sub.i469.i to i64 %notmask259.i = shl nsw i64 -1, %sh_prom.i606.i %sub.i551.i = xor i64 %notmask259.i, -1 %cond.i473.i = select i1 %cmp1.i470.i, i64 %sub.i551.i, i64 -1 - %cmp2.i474.not.i = icmp samesign ugt i64 %indvars.iv.i, %26 + %cmp2.i474.not.i = icmp samesign ugt i64 %indvars.iv.i, %28 br i1 %cmp2.i474.not.i, label %get_flat_masks.exit489.i, label %if.then3.i476.i if.then3.i476.i: ; preds = %for.body.i.i - %32 = sub nuw nsw i64 %26, %indvars.iv.i - %cmp5.i478.i = icmp samesign ult i64 %32, 64 - %notmask260.i = shl nsw i64 -1, %32 + %34 = sub nuw nsw i64 %28, %indvars.iv.i + %cmp5.i478.i = icmp samesign ult i64 %34, 64 + %notmask260.i = shl nsw i64 -1, %34 %cond10.i481.i = select i1 %cmp5.i478.i, i64 %notmask260.i, i64 0 %and.i482.i = and i64 %cond.i473.i, %cond10.i481.i br label %get_flat_masks.exit489.i get_flat_masks.exit489.i: ; preds = %if.then3.i476.i, %for.body.i.i %mask.i464.0.i = phi i64 [ %and.i482.i, %if.then3.i476.i ], [ %cond.i473.i, %for.body.i.i ] - %and19.i.i = and i64 %mask.i464.0.i, %30 + %and19.i.i = and i64 %mask.i464.0.i, %32 %tobool20.i.not.i = icmp eq i64 %and19.i.i, 0 br i1 %tobool20.i.not.i, label %if.end23.i.i, label %if.then21.i.i if.then21.i.i: ; preds = %get_flat_masks.exit489.i - %33 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and19.i.i, i1 true) - %add.i23.i = or disjoint i64 %33, %indvars.iv.i + %35 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and19.i.i, i1 true) + %add.i23.i = or disjoint i64 %35, %indvars.iv.i br label %if.end5.i45.i if.end23.i.i: ; preds = %get_flat_masks.exit489.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 64 - %cmp14.i.i = icmp samesign ult i64 %indvars.iv.next.i, %28 + %cmp14.i.i = icmp samesign ult i64 %indvars.iv.next.i, %30 br i1 %cmp14.i.i, label %for.body.i.i, label %for.end.i.i, !llvm.loop !5 for.end.i.i: ; preds = %if.end23.i.i, %if.end5.i59.i - %cmp27.i.i = icmp ugt i32 %cond.i, %24 + %cmp27.i.i = icmp ugt i32 %cond.i, %26 br i1 %cmp27.i.i, label %if.then29.i.i, label %if.end22.i if.then29.i.i: ; preds = %for.end.i.i - %div31.i254.i = lshr exact i32 %24, 3 + %div31.i254.i = lshr exact i32 %26, 3 %idx.ext32.i.i = zext nneg i32 %div31.i254.i to i64 %add.ptr33.i.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext32.i.i %sub.i.i40 = and i32 %add.i, 63 @@ -2350,13 +2352,13 @@ if.then29.i.i: ; preds = %for.end.i.i ] sw.bb.i341.i: ; preds = %if.then29.i.i - %34 = load i8, ptr %add.ptr33.i.i, align 1 - %conv.i342.i = zext i8 %34 to i64 + %36 = load i8, ptr %add.ptr33.i.i, align 1 + %conv.i342.i = zext i8 %36 to i64 br label %if.end.i499.i sw.bb1.i339.i: ; preds = %if.then29.i.i - %35 = load i16, ptr %add.ptr33.i.i, align 1 - %conv2.i340.i = zext i16 %35 to i64 + %37 = load i16, ptr %add.ptr33.i.i, align 1 + %conv2.i340.i = zext i16 %37 to i64 br label %if.end.i499.i sw.bb3.i329.i: ; preds = %if.then29.i.i, %if.then29.i.i @@ -2364,8 +2366,8 @@ sw.bb3.i329.i: ; preds = %if.then29.i.i, %if. %add.ptr.i331.i = getelementptr inbounds nuw i8, ptr %add.ptr33.i.i, i64 %idx.ext.i330.i %add.ptr4.i332.i = getelementptr inbounds i8, ptr %add.ptr.i331.i, i64 -4 %rv.i324.0.copyload.i = load i32, ptr %add.ptr4.i332.i, align 1 - %36 = and i32 %add.i326.i, 120 - %mul.i335.i = sub nsw i32 32, %36 + %38 = and i32 %add.i326.i, 120 + %mul.i335.i = sub nsw i32 32, %38 %shr.i337.i = lshr i32 %rv.i324.0.copyload.i, %mul.i335.i %conv6.i338.i = zext i32 %shr.i337.i to i64 br label %if.end.i499.i @@ -2375,24 +2377,24 @@ sw.default.i343.i: ; preds = %if.then29.i.i %add.ptr9.i345.i = getelementptr inbounds nuw i8, ptr %add.ptr33.i.i, i64 %idx.ext8.i344.i %add.ptr10.i346.i = getelementptr inbounds i8, ptr %add.ptr9.i345.i, i64 -8 %rv7.i325.0.copyload.i = load i64, ptr %add.ptr10.i346.i, align 1 - %37 = shl nuw nsw i64 %idx.ext8.i344.i, 3 - %mul13.i349.i = sub nuw nsw i64 64, %37 + %39 = shl nuw nsw i64 %idx.ext8.i344.i, 3 + %mul13.i349.i = sub nuw nsw i64 64, %39 %shr14.i350.i = lshr i64 %rv7.i325.0.copyload.i, %mul13.i349.i br label %if.end.i499.i if.end.i499.i: ; preds = %sw.default.i343.i, %sw.bb3.i329.i, %sw.bb1.i339.i, %sw.bb.i341.i %retval.i320.0.i = phi i64 [ %shr14.i350.i, %sw.default.i343.i ], [ %conv6.i338.i, %sw.bb3.i329.i ], [ %conv2.i340.i, %sw.bb1.i339.i ], [ %conv.i342.i, %sw.bb.i341.i ] - %sub.i500.i = sub nuw i32 %cond.i, %24 + %sub.i500.i = sub nuw i32 %cond.i, %26 %cmp1.i501.i = icmp ult i32 %sub.i500.i, 64 %sh_prom.i612.i = zext nneg i32 %sub.i500.i to i64 %notmask256.i = shl nsw i64 -1, %sh_prom.i612.i %sub.i545.i = xor i64 %notmask256.i, -1 %cond.i504.i = select i1 %cmp1.i501.i, i64 %sub.i545.i, i64 -1 - %cmp2.i505.not.i = icmp ult i32 %spec.select.i, %24 + %cmp2.i505.not.i = icmp ult i32 %spec.select.i, %26 br i1 %cmp2.i505.not.i, label %get_flat_masks.exit520.i, label %if.then3.i507.i if.then3.i507.i: ; preds = %if.end.i499.i - %sub4.i508.i = sub nuw i32 %spec.select.i, %24 + %sub4.i508.i = sub nuw i32 %spec.select.i, %26 %cmp5.i509.i = icmp ult i32 %sub4.i508.i, 64 %sh_prom.i609.i = zext nneg i32 %sub4.i508.i to i64 %notmask257.i = shl nsw i64 -1, %sh_prom.i609.i @@ -2407,15 +2409,15 @@ get_flat_masks.exit520.i: ; preds = %if.then3.i507.i, %i br i1 %tobool38.i.not.i, label %if.end22.i, label %return if.else.i43.i: ; preds = %if.end.i40.i - %38 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) - %idxprom.i641.i = zext nneg i32 %38 to i64 + %40 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) + %idxprom.i641.i = zext nneg i32 %40 to i64 %arrayidx.i642.i = getelementptr inbounds nuw [32 x i8], ptr @mmbit_keyshift_lut, i64 0, i64 %idxprom.i641.i - %39 = load i8, ptr %arrayidx.i642.i, align 1 - %conv.i643.i = zext i8 %39 to i32 - %idxprom.i650.i = zext i8 %39 to i64 + %41 = load i8, ptr %arrayidx.i642.i, align 1 + %conv.i643.i = zext i8 %41 to i32 + %idxprom.i650.i = zext i8 %41 to i64 %arrayidx.i651.i = getelementptr inbounds nuw [32 x i8], ptr @mmbit_maxlevel_from_keyshift_lut, i64 0, i64 %idxprom.i650.i - %40 = load i8, ptr %arrayidx.i651.i, align 1 - %conv.i652.i = zext i8 %40 to i32 + %42 = load i8, ptr %arrayidx.i651.i, align 1 + %conv.i652.i = zext i8 %42 to i32 %dec.i.i = add i32 %cond.i, -1 %conv4.i.i = zext i32 %dec.i.i to i64 br label %for.cond.i143.i @@ -2434,13 +2436,13 @@ for.cond.i143.i: ; preds = %if.end40.i.i, %if.e %conv4.i.sub.i150.i = tail call i64 @llvm.umin.i64(i64 %sub.i150.i, i64 %conv4.i.i) %idxprom.i661.i = zext i32 %level.i.0.i to i64 %arrayidx.i662.i = getelementptr inbounds nuw [7 x i32], ptr @mmbit_root_offset_from_level, i64 0, i64 %idxprom.i661.i - %41 = load i32, ptr %arrayidx.i662.i, align 4 - %conv.i663.i = zext i32 %41 to i64 + %43 = load i32, ptr %arrayidx.i662.i, align 4 + %conv.i663.i = zext i32 %43 to i64 %mul.i664.i = shl nuw nsw i64 %conv.i663.i, 3 %add.ptr.i665.i = getelementptr inbounds nuw i8, ptr %state, i64 %mul.i664.i %mul15.i.i = shl i64 %key.i139.0.i, 3 %add.ptr.i151.i = getelementptr inbounds i8, ptr %add.ptr.i665.i, i64 %mul15.i.i - %42 = load i64, ptr %add.ptr.i151.i, align 1 + %44 = load i64, ptr %add.ptr.i151.i, align 1 %sub.i698.i = sub i32 %conv.i652.i, %level.i.0.i %mul.i699.i = mul i32 %sub.i698.i, 6 %sub1.i700.i = tail call i64 @llvm.usub.sat.i64(i64 %conv.i144.i, i64 %mul.i.i) @@ -2455,15 +2457,15 @@ for.cond.i143.i: ; preds = %if.end40.i.i, %if.e %shl.i19.i718.i = shl nuw i64 2, %shr4.i705.i %sub.i.i719.i = add i64 %shl.i19.i718.i, -1 %cond12.i712.i = select i1 %cmp5.i710.i, i64 %sub.i.i719.i, i64 -1 - %and.i713.i = and i64 %cond.i709.i, %42 + %and.i713.i = and i64 %cond.i709.i, %44 %and.i153.i = and i64 %and.i713.i, %cond12.i712.i %tobool.i154.not.i = icmp eq i64 %and.i153.i, 0 br i1 %tobool.i154.not.i, label %if.else.i155.i, label %if.then.i157.i if.then.i157.i: ; preds = %for.cond.i143.i %shl18.i.i = shl i64 %key.i139.0.i, 6 - %43 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i153.i, i1 true) - %add21.i.i = or disjoint i64 %43, %shl18.i.i + %45 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i153.i, i1 true) + %add21.i.i = or disjoint i64 %45, %shl18.i.i %cmp22.i.i = icmp eq i32 %level.i.0.i, %conv.i652.i br i1 %cmp22.i.i, label %if.end5.i45.i, label %if.end.i158.i @@ -2493,9 +2495,9 @@ if.end40.i.i: ; preds = %if.end37.i.i, %if.e if.end5.i45.i: ; preds = %if.then.i157.i, %if.then21.i.i %key.i35.0.in.i = phi i64 [ %add.i23.i, %if.then21.i.i ], [ %add21.i.i, %if.then.i157.i ] - %44 = and i64 %key.i35.0.in.i, 4294967295 - %45 = icmp eq i64 %44, 4294967295 - br i1 %45, label %if.end22.i, label %return + %46 = and i64 %key.i35.0.in.i, 4294967295 + %47 = icmp eq i64 %46, 4294967295 + br i1 %47, label %if.end22.i, label %return if.end22.i: ; preds = %if.else.i155.i, %if.end5.i45.i, %get_flat_masks.exit520.i, %for.end.i.i, %if.end.i437.i, %if.end7.i %cmp.i.i39 = icmp eq i32 %add10.i, %sub14.i @@ -2521,13 +2523,13 @@ if.then.i125.i: ; preds = %if.then2.i.i ] sw.bb.i.i: ; preds = %if.then.i125.i - %46 = load i8, ptr %state, align 1 - %conv.i248.i = zext i8 %46 to i64 + %48 = load i8, ptr %state, align 1 + %conv.i248.i = zext i8 %48 to i64 br label %if.end.i356.i sw.bb1.i.i: ; preds = %if.then.i125.i - %47 = load i16, ptr %state, align 1 - %conv2.i.i = zext i16 %47 to i64 + %49 = load i16, ptr %state, align 1 + %conv2.i.i = zext i16 %49 to i64 br label %if.end.i356.i sw.bb3.i.i: ; preds = %if.then.i125.i, %if.then.i125.i @@ -2535,8 +2537,8 @@ sw.bb3.i.i: ; preds = %if.then.i125.i, %if %add.ptr.i242.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext.i241.i %add.ptr4.i.i = getelementptr inbounds i8, ptr %add.ptr.i242.i, i64 -4 %rv.i.0.copyload.i = load i32, ptr %add.ptr4.i.i, align 1 - %48 = and i32 %add.i238.i, 248 - %mul.i244.i = sub nsw i32 32, %48 + %50 = and i32 %add.i238.i, 248 + %mul.i244.i = sub nsw i32 32, %50 %shr.i246.i = lshr i32 %rv.i.0.copyload.i, %mul.i244.i %conv6.i247.i = zext i32 %shr.i246.i to i64 br label %if.end.i356.i @@ -2546,8 +2548,8 @@ sw.default.i.i: ; preds = %if.then.i125.i %add.ptr9.i.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext8.i.i %add.ptr10.i.i = getelementptr inbounds i8, ptr %add.ptr9.i.i, i64 -8 %rv7.i.0.copyload.i = load i64, ptr %add.ptr10.i.i, align 1 - %49 = shl nuw nsw i64 %idx.ext8.i.i, 3 - %mul13.i.i = sub nuw nsw i64 64, %49 + %51 = shl nuw nsw i64 %idx.ext8.i.i, 3 + %mul13.i.i = sub nuw nsw i64 64, %51 %shr14.i.i = lshr i64 %rv7.i.0.copyload.i, %mul13.i.i br label %if.end.i356.i @@ -2559,43 +2561,43 @@ if.end.i356.i: ; preds = %sw.default.i.i, %sw %sub.i575.i = xor i64 %notmask271.i, -1 %cond.i360.i = select i1 %cmp1.i.i, i64 %sub.i575.i, i64 -1 %and.i128.i = and i64 %retval.i236.0.i, %cond.i360.i - %tobool.i129.not.i = icmp ne i64 %and.i128.i, 0 - %spec.select28.i = zext i1 %tobool.i129.not.i to i32 - br label %ringHasMatch.exit + %and.i128.i.fr = freeze i64 %and.i128.i + %tobool.i129.not.i.not = icmp eq i64 %and.i128.i.fr, 0 + br i1 %tobool.i129.not.i.not, label %ringHasMatch.exit.thread45, label %return if.end5.i80.i: ; preds = %if.then2.i.i - %50 = and i32 %add.i, 448 - %cond.i90.i = tail call i32 @llvm.umin.i32(i32 %spec.select274.i, i32 %50) - %51 = zext nneg i32 %cond.i90.i to i64 + %52 = and i32 %add.i, 448 + %cond.i90.i = tail call i32 @llvm.umin.i32(i32 %spec.select274.i, i32 %52) + %53 = zext nneg i32 %cond.i90.i to i64 br label %for.body.i109.i for.body.i109.i: ; preds = %if.end23.i117.i, %if.end5.i80.i %indvars.iv = phi i64 [ %indvars.iv.next, %if.end23.i117.i ], [ 0, %if.end5.i80.i ] - %52 = lshr exact i64 %indvars.iv, 3 - %add.ptr.i112.i = getelementptr inbounds nuw i8, ptr %state, i64 %52 - %53 = load i64, ptr %add.ptr.i112.i, align 1 - %54 = trunc nuw nsw i64 %indvars.iv to i32 - %sub.i376.i = sub i32 %spec.select274.i, %54 + %54 = lshr exact i64 %indvars.iv, 3 + %add.ptr.i112.i = getelementptr inbounds nuw i8, ptr %state, i64 %54 + %55 = load i64, ptr %add.ptr.i112.i, align 1 + %56 = trunc nuw nsw i64 %indvars.iv to i32 + %sub.i376.i = sub i32 %spec.select274.i, %56 %cmp1.i377.i = icmp ult i32 %sub.i376.i, 64 %sh_prom.i588.i = zext nneg i32 %sub.i376.i to i64 %notmask269.i = shl nsw i64 -1, %sh_prom.i588.i %sub.i569.i = xor i64 %notmask269.i, -1 %cond.i380.i = select i1 %cmp1.i377.i, i64 %sub.i569.i, i64 -1 - %and19.i115.i = and i64 %cond.i380.i, %53 + %and19.i115.i = and i64 %cond.i380.i, %55 %tobool20.i116.not.i = icmp eq i64 %and19.i115.i, 0 br i1 %tobool20.i116.not.i, label %if.end23.i117.i, label %return if.end23.i117.i: ; preds = %for.body.i109.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 64 - %cmp14.i92.i = icmp samesign ult i64 %indvars.iv.next, %51 + %cmp14.i92.i = icmp samesign ult i64 %indvars.iv.next, %53 br i1 %cmp14.i92.i, label %for.body.i109.i, label %for.end.i93.i, !llvm.loop !5 for.end.i93.i: ; preds = %if.end23.i117.i - %cmp27.i94.i = icmp ugt i32 %spec.select274.i, %50 + %cmp27.i94.i = icmp ugt i32 %spec.select274.i, %52 br i1 %cmp27.i94.i, label %if.then29.i96.i, label %ringHasMatch.exit.thread45 if.then29.i96.i: ; preds = %for.end.i93.i - %div31.i97265.i = lshr exact i32 %50, 3 + %div31.i97265.i = lshr exact i32 %52, 3 %idx.ext32.i98.i = zext nneg i32 %div31.i97265.i to i64 %add.ptr33.i99.i = getelementptr inbounds nuw i8, ptr %state, i64 %idx.ext32.i98.i %sub.i100.i = and i32 %add.i, 63 @@ -2609,59 +2611,46 @@ if.then29.i96.i: ; preds = %for.end.i93.i ] sw.bb.i273.i: ; preds = %if.then29.i96.i - %55 = load i8, ptr %add.ptr33.i99.i, align 1 - %conv.i274.i = zext i8 %55 to i64 - br label %get_flat_masks.exit427.i + %57 = load i8, ptr %add.ptr33.i99.i, align 1 + %conv.i274.i = zext i8 %57 to i64 + br label %ringHasMatch.exit sw.bb1.i271.i: ; preds = %if.then29.i96.i - %56 = load i16, ptr %add.ptr33.i99.i, align 1 - %conv2.i272.i = zext i16 %56 to i64 - br label %get_flat_masks.exit427.i + %58 = load i16, ptr %add.ptr33.i99.i, align 1 + %conv2.i272.i = zext i16 %58 to i64 + br label %ringHasMatch.exit sw.bb3.i261.i: ; preds = %if.then29.i96.i, %if.then29.i96.i %idx.ext.i262.i = zext nneg i32 %div.i260266.i to i64 %add.ptr.i263.i = getelementptr inbounds nuw i8, ptr %add.ptr33.i99.i, i64 %idx.ext.i262.i %add.ptr4.i264.i = getelementptr inbounds i8, ptr %add.ptr.i263.i, i64 -4 %rv.i256.0.copyload.i = load i32, ptr %add.ptr4.i264.i, align 1 - %57 = and i32 %add.i258.i, 120 - %mul.i267.i = sub nsw i32 32, %57 + %59 = and i32 %add.i258.i, 120 + %mul.i267.i = sub nsw i32 32, %59 %shr.i269.i = lshr i32 %rv.i256.0.copyload.i, %mul.i267.i %conv6.i270.i = zext i32 %shr.i269.i to i64 - br label %get_flat_masks.exit427.i + br label %ringHasMatch.exit sw.default.i275.i: ; preds = %if.then29.i96.i %idx.ext8.i276.i = zext nneg i32 %div.i260266.i to i64 %add.ptr9.i277.i = getelementptr inbounds nuw i8, ptr %add.ptr33.i99.i, i64 %idx.ext8.i276.i %add.ptr10.i278.i = getelementptr inbounds i8, ptr %add.ptr9.i277.i, i64 -8 %rv7.i257.0.copyload.i = load i64, ptr %add.ptr10.i278.i, align 1 - %58 = shl nuw nsw i64 %idx.ext8.i276.i, 3 - %mul13.i281.i = sub nuw nsw i64 64, %58 + %60 = shl nuw nsw i64 %idx.ext8.i276.i, 3 + %mul13.i281.i = sub nuw nsw i64 64, %60 %shr14.i282.i = lshr i64 %rv7.i257.0.copyload.i, %mul13.i281.i - br label %get_flat_masks.exit427.i - -get_flat_masks.exit427.i: ; preds = %sw.default.i275.i, %sw.bb3.i261.i, %sw.bb1.i271.i, %sw.bb.i273.i - %retval.i252.0.i = phi i64 [ %shr14.i282.i, %sw.default.i275.i ], [ %conv6.i270.i, %sw.bb3.i261.i ], [ %conv2.i272.i, %sw.bb1.i271.i ], [ %conv.i274.i, %sw.bb.i273.i ] - %sub.i407.i = sub nuw i32 %spec.select274.i, %50 - %cmp1.i408.i = icmp ult i32 %sub.i407.i, 64 - %sh_prom.i594.i = zext nneg i32 %sub.i407.i to i64 - %notmask267.i = shl nsw i64 -1, %sh_prom.i594.i - %sub.i563.i = xor i64 %notmask267.i, -1 - %cond.i411.i = select i1 %cmp1.i408.i, i64 %sub.i563.i, i64 -1 - %and37.i103.i = and i64 %retval.i252.0.i, %cond.i411.i - %tobool38.i104.not.i = icmp ne i64 %and37.i103.i, 0 - %spec.select29.i = zext i1 %tobool38.i104.not.i to i32 br label %ringHasMatch.exit if.else.i.i: ; preds = %if.end.i.i - %59 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) - %idxprom.i.i = zext nneg i32 %59 to i64 + %61 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %info.val, i1 true) + %idxprom.i.i = zext nneg i32 %61 to i64 %arrayidx.i.i = getelementptr inbounds nuw [32 x i8], ptr @mmbit_keyshift_lut, i64 0, i64 %idxprom.i.i - %60 = load i8, ptr %arrayidx.i.i, align 1 - %conv.i636.i = zext i8 %60 to i32 - %idxprom.i645.i = zext i8 %60 to i64 + %62 = load i8, ptr %arrayidx.i.i, align 1 + %conv.i636.i = zext i8 %62 to i32 + %idxprom.i645.i = zext i8 %62 to i64 %arrayidx.i646.i = getelementptr inbounds nuw [32 x i8], ptr @mmbit_maxlevel_from_keyshift_lut, i64 0, i64 %idxprom.i645.i - %61 = load i8, ptr %arrayidx.i646.i, align 1 - %conv.i647.i = zext i8 %61 to i32 + %63 = load i8, ptr %arrayidx.i646.i, align 1 + %conv.i647.i = zext i8 %63 to i32 %dec.i179.i = add i32 %spec.select274.i, -1 %conv4.i189.i = zext i32 %dec.i179.i to i64 br label %for.cond.i180.i @@ -2680,13 +2669,13 @@ for.cond.i180.i: ; preds = %if.end40.i216.i, %i %conv4.i189.sub.i191.i = tail call i64 @llvm.umin.i64(i64 %sub.i191.i, i64 %conv4.i189.i) %idxprom.i654.i = zext i32 %level.i169.0.i to i64 %arrayidx.i655.i = getelementptr inbounds nuw [7 x i32], ptr @mmbit_root_offset_from_level, i64 0, i64 %idxprom.i654.i - %62 = load i32, ptr %arrayidx.i655.i, align 4 - %conv.i656.i = zext i32 %62 to i64 + %64 = load i32, ptr %arrayidx.i655.i, align 4 + %conv.i656.i = zext i32 %64 to i64 %mul.i657.i = shl nuw nsw i64 %conv.i656.i, 3 %add.ptr.i658.i = getelementptr inbounds nuw i8, ptr %state, i64 %mul.i657.i %mul15.i199.i = shl i64 %key.i166.0.i, 3 %add.ptr.i200.i = getelementptr inbounds i8, ptr %add.ptr.i658.i, i64 %mul15.i199.i - %63 = load i64, ptr %add.ptr.i200.i, align 1 + %65 = load i64, ptr %add.ptr.i200.i, align 1 %sub.i668.i = sub i32 %conv.i647.i, %level.i169.0.i %mul.i669.i = mul i32 %sub.i668.i, 6 %sub1.i.i = tail call i64 @llvm.usub.sat.i64(i64 %conv.i184.i, i64 %mul.i183.i) @@ -2701,23 +2690,23 @@ for.cond.i180.i: ; preds = %if.end40.i216.i, %i %shl.i19.i.i = shl nuw i64 2, %shr4.i.i %sub.i.i.i = add i64 %shl.i19.i.i, -1 %cond12.i.i = select i1 %cmp5.i676.i, i64 %sub.i.i.i, i64 -1 - %and.i677.i = and i64 %cond.i675.i, %63 + %and.i677.i = and i64 %cond.i675.i, %65 %and.i203.i = and i64 %and.i677.i, %cond12.i.i %tobool.i204.not.i = icmp eq i64 %and.i203.i, 0 br i1 %tobool.i204.not.i, label %if.else.i205.i, label %if.then.i220.i if.then.i220.i: ; preds = %for.cond.i180.i %shl18.i221.i = shl i64 %key.i166.0.i, 6 - %64 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i203.i, i1 true) - %add21.i224.i = or disjoint i64 %64, %shl18.i221.i + %66 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %and.i203.i, i1 true) + %add21.i224.i = or disjoint i64 %66, %shl18.i221.i + %add21.i224.i.fr = freeze i64 %add21.i224.i %cmp22.i226.i = icmp eq i32 %level.i169.0.i, %conv.i647.i br i1 %cmp22.i226.i, label %if.then24.i229.i, label %if.end.i227.i if.then24.i229.i: ; preds = %if.then.i220.i - %65 = and i64 %add21.i224.i, 4294967295 - %66 = icmp ne i64 %65, 4294967295 - %67 = zext i1 %66 to i32 - br label %ringHasMatch.exit + %67 = and i64 %add21.i224.i.fr, 4294967295 + %.not = icmp eq i64 %67, 4294967295 + br i1 %.not, label %ringHasMatch.exit.thread45, label %return if.end.i227.i: ; preds = %if.then.i220.i %inc.i225.i = add i32 %level.i169.0.i, 1 @@ -2738,22 +2727,29 @@ if.end37.i212.i: ; preds = %if.else.i205.i if.end40.i216.i: ; preds = %if.end37.i212.i, %if.end.i227.i %.sink30.i = phi i32 [ 6, %if.end37.i212.i ], [ -6, %if.end.i227.i ] %level.i169.1.i = phi i32 [ %dec33.i210.i, %if.end37.i212.i ], [ %inc.i225.i, %if.end.i227.i ] - %key.i166.1.i = phi i64 [ %shr.i214.i, %if.end37.i212.i ], [ %add21.i224.i, %if.end.i227.i ] + %key.i166.1.i = phi i64 [ %shr.i214.i, %if.end37.i212.i ], [ %add21.i224.i.fr, %if.end.i227.i ] %it_start.addr.i164.1.i = phi i32 [ %conv38.i213.i, %if.end37.i212.i ], [ %it_start.addr.i164.0.i, %if.end.i227.i ] %add39.i215.i = add i32 %.sink30.i, %ks.i167.0.i br label %for.cond.i180.i -ringHasMatch.exit: ; preds = %if.then.i733.i, %if.end.i356.i, %get_flat_masks.exit427.i, %if.then24.i229.i - %retval.0.i38 = phi i32 [ %conv2.i744.i, %if.then.i733.i ], [ %67, %if.then24.i229.i ], [ %spec.select28.i, %if.end.i356.i ], [ %spec.select29.i, %get_flat_masks.exit427.i ] - %retval.0.i38.fr = freeze i32 %retval.0.i38 - %tobool.not = icmp eq i32 %retval.0.i38.fr, 0 - br i1 %tobool.not, label %ringHasMatch.exit.thread45, label %return +ringHasMatch.exit: ; preds = %sw.bb.i273.i, %sw.bb1.i271.i, %sw.bb3.i261.i, %sw.default.i275.i + %retval.i252.0.i = phi i64 [ %shr14.i282.i, %sw.default.i275.i ], [ %conv6.i270.i, %sw.bb3.i261.i ], [ %conv2.i272.i, %sw.bb1.i271.i ], [ %conv.i274.i, %sw.bb.i273.i ] + %sub.i407.i = sub nuw i32 %spec.select274.i, %52 + %cmp1.i408.i = icmp ult i32 %sub.i407.i, 64 + %sh_prom.i594.i = zext nneg i32 %sub.i407.i to i64 + %notmask267.i = shl nsw i64 -1, %sh_prom.i594.i + %sub.i563.i = xor i64 %notmask267.i, -1 + %cond.i411.i = select i1 %cmp1.i408.i, i64 %sub.i563.i, i64 -1 + %and37.i103.i = and i64 %retval.i252.0.i, %cond.i411.i + %and37.i103.i.fr = freeze i64 %and37.i103.i + %tobool38.i104.not.i.not = icmp eq i64 %and37.i103.i.fr, 0 + br i1 %tobool38.i104.not.i.not, label %ringHasMatch.exit.thread45, label %return -ringHasMatch.exit.thread45: ; preds = %if.else.i205.i, %do.body.i.i, %for.end.i93.i, %if.end22.i, %ringHasMatch.exit +ringHasMatch.exit.thread45: ; preds = %if.else.i205.i, %do.body.i.i, %if.end.i356.i, %if.then24.i229.i, %if.then.i733.i, %for.end.i93.i, %if.end22.i, %ringHasMatch.exit br label %return -return: ; preds = %for.body.i109.i, %if.end.i763.i, %get_flat_masks.exit520.i, %if.end.i437.i, %if.end5.i45.i, %ringHasMatch.exit.thread45, %ringHasMatch.exit, %if.end13, %if.end, %entry - %retval.0 = phi i32 [ 0, %entry ], [ 2, %if.end ], [ 0, %if.end13 ], [ 0, %ringHasMatch.exit.thread45 ], [ 1, %ringHasMatch.exit ], [ 1, %if.end5.i45.i ], [ 1, %if.end.i437.i ], [ 1, %get_flat_masks.exit520.i ], [ 1, %if.end.i763.i ], [ 1, %for.body.i109.i ] +return: ; preds = %for.body.i109.i, %if.end.i763.i, %if.end.i356.i, %if.then24.i229.i, %if.then.i733.i, %get_flat_masks.exit520.i, %if.end.i437.i, %if.end5.i45.i, %ringHasMatch.exit.thread45, %ringHasMatch.exit, %if.end13, %if.end, %entry + %retval.0 = phi i32 [ 0, %entry ], [ 2, %if.end ], [ 0, %if.end13 ], [ 0, %ringHasMatch.exit.thread45 ], [ 1, %ringHasMatch.exit ], [ 1, %if.end5.i45.i ], [ 1, %if.end.i437.i ], [ 1, %get_flat_masks.exit520.i ], [ 1, %if.then.i733.i ], [ 1, %if.then24.i229.i ], [ 1, %if.end.i356.i ], [ 1, %if.end.i763.i ], [ 1, %for.body.i109.i ] ret i32 %retval.0 } diff --git a/bench/hyperscan/optimized/ue2string.cpp.ll b/bench/hyperscan/optimized/ue2string.cpp.ll index acd4b7117fd..fbedd758374 100644 --- a/bench/hyperscan/optimized/ue2string.cpp.ll +++ b/bench/hyperscan/optimized/ue2string.cpp.ll @@ -196,12 +196,12 @@ for.body.i.us.us: ; preds = %for.body.us.us, %fo %incdec.ptr7.i.us.us = getelementptr inbounds nuw i8, ptr %b.addr.021.i.us.us, i64 1 %cmp.not.i.us.us = icmp uge ptr %incdec.ptr.i.us.us, %add.ptr %or.cond.not.i.us.us = select i1 %cmp4.not.i.us.us, i1 true, i1 %cmp.not.i.us.us - br i1 %or.cond.not.i.us.us, label %cleanup.loopexit.i.us.us, label %for.body.i.us.us, !llvm.loop !10 + br i1 %or.cond.not.i.us.us, label %_ZN3ue23cmpEPKcS1_mb.exit.us.us, label %for.body.i.us.us, !llvm.loop !10 -cleanup.loopexit.i.us.us: ; preds = %for.body.i.us.us +_ZN3ue23cmpEPKcS1_mb.exit.us.us: ; preds = %for.body.i.us.us br i1 %cmp4.not.i.us.us, label %for.inc.us.us, label %cleanup -for.inc.us.us: ; preds = %cleanup.loopexit.i.us.us +for.inc.us.us: ; preds = %_ZN3ue23cmpEPKcS1_mb.exit.us.us %dec.us.us = add i64 %i.068.us.us, -1 %cmp.us.us = icmp ugt i64 %dec.us.us, %0 br i1 %cmp.us.us, label %for.body.us.us, label %for.cond8.preheader, !llvm.loop !12 @@ -246,12 +246,12 @@ for.body.i47.us: ; preds = %for.body.i47.us.pre %incdec.ptr7.i56.us = getelementptr inbounds nuw i8, ptr %b.addr.021.i49.us, i64 1 %cmp.not.i57.us = icmp uge ptr %incdec.ptr.i55.us, %add.ptr %or.cond.not.i58.us = select i1 %cmp4.not.i54.us, i1 true, i1 %cmp.not.i57.us - br i1 %or.cond.not.i58.us, label %cleanup.loopexit.i59.us, label %for.body.i47.us, !llvm.loop !10 + br i1 %or.cond.not.i58.us, label %_ZN3ue23cmpEPKcS1_mb.exit60.us, label %for.body.i47.us, !llvm.loop !10 -cleanup.loopexit.i59.us: ; preds = %for.body.i47.us +_ZN3ue23cmpEPKcS1_mb.exit60.us: ; preds = %for.body.i47.us br i1 %cmp4.not.i54.us, label %for.inc16.us, label %cleanup -for.inc16.us: ; preds = %cleanup.loopexit.i59.us +for.inc16.us: ; preds = %_ZN3ue23cmpEPKcS1_mb.exit60.us %dec17.us = add nsw i64 %i.170.us, -1 %tobool9.not.us = icmp eq i64 %dec17.us, 0 br i1 %tobool9.not.us, label %cleanup, label %land.rhs.us, !llvm.loop !13 @@ -260,8 +260,8 @@ for.body: ; preds = %for.body.lr.ph, %fo %i.068 = phi i64 [ %dec, %for.inc ], [ %1, %for.body.lr.ph ] %gep = getelementptr i8, ptr %invariant.gep, i64 %i.068 %bcmp = tail call i32 @bcmp(ptr %2, ptr %gep, i64 %0) - %tobool7.not = icmp eq i32 %bcmp, 0 - br i1 %tobool7.not, label %cleanup, label %for.inc + %16 = icmp eq i32 %bcmp, 0 + br i1 %16, label %cleanup, label %for.inc for.inc: ; preds = %for.body %dec = add i64 %i.068, -1 @@ -272,17 +272,17 @@ land.rhs: ; preds = %land.rhs.preheader, %i.170 = phi i64 [ %dec17, %for.inc16 ], [ %i.0.lcssa, %land.rhs.preheader ] %idx.neg10 = sub i64 0, %i.170 %add.ptr11 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg10 - %bcmp7 = tail call i32 @bcmp(ptr nonnull %add.ptr11, ptr %3, i64 %i.170) - %tobool14.not = icmp eq i32 %bcmp7, 0 - br i1 %tobool14.not, label %cleanup, label %for.inc16 + %bcmp2 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %add.ptr11, ptr noundef nonnull dereferenceable(1) %3, i64 %i.170) + %17 = icmp eq i32 %bcmp2, 0 + br i1 %17, label %cleanup, label %for.inc16 for.inc16: ; preds = %land.rhs %dec17 = add i64 %i.170, -1 %tobool9.not = icmp eq i64 %dec17, 0 br i1 %tobool9.not, label %cleanup, label %land.rhs, !llvm.loop !13 -cleanup: ; preds = %for.body, %cleanup.loopexit.i.us.us, %land.rhs, %for.inc16, %for.inc16.us, %cleanup.loopexit.i59.us, %land.rhs.us, %for.body.lr.ph.split.us, %for.cond8.preheader - %retval.0 = phi i64 [ 0, %for.cond8.preheader ], [ %1, %for.body.lr.ph.split.us ], [ %smin, %land.rhs.us ], [ %i.170.us, %cleanup.loopexit.i59.us ], [ 0, %for.inc16.us ], [ %i.170, %land.rhs ], [ 0, %for.inc16 ], [ %i.068.us.us, %cleanup.loopexit.i.us.us ], [ %i.068, %for.body ] +cleanup: ; preds = %for.body, %_ZN3ue23cmpEPKcS1_mb.exit.us.us, %for.inc16, %land.rhs, %for.inc16.us, %_ZN3ue23cmpEPKcS1_mb.exit60.us, %land.rhs.us, %for.body.lr.ph.split.us, %for.cond8.preheader + %retval.0 = phi i64 [ 0, %for.cond8.preheader ], [ %1, %for.body.lr.ph.split.us ], [ %smin, %land.rhs.us ], [ %i.170.us, %_ZN3ue23cmpEPKcS1_mb.exit60.us ], [ 0, %for.inc16.us ], [ %i.170, %land.rhs ], [ 0, %for.inc16 ], [ %i.068.us.us, %_ZN3ue23cmpEPKcS1_mb.exit.us.us ], [ %i.068, %for.body ] ret i64 %retval.0 } @@ -455,63 +455,73 @@ entry: %0 = load i64, ptr %_M_string_length.i, align 8 %1 = load ptr, ptr %a, align 8 %add.ptr = getelementptr inbounds i8, ptr %1, i64 %0 - br i1 %nocase, label %for.cond.us.preheader, label %for.cond + %i.01 = add i64 %0, -1 + %tobool.not2 = icmp eq i64 %i.01, 0 + br i1 %tobool.not2, label %for.end, label %land.rhs.lr.ph -for.cond.us.preheader: ; preds = %entry - %2 = add i64 %0, -1 - %smin = tail call i64 @llvm.smin.i64(i64 %2, i64 0) - br label %for.cond.us +land.rhs.lr.ph: ; preds = %entry + br i1 %nocase, label %land.rhs.us.preheader, label %land.rhs + +land.rhs.us.preheader: ; preds = %land.rhs.lr.ph + %smin = tail call i64 @llvm.smin.i64(i64 %i.01, i64 0) + br label %land.rhs.us -for.cond.us: ; preds = %for.cond.us.preheader, %cleanup.loopexit.i.us - %i.0.in.us = phi i64 [ %i.0.us, %cleanup.loopexit.i.us ], [ %0, %for.cond.us.preheader ] - %i.0.us = add i64 %i.0.in.us, -1 - %cmp.not20.i.us = icmp sgt i64 %i.0.us, 0 +land.rhs.us: ; preds = %land.rhs.us.preheader, %for.cond.backedge.us + %i.04.us = phi i64 [ %i.0.us, %for.cond.backedge.us ], [ %i.01, %land.rhs.us.preheader ] + %i.0.in3.us = phi i64 [ %i.04.us, %for.cond.backedge.us ], [ %0, %land.rhs.us.preheader ] + %cmp.not20.i.us = icmp sgt i64 %i.04.us, 0 br i1 %cmp.not20.i.us, label %for.body.i.us.preheader, label %for.end -for.body.i.us.preheader: ; preds = %for.cond.us - %idx.neg.us = sub i64 1, %i.0.in.us +for.body.i.us.preheader: ; preds = %land.rhs.us + %idx.neg.us = sub i64 1, %i.0.in3.us %add.ptr3.us = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg.us br label %for.body.i.us for.body.i.us: ; preds = %for.body.i.us.preheader, %for.body.i.us %a.addr.022.i.us = phi ptr [ %incdec.ptr.i.us, %for.body.i.us ], [ %add.ptr3.us, %for.body.i.us.preheader ] %b.addr.021.i.us = phi ptr [ %incdec.ptr7.i.us, %for.body.i.us ], [ %1, %for.body.i.us.preheader ] - %3 = load i8, ptr %a.addr.022.i.us, align 1 - %4 = add i8 %3, -123 - %5 = icmp ult i8 %4, -26 - %sub.i17.i.us = add i8 %3, -32 - %retval.0.i18.i.us = select i1 %5, i8 %3, i8 %sub.i17.i.us - %6 = load i8, ptr %b.addr.021.i.us, align 1 - %7 = add i8 %6, -123 - %8 = icmp ult i8 %7, -26 - %sub.i.i.us = add i8 %6, -32 - %retval.0.i.i.us = select i1 %8, i8 %6, i8 %sub.i.i.us + %2 = load i8, ptr %a.addr.022.i.us, align 1 + %3 = add i8 %2, -123 + %4 = icmp ult i8 %3, -26 + %sub.i17.i.us = add i8 %2, -32 + %retval.0.i18.i.us = select i1 %4, i8 %2, i8 %sub.i17.i.us + %5 = load i8, ptr %b.addr.021.i.us, align 1 + %6 = add i8 %5, -123 + %7 = icmp ult i8 %6, -26 + %sub.i.i.us = add i8 %5, -32 + %retval.0.i.i.us = select i1 %7, i8 %5, i8 %sub.i.i.us %cmp4.not.i.us = icmp ne i8 %retval.0.i18.i.us, %retval.0.i.i.us %incdec.ptr.i.us = getelementptr inbounds nuw i8, ptr %a.addr.022.i.us, i64 1 %incdec.ptr7.i.us = getelementptr inbounds nuw i8, ptr %b.addr.021.i.us, i64 1 %cmp.not.i.us = icmp uge ptr %incdec.ptr.i.us, %add.ptr %or.cond.not.i.us = select i1 %cmp4.not.i.us, i1 true, i1 %cmp.not.i.us - br i1 %or.cond.not.i.us, label %cleanup.loopexit.i.us, label %for.body.i.us, !llvm.loop !10 + br i1 %or.cond.not.i.us, label %_ZN3ue23cmpEPKcS1_mb.exit.us, label %for.body.i.us, !llvm.loop !10 -cleanup.loopexit.i.us: ; preds = %for.body.i.us - br i1 %cmp4.not.i.us, label %for.cond.us, label %for.end, !llvm.loop !15 +_ZN3ue23cmpEPKcS1_mb.exit.us: ; preds = %for.body.i.us + br i1 %cmp4.not.i.us, label %for.cond.backedge.us, label %for.end -for.cond: ; preds = %entry, %land.rhs - %i.0.in = phi i64 [ %i.0, %land.rhs ], [ %0, %entry ] - %i.0 = add i64 %i.0.in, -1 - %tobool.not = icmp eq i64 %i.0, 0 - br i1 %tobool.not, label %for.end, label %land.rhs +for.cond.backedge.us: ; preds = %_ZN3ue23cmpEPKcS1_mb.exit.us + %i.0.us = add nsw i64 %i.04.us, -1 + %tobool.not.us = icmp eq i64 %i.0.us, 0 + br i1 %tobool.not.us, label %for.end, label %land.rhs.us, !llvm.loop !15 -land.rhs: ; preds = %for.cond - %idx.neg = sub i64 1, %i.0.in +land.rhs: ; preds = %land.rhs.lr.ph, %for.cond.backedge + %i.04 = phi i64 [ %i.0, %for.cond.backedge ], [ %i.01, %land.rhs.lr.ph ] + %i.0.in3 = phi i64 [ %i.04, %for.cond.backedge ], [ %0, %land.rhs.lr.ph ] + %idx.neg = sub i64 1, %i.0.in3 %add.ptr3 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg - %bcmp = tail call i32 @bcmp(ptr %add.ptr3, ptr %1, i64 %i.0) - %tobool6.not = icmp eq i32 %bcmp, 0 - br i1 %tobool6.not, label %for.end, label %for.cond, !llvm.loop !15 + %bcmp = tail call i32 @bcmp(ptr %add.ptr3, ptr %1, i64 %i.04) + %8 = icmp eq i32 %bcmp, 0 + br i1 %8, label %for.end, label %for.cond.backedge + +for.cond.backedge: ; preds = %land.rhs + %i.0 = add i64 %i.04, -1 + %tobool.not = icmp eq i64 %i.0, 0 + br i1 %tobool.not, label %for.end, label %land.rhs, !llvm.loop !15 -for.end: ; preds = %for.cond, %land.rhs, %for.cond.us, %cleanup.loopexit.i.us - %.us-phi = phi i64 [ %smin, %for.cond.us ], [ %i.0.us, %cleanup.loopexit.i.us ], [ 0, %for.cond ], [ %i.0, %land.rhs ] - ret i64 %.us-phi +for.end: ; preds = %for.cond.backedge, %land.rhs, %for.cond.backedge.us, %land.rhs.us, %_ZN3ue23cmpEPKcS1_mb.exit.us, %entry + %i.0.lcssa = phi i64 [ 0, %entry ], [ %i.04.us, %_ZN3ue23cmpEPKcS1_mb.exit.us ], [ %smin, %land.rhs.us ], [ 0, %for.cond.backedge.us ], [ %i.04, %land.rhs ], [ 0, %for.cond.backedge ] + ret i64 %i.0.lcssa } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) @@ -2855,120 +2865,120 @@ entry: %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %sub.ptr.div.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i, 3 %cmp.not5.not.i.i = icmp eq ptr %0, %1 - br i1 %cmp.not5.not.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6, label %for.body.preheader.i.i - -_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6: ; preds = %entry - %_M_string_length.i.i8 = getelementptr inbounds nuw i8, ptr %a, i64 8 - %2 = load i64, ptr %_M_string_length.i.i8, align 8 - %3 = load ptr, ptr %a, align 8 - %add.ptr.i9 = getelementptr inbounds i8, ptr %3, i64 %2 - br label %for.cond.i.preheader + br i1 %cmp.not5.not.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread, label %for.body.preheader.i.i for.body.preheader.i.i: ; preds = %entry %umax.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i, i64 1) - %4 = load i64, ptr %1, align 8 - %tobool.not.i2.i = icmp eq i64 %4, 0 - br i1 %tobool.not.i2.i, label %for.cond.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread - -_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread: ; preds = %for.body.preheader.i.i - %_M_string_length.i.i3 = getelementptr inbounds nuw i8, ptr %a, i64 8 - %5 = load i64, ptr %_M_string_length.i.i3, align 8 - %6 = load ptr, ptr %a, align 8 - %add.ptr.i4 = getelementptr inbounds i8, ptr %6, i64 %5 - br label %for.cond.i.us.preheader + %2 = load i64, ptr %1, align 8 + %tobool.not.i2.i = icmp eq i64 %2, 0 + br i1 %tobool.not.i2.i, label %for.cond.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit for.cond.i.i: ; preds = %for.body.preheader.i.i, %for.body.i.i %i.06.i3.i = phi i64 [ %inc.i.i, %for.body.i.i ], [ 0, %for.body.preheader.i.i ] %inc.i.i = add nuw i64 %i.06.i3.i, 1 %exitcond.not.i.i = icmp eq i64 %inc.i.i, %umax.i.i - br i1 %exitcond.not.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11, label %for.body.i.i, !llvm.loop !14 - -_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11: ; preds = %for.cond.i.i - %_M_string_length.i.i14 = getelementptr inbounds nuw i8, ptr %a, i64 8 - %7 = load i64, ptr %_M_string_length.i.i14, align 8 - %8 = load ptr, ptr %a, align 8 - %add.ptr.i15 = getelementptr inbounds i8, ptr %8, i64 %7 - br label %for.cond.i.preheader + br i1 %exitcond.not.i.i, label %_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit.loopexit.i, label %for.body.i.i, !llvm.loop !14 for.body.i.i: ; preds = %for.cond.i.i %add.ptr.i.i.i = getelementptr inbounds i64, ptr %1, i64 %inc.i.i - %9 = load i64, ptr %add.ptr.i.i.i, align 8 - %tobool.not.i.i = icmp eq i64 %9, 0 - br i1 %tobool.not.i.i, label %for.cond.i.i, label %_ZNK3ue211ue2_literal10any_nocaseEv.exit, !llvm.loop !14 + %3 = load i64, ptr %add.ptr.i.i.i, align 8 + %tobool.not.i.i = icmp eq i64 %3, 0 + br i1 %tobool.not.i.i, label %for.cond.i.i, label %_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit.loopexit.i, !llvm.loop !14 -_ZNK3ue211ue2_literal10any_nocaseEv.exit: ; preds = %for.body.i.i - %cmp.not.i.le.i = icmp ult i64 %inc.i.i, %sub.ptr.div.i.i.i.i - %10 = freeze i1 %cmp.not.i.le.i - %_M_string_length.i.i = getelementptr inbounds nuw i8, ptr %a, i64 8 - %11 = load i64, ptr %_M_string_length.i.i, align 8 - %12 = load ptr, ptr %a, align 8 - %add.ptr.i = getelementptr inbounds i8, ptr %12, i64 %11 - br i1 %10, label %for.cond.i.us.preheader, label %for.cond.i.preheader - -for.cond.i.preheader: ; preds = %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6, %_ZNK3ue211ue2_literal10any_nocaseEv.exit - %add.ptr.i10 = phi ptr [ %add.ptr.i9, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6 ], [ %add.ptr.i, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ], [ %add.ptr.i15, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11 ] - %13 = phi ptr [ %3, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6 ], [ %12, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ], [ %8, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11 ] - %14 = phi i64 [ %2, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread6 ], [ %11, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ], [ %7, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread11 ] - br label %for.cond.i +_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit.loopexit.i: ; preds = %for.body.i.i, %for.cond.i.i + %inc.i.i.lcssa = phi i64 [ %inc.i.i, %for.body.i.i ], [ %umax.i.i, %for.cond.i.i ] + %cmp.not.i.le.i = icmp ult i64 %inc.i.i.lcssa, %sub.ptr.div.i.i.i.i + br label %_ZNK3ue211ue2_literal10any_nocaseEv.exit -for.cond.i.us.preheader: ; preds = %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread, %_ZNK3ue211ue2_literal10any_nocaseEv.exit - %add.ptr.i5 = phi ptr [ %add.ptr.i4, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ], [ %add.ptr.i, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ] - %15 = phi ptr [ %6, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ], [ %12, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ] - %16 = phi i64 [ %5, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ], [ %11, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ] - %17 = add i64 %16, -1 - %smin = tail call i64 @llvm.smin.i64(i64 %17, i64 0) - br label %for.cond.i.us - -for.cond.i.us: ; preds = %for.cond.i.us.preheader, %cleanup.loopexit.i.i.us - %i.0.in.i.us = phi i64 [ %i.0.i.us, %cleanup.loopexit.i.i.us ], [ %16, %for.cond.i.us.preheader ] - %i.0.i.us = add i64 %i.0.in.i.us, -1 - %cmp.not20.i.i.us = icmp sgt i64 %i.0.i.us, 0 +_ZNK3ue211ue2_literal10any_nocaseEv.exit: ; preds = %_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit.loopexit.i, %for.body.preheader.i.i + %cmp.not.lcssa.i.i = phi i1 [ true, %for.body.preheader.i.i ], [ %cmp.not.i.le.i, %_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit.loopexit.i ] + %_M_string_length.i.i = getelementptr inbounds nuw i8, ptr %a, i64 8 + %4 = load i64, ptr %_M_string_length.i.i, align 8 + %5 = load ptr, ptr %a, align 8 + %add.ptr.i = getelementptr inbounds i8, ptr %5, i64 %4 + %i.0.i1 = add i64 %4, -1 + %tobool.not.i2 = icmp eq i64 %i.0.i1, 0 + br i1 %tobool.not.i2, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %land.rhs.i.lr.ph + +_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread: ; preds = %entry + %_M_string_length.i.i13 = getelementptr inbounds nuw i8, ptr %a, i64 8 + %6 = load i64, ptr %_M_string_length.i.i13, align 8 + %7 = load ptr, ptr %a, align 8 + %add.ptr.i14 = getelementptr inbounds i8, ptr %7, i64 %6 + %i.0.i115 = add i64 %6, -1 + %tobool.not.i216 = icmp eq i64 %i.0.i115, 0 + br i1 %tobool.not.i216, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %land.rhs.i.preheader + +land.rhs.i.lr.ph: ; preds = %_ZNK3ue211ue2_literal10any_nocaseEv.exit + br i1 %cmp.not.lcssa.i.i, label %land.rhs.i.us.preheader, label %land.rhs.i.preheader + +land.rhs.i.preheader: ; preds = %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread, %land.rhs.i.lr.ph + %8 = phi i64 [ %4, %land.rhs.i.lr.ph ], [ %6, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ] + %9 = phi ptr [ %5, %land.rhs.i.lr.ph ], [ %7, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ] + %add.ptr.i1824 = phi ptr [ %add.ptr.i, %land.rhs.i.lr.ph ], [ %add.ptr.i14, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ] + %i.0.i11923 = phi i64 [ %i.0.i1, %land.rhs.i.lr.ph ], [ %i.0.i115, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ] + br label %land.rhs.i + +land.rhs.i.us.preheader: ; preds = %land.rhs.i.lr.ph + %smin = tail call i64 @llvm.smin.i64(i64 %i.0.i1, i64 0) + br label %land.rhs.i.us + +land.rhs.i.us: ; preds = %land.rhs.i.us.preheader, %for.cond.i.backedge.us + %i.0.i4.us = phi i64 [ %i.0.i.us, %for.cond.i.backedge.us ], [ %i.0.i1, %land.rhs.i.us.preheader ] + %i.0.in.i3.us = phi i64 [ %i.0.i4.us, %for.cond.i.backedge.us ], [ %4, %land.rhs.i.us.preheader ] + %cmp.not20.i.i.us = icmp sgt i64 %i.0.i4.us, 0 br i1 %cmp.not20.i.i.us, label %for.body.i.i4.us.preheader, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit -for.body.i.i4.us.preheader: ; preds = %for.cond.i.us - %idx.neg.i.us = sub i64 1, %i.0.in.i.us - %add.ptr3.i.us = getelementptr inbounds i8, ptr %add.ptr.i5, i64 %idx.neg.i.us +for.body.i.i4.us.preheader: ; preds = %land.rhs.i.us + %idx.neg.i.us = sub i64 1, %i.0.in.i3.us + %add.ptr3.i.us = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg.i.us br label %for.body.i.i4.us for.body.i.i4.us: ; preds = %for.body.i.i4.us.preheader, %for.body.i.i4.us %a.addr.022.i.i.us = phi ptr [ %incdec.ptr.i.i.us, %for.body.i.i4.us ], [ %add.ptr3.i.us, %for.body.i.i4.us.preheader ] - %b.addr.021.i.i.us = phi ptr [ %incdec.ptr7.i.i.us, %for.body.i.i4.us ], [ %15, %for.body.i.i4.us.preheader ] - %18 = load i8, ptr %a.addr.022.i.i.us, align 1 - %19 = add i8 %18, -123 - %20 = icmp ult i8 %19, -26 - %sub.i17.i.i.us = add i8 %18, -32 - %retval.0.i18.i.i.us = select i1 %20, i8 %18, i8 %sub.i17.i.i.us - %21 = load i8, ptr %b.addr.021.i.i.us, align 1 - %22 = add i8 %21, -123 - %23 = icmp ult i8 %22, -26 - %sub.i.i.i.us = add i8 %21, -32 - %retval.0.i.i.i.us = select i1 %23, i8 %21, i8 %sub.i.i.i.us + %b.addr.021.i.i.us = phi ptr [ %incdec.ptr7.i.i.us, %for.body.i.i4.us ], [ %5, %for.body.i.i4.us.preheader ] + %10 = load i8, ptr %a.addr.022.i.i.us, align 1 + %11 = add i8 %10, -123 + %12 = icmp ult i8 %11, -26 + %sub.i17.i.i.us = add i8 %10, -32 + %retval.0.i18.i.i.us = select i1 %12, i8 %10, i8 %sub.i17.i.i.us + %13 = load i8, ptr %b.addr.021.i.i.us, align 1 + %14 = add i8 %13, -123 + %15 = icmp ult i8 %14, -26 + %sub.i.i.i.us = add i8 %13, -32 + %retval.0.i.i.i.us = select i1 %15, i8 %13, i8 %sub.i.i.i.us %cmp4.not.i.i.us = icmp ne i8 %retval.0.i18.i.i.us, %retval.0.i.i.i.us %incdec.ptr.i.i.us = getelementptr inbounds nuw i8, ptr %a.addr.022.i.i.us, i64 1 %incdec.ptr7.i.i.us = getelementptr inbounds nuw i8, ptr %b.addr.021.i.i.us, i64 1 - %cmp.not.i.i.us = icmp uge ptr %incdec.ptr.i.i.us, %add.ptr.i5 + %cmp.not.i.i.us = icmp uge ptr %incdec.ptr.i.i.us, %add.ptr.i %or.cond.not.i.i.us = select i1 %cmp4.not.i.i.us, i1 true, i1 %cmp.not.i.i.us - br i1 %or.cond.not.i.i.us, label %cleanup.loopexit.i.i.us, label %for.body.i.i4.us, !llvm.loop !10 - -cleanup.loopexit.i.i.us: ; preds = %for.body.i.i4.us - br i1 %cmp4.not.i.i.us, label %for.cond.i.us, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, !llvm.loop !15 - -for.cond.i: ; preds = %for.cond.i.preheader, %land.rhs.i - %i.0.in.i = phi i64 [ %i.0.i, %land.rhs.i ], [ %14, %for.cond.i.preheader ] - %i.0.i = add i64 %i.0.in.i, -1 + br i1 %or.cond.not.i.i.us, label %_ZN3ue23cmpEPKcS1_mb.exit.i.us, label %for.body.i.i4.us, !llvm.loop !10 + +_ZN3ue23cmpEPKcS1_mb.exit.i.us: ; preds = %for.body.i.i4.us + br i1 %cmp4.not.i.i.us, label %for.cond.i.backedge.us, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit + +for.cond.i.backedge.us: ; preds = %_ZN3ue23cmpEPKcS1_mb.exit.i.us + %i.0.i.us = add nsw i64 %i.0.i4.us, -1 + %tobool.not.i.us = icmp eq i64 %i.0.i.us, 0 + br i1 %tobool.not.i.us, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %land.rhs.i.us, !llvm.loop !15 + +land.rhs.i: ; preds = %land.rhs.i.preheader, %for.cond.i.backedge + %i.0.i4 = phi i64 [ %i.0.i, %for.cond.i.backedge ], [ %i.0.i11923, %land.rhs.i.preheader ] + %i.0.in.i3 = phi i64 [ %i.0.i4, %for.cond.i.backedge ], [ %8, %land.rhs.i.preheader ] + %idx.neg.i = sub i64 1, %i.0.in.i3 + %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr.i1824, i64 %idx.neg.i + %bcmp = tail call i32 @bcmp(ptr %add.ptr3.i, ptr %9, i64 %i.0.i4) + %16 = icmp eq i32 %bcmp, 0 + br i1 %16, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %for.cond.i.backedge + +for.cond.i.backedge: ; preds = %land.rhs.i + %i.0.i = add i64 %i.0.i4, -1 %tobool.not.i = icmp eq i64 %i.0.i, 0 - br i1 %tobool.not.i, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %land.rhs.i - -land.rhs.i: ; preds = %for.cond.i - %idx.neg.i = sub i64 1, %i.0.in.i - %add.ptr3.i = getelementptr inbounds i8, ptr %add.ptr.i10, i64 %idx.neg.i - %bcmp = tail call i32 @bcmp(ptr %add.ptr3.i, ptr %13, i64 %i.0.i) - %tobool6.not.i = icmp eq i32 %bcmp, 0 - br i1 %tobool6.not.i, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %for.cond.i, !llvm.loop !15 - -_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit: ; preds = %for.cond.i.us, %cleanup.loopexit.i.i.us, %for.cond.i, %land.rhs.i - %.us-phi = phi i64 [ 0, %for.cond.i ], [ %i.0.i, %land.rhs.i ], [ %smin, %for.cond.i.us ], [ %i.0.i.us, %cleanup.loopexit.i.i.us ] - ret i64 %.us-phi + br i1 %tobool.not.i, label %_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit, label %land.rhs.i, !llvm.loop !15 + +_ZN3ue220maxStringSelfOverlapERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb.exit: ; preds = %for.cond.i.backedge.us, %land.rhs.i.us, %_ZN3ue23cmpEPKcS1_mb.exit.i.us, %for.cond.i.backedge, %land.rhs.i, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread, %_ZNK3ue211ue2_literal10any_nocaseEv.exit + %i.0.i.lcssa = phi i64 [ 0, %_ZNK3ue211ue2_literal10any_nocaseEv.exit ], [ 0, %_ZNK3ue211ue2_literal10any_nocaseEv.exit.thread ], [ %i.0.i4, %land.rhs.i ], [ 0, %for.cond.i.backedge ], [ %i.0.i4.us, %_ZN3ue23cmpEPKcS1_mb.exit.i.us ], [ %smin, %land.rhs.i.us ], [ 0, %for.cond.i.backedge.us ] + ret i64 %i.0.i.lcssa } ; Function Attrs: mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable diff --git a/bench/icu/optimized/gregocal.ll b/bench/icu/optimized/gregocal.ll index d40592a3e66..f2b805062aa 100644 --- a/bench/icu/optimized/gregocal.ll +++ b/bench/icu/optimized/gregocal.ll @@ -955,8 +955,7 @@ if.then: ; preds = %entry if.end: ; preds = %entry, %if.then %eyear.addr.0 = phi i32 [ %add, %if.then ], [ %eyear, %entry ] %1 = and i32 %eyear.addr.0, 3 - %cmp3 = icmp eq i32 %1, 0 - %conv = zext i1 %cmp3 to i8 + %cmp3 = icmp ne i32 %1, 0 %conv4 = sext i32 %eyear.addr.0 to i64 %sub = add nsw i64 %conv4, -1 %mul = mul nsw i64 %sub, 365 @@ -986,7 +985,7 @@ if.end15: ; preds = %if.then10, %if.end br i1 %tobool17.not, label %if.end28, label %if.then18 if.then18: ; preds = %if.end15 - br i1 %cmp3, label %land.rhs, label %land.end + br i1 %cmp3, label %land.end, label %land.rhs land.rhs: ; preds = %if.then18 %rem20 = srem i32 %eyear.addr.0, 100 @@ -995,12 +994,11 @@ land.rhs: ; preds = %if.then18 lor.rhs: ; preds = %land.rhs %rem22 = srem i32 %eyear.addr.0, 400 - %cmp23 = icmp eq i32 %rem22, 0 - %5 = zext i1 %cmp23 to i8 + %cmp23 = icmp ne i32 %rem22, 0 br label %land.end land.end: ; preds = %land.rhs, %lor.rhs, %if.then18 - %conv24 = phi i8 [ 0, %if.then18 ], [ 1, %land.rhs ], [ %5, %lor.rhs ] + %conv24 = phi i1 [ true, %if.then18 ], [ false, %land.rhs ], [ %cmp23, %lor.rhs ] %call.i = call noundef i64 @_ZN6icu_759ClockMath11floorDivideEll(i64 noundef %sub, i64 noundef 400) %call1.i = call noundef i64 @_ZN6icu_759ClockMath11floorDivideEll(i64 noundef %sub, i64 noundef 100) %sub2.i = sub nsw i64 %call.i, %call1.i @@ -1011,18 +1009,17 @@ land.end: ; preds = %land.rhs, %lor.rhs, br label %if.end28 if.end28: ; preds = %land.end, %if.end15 - %isLeap.0 = phi i8 [ %conv24, %land.end ], [ %conv, %if.end15 ] + %isLeap.0 = phi i1 [ %conv24, %land.end ], [ %cmp3, %if.end15 ] %julianDay.0 = phi i64 [ %add27, %land.end ], [ %add7, %if.end15 ] - %6 = load i32, ptr %month.addr, align 4 - %cmp29.not = icmp eq i32 %6, 0 + %5 = load i32, ptr %month.addr, align 4 + %cmp29.not = icmp eq i32 %5, 0 br i1 %cmp29.not, label %if.end36, label %if.then30 if.then30: ; preds = %if.end28 - %tobool31.not = icmp eq i8 %isLeap.0, 0 - %idxprom = sext i32 %6 to i64 + %idxprom = sext i32 %5 to i64 %arrayidx = getelementptr inbounds [12 x i16], ptr @_ZL12kLeapNumDays, i64 0, i64 %idxprom %arrayidx33 = getelementptr inbounds [12 x i16], ptr @_ZL8kNumDays, i64 0, i64 %idxprom - %cond.in = select i1 %tobool31.not, ptr %arrayidx33, ptr %arrayidx + %cond.in = select i1 %isLeap.0, ptr %arrayidx33, ptr %arrayidx %cond = load i16, ptr %cond.in, align 2 %conv34 = sext i16 %cond to i64 %add35 = add nsw i64 %julianDay.0, %conv34 diff --git a/bench/icu/optimized/patternprops.ll b/bench/icu/optimized/patternprops.ll index e7abc913562..5cb4a91d451 100644 --- a/bench/icu/optimized/patternprops.ll +++ b/bench/icu/optimized/patternprops.ll @@ -165,7 +165,6 @@ land.rhs: ; preds = %entry, %while.body %length.addr.08 = phi i32 [ %dec, %while.body ], [ %length, %entry ] %s.addr.07 = phi ptr [ %incdec.ptr, %while.body ], [ %s, %entry ] %0 = load i16, ptr %s.addr.07, align 2 - %conv = zext i16 %0 to i32 %cmp1.i = icmp ult i16 %0, 256 br i1 %cmp1.i, label %if.then2.i, label %if.else6.i @@ -173,34 +172,26 @@ if.then2.i: ; preds = %land.rhs %idxprom.i = zext nneg i16 %0 to i64 %arrayidx.i = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i %1 = load i8, ptr %arrayidx.i, align 1 - %2 = lshr i8 %1, 2 - %3 = and i8 %2, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %2 = and i8 %1, 4 + %3 = icmp eq i8 %2, 0 + br i1 %3, label %while.end, label %while.body if.else6.i: ; preds = %land.rhs - %4 = add i16 %0, -8206 - %or.cond.i = icmp ult i16 %4, 28 - br i1 %or.cond.i, label %if.then9.i, label %while.end - -if.then9.i: ; preds = %if.else6.i - %5 = add nsw i32 %conv, -8232 - %6 = icmp ult i32 %5, -24 - %conv12.i = zext i1 %6 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit: ; preds = %if.then2.i, %if.then9.i - %retval.0.i = phi i8 [ %3, %if.then2.i ], [ %conv12.i, %if.then9.i ] - %tobool.not = icmp eq i8 %retval.0.i, 0 - br i1 %tobool.not, label %while.end, label %while.body - -while.body: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %4 = add i16 %0, -8234 + %or.cond.i = icmp ult i16 %4, -28 + %5 = add nsw i16 %0, -8208 + %6 = icmp ult i16 %5, 24 + %or.cond = select i1 %or.cond.i, i1 true, i1 %6 + br i1 %or.cond, label %while.end, label %while.body + +while.body: ; preds = %if.else6.i, %if.then2.i %incdec.ptr = getelementptr inbounds nuw i8, ptr %s.addr.07, i64 2 %dec = add nsw i32 %length.addr.08, -1 %cmp = icmp sgt i32 %length.addr.08, 1 br i1 %cmp, label %land.rhs, label %while.end, !llvm.loop !4 -while.end: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit, %while.body, %if.else6.i, %entry - %s.addr.0.lcssa = phi ptr [ %s, %entry ], [ %s.addr.07, %if.else6.i ], [ %incdec.ptr, %while.body ], [ %s.addr.07, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit ] +while.end: ; preds = %while.body, %if.else6.i, %if.then2.i, %entry + %s.addr.0.lcssa = phi ptr [ %s, %entry ], [ %s.addr.07, %if.then2.i ], [ %s.addr.07, %if.else6.i ], [ %incdec.ptr, %while.body ] ret ptr %s.addr.0.lcssa } @@ -235,7 +226,6 @@ _ZNK6icu_7513UnicodeString6charAtEi.exit: ; preds = %_ZNK6icu_7513Unicod %indvars.iv = phi i64 [ %5, %_ZNK6icu_7513UnicodeString6charAtEi.exit.lr.ph ], [ %indvars.iv.next, %while.body ] %arrayidx.i.i = getelementptr inbounds i16, ptr %cond.i2.i.i, i64 %indvars.iv %7 = load i16, ptr %arrayidx.i.i, align 2 - %conv = zext i16 %7 to i32 %cmp1.i = icmp ult i16 %7, 256 br i1 %cmp1.i, label %if.then2.i, label %if.else6.i @@ -243,27 +233,21 @@ if.then2.i: ; preds = %_ZNK6icu_7513Unicod %idxprom.i = zext nneg i16 %7 to i64 %arrayidx.i = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i %8 = load i8, ptr %arrayidx.i, align 1 - %9 = lshr i8 %8, 2 - %10 = and i8 %9, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %9 = and i8 %8, 4 + %10 = icmp eq i8 %9, 0 + br i1 %10, label %while.end.loopexit.split.loop.exit, label %while.body if.else6.i: ; preds = %_ZNK6icu_7513UnicodeString6charAtEi.exit %11 = add i16 %7, -8206 %or.cond.i = icmp ult i16 %11, 28 - br i1 %or.cond.i, label %if.then9.i, label %while.end.loopexit.split.loop.exit + br i1 %or.cond.i, label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit, label %while.end.loopexit.split.loop.exit21 -if.then9.i: ; preds = %if.else6.i - %12 = add nsw i32 %conv, -8232 - %13 = icmp ult i32 %12, -24 - %conv12.i = zext i1 %13 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit: ; preds = %if.then2.i, %if.then9.i - %retval.0.i = phi i8 [ %10, %if.then2.i ], [ %conv12.i, %if.then9.i ] - %tobool.not = icmp eq i8 %retval.0.i, 0 - br i1 %tobool.not, label %while.end.loopexit.split.loop.exit23, label %while.body +_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit: ; preds = %if.else6.i + %12 = add nsw i16 %7, -8208 + %13 = icmp ult i16 %12, 24 + br i1 %13, label %while.end.loopexit.split.loop.exit25, label %while.body -while.body: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit +while.body: ; preds = %if.then2.i, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %cmp = icmp slt i64 %indvars.iv.next, %6 %14 = trunc nsw i64 %indvars.iv.next to i32 @@ -271,16 +255,20 @@ while.body: ; preds = %_ZN6icu_7512Pattern %or.cond = and i1 %cmp, %cmp.i.i5 br i1 %or.cond, label %_ZNK6icu_7513UnicodeString6charAtEi.exit, label %while.end, !llvm.loop !6 -while.end.loopexit.split.loop.exit: ; preds = %if.else6.i +while.end.loopexit.split.loop.exit: ; preds = %if.then2.i %15 = trunc nsw i64 %indvars.iv to i32 br label %while.end -while.end.loopexit.split.loop.exit23: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit +while.end.loopexit.split.loop.exit21: ; preds = %if.else6.i %16 = trunc nsw i64 %indvars.iv to i32 br label %while.end -while.end: ; preds = %while.body, %while.end.loopexit.split.loop.exit, %while.end.loopexit.split.loop.exit23, %entry - %i.0.lcssa = phi i32 [ %start, %entry ], [ %15, %while.end.loopexit.split.loop.exit ], [ %16, %while.end.loopexit.split.loop.exit23 ], [ %cond.i, %while.body ] +while.end.loopexit.split.loop.exit25: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %17 = trunc nsw i64 %indvars.iv to i32 + br label %while.end + +while.end: ; preds = %while.body, %while.end.loopexit.split.loop.exit, %while.end.loopexit.split.loop.exit21, %while.end.loopexit.split.loop.exit25, %entry + %i.0.lcssa = phi i32 [ %start, %entry ], [ %15, %while.end.loopexit.split.loop.exit ], [ %16, %while.end.loopexit.split.loop.exit21 ], [ %17, %while.end.loopexit.split.loop.exit25 ], [ %cond.i, %while.body ] ret i32 %i.0.lcssa } @@ -293,7 +281,6 @@ entry: lor.lhs.false: ; preds = %entry %1 = load i16, ptr %s, align 2 - %conv = zext i16 %1 to i32 %cmp1.i = icmp ult i16 %1, 256 br i1 %cmp1.i, label %if.then2.i, label %if.else6.i @@ -301,32 +288,23 @@ if.then2.i: ; preds = %lor.lhs.false %idxprom.i = zext nneg i16 %1 to i64 %arrayidx.i = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i %2 = load i8, ptr %arrayidx.i, align 1 - %3 = lshr i8 %2, 2 - %4 = and i8 %3, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %3 = and i8 %2, 4 + %4 = icmp eq i8 %3, 0 + br i1 %4, label %land.lhs.true, label %land.rhs.preheader if.else6.i: ; preds = %lor.lhs.false - %5 = add i16 %1, -8206 - %or.cond.i = icmp ult i16 %5, 28 - br i1 %or.cond.i, label %if.then9.i, label %land.lhs.true - -if.then9.i: ; preds = %if.else6.i - %6 = add nsw i32 %conv, -8232 - %7 = icmp ult i32 %6, -24 - %conv12.i = zext i1 %7 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit: ; preds = %if.then2.i, %if.then9.i - %retval.0.i = phi i8 [ %4, %if.then2.i ], [ %conv12.i, %if.then9.i ] - %tobool.not = icmp eq i8 %retval.0.i, 0 - br i1 %tobool.not, label %land.lhs.true, label %land.rhs.preheader - -land.lhs.true: ; preds = %if.else6.i, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit + %5 = add i16 %1, -8234 + %or.cond.i = icmp ult i16 %5, -28 + %6 = add nsw i16 %1, -8208 + %7 = icmp ult i16 %6, 24 + %or.cond = select i1 %or.cond.i, i1 true, i1 %7 + br i1 %or.cond, label %land.lhs.true, label %land.rhs.preheader + +land.lhs.true: ; preds = %if.then2.i, %if.else6.i %8 = zext nneg i32 %0 to i64 %9 = getelementptr i16, ptr %s, i64 %8 %arrayidx1 = getelementptr i8, ptr %9, i64 -2 %10 = load i16, ptr %arrayidx1, align 2 - %conv2 = zext i16 %10 to i32 %cmp1.i18 = icmp ult i16 %10, 256 br i1 %cmp1.i18, label %if.then2.i24, label %if.else6.i19 @@ -334,27 +312,19 @@ if.then2.i24: ; preds = %land.lhs.true %idxprom.i25 = zext nneg i16 %10 to i64 %arrayidx.i26 = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i25 %11 = load i8, ptr %arrayidx.i26, align 1 - %12 = lshr i8 %11, 2 - %13 = and i8 %12, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27 + %12 = and i8 %11, 4 + %13 = icmp eq i8 %12, 0 + br i1 %13, label %return, label %land.rhs.preheader if.else6.i19: ; preds = %land.lhs.true - %14 = add i16 %10, -8206 - %or.cond.i20 = icmp ult i16 %14, 28 - br i1 %or.cond.i20, label %if.then9.i22, label %return - -if.then9.i22: ; preds = %if.else6.i19 - %15 = add nsw i32 %conv2, -8232 - %16 = icmp ult i32 %15, -24 - %conv12.i23 = zext i1 %16 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27 - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27: ; preds = %if.then2.i24, %if.then9.i22 - %retval.0.i21 = phi i8 [ %13, %if.then2.i24 ], [ %conv12.i23, %if.then9.i22 ] - %tobool4.not = icmp eq i8 %retval.0.i21, 0 - br i1 %tobool4.not, label %return, label %land.rhs.preheader - -land.rhs.preheader: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27 + %14 = add i16 %10, -8234 + %or.cond.i20 = icmp ult i16 %14, -28 + %15 = add nsw i16 %10, -8208 + %16 = icmp ult i16 %15, 24 + %or.cond72 = select i1 %or.cond.i20, i1 true, i1 %16 + br i1 %or.cond72, label %return, label %land.rhs.preheader + +land.rhs.preheader: ; preds = %if.else6.i19, %if.else6.i, %if.then2.i, %if.then2.i24 %wide.trip.count = zext nneg i32 %0 to i64 br label %land.rhs @@ -362,7 +332,6 @@ land.rhs: ; preds = %land.rhs.preheader, %indvars.iv = phi i64 [ 0, %land.rhs.preheader ], [ %indvars.iv.next, %while.body ] %arrayidx7 = getelementptr inbounds nuw i16, ptr %s, i64 %indvars.iv %17 = load i16, ptr %arrayidx7, align 2 - %conv8 = zext i16 %17 to i32 %cmp1.i28 = icmp ult i16 %17, 256 br i1 %cmp1.i28, label %if.then2.i34, label %if.else6.i29 @@ -370,32 +339,24 @@ if.then2.i34: ; preds = %land.rhs %idxprom.i35 = zext nneg i16 %17 to i64 %arrayidx.i36 = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i35 %18 = load i8, ptr %arrayidx.i36, align 1 - %19 = lshr i8 %18, 2 - %20 = and i8 %19, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit37 + %19 = and i8 %18, 4 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %while.end, label %while.body if.else6.i29: ; preds = %land.rhs - %21 = add i16 %17, -8206 - %or.cond.i30 = icmp ult i16 %21, 28 - br i1 %or.cond.i30, label %if.then9.i32, label %while.end - -if.then9.i32: ; preds = %if.else6.i29 - %22 = add nsw i32 %conv8, -8232 - %23 = icmp ult i32 %22, -24 - %conv12.i33 = zext i1 %23 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit37 - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit37: ; preds = %if.then2.i34, %if.then9.i32 - %retval.0.i31 = phi i8 [ %20, %if.then2.i34 ], [ %conv12.i33, %if.then9.i32 ] - %tobool10.not = icmp eq i8 %retval.0.i31, 0 - br i1 %tobool10.not, label %while.end, label %while.body - -while.body: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit37 + %21 = add i16 %17, -8234 + %or.cond.i30 = icmp ult i16 %21, -28 + %22 = add nsw i16 %17, -8208 + %23 = icmp ult i16 %22, 24 + %or.cond74 = select i1 %or.cond.i30, i1 true, i1 %23 + br i1 %or.cond74, label %while.end, label %while.body + +while.body: ; preds = %if.else6.i29, %if.then2.i34 %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 %if.end22, label %land.rhs, !llvm.loop !7 -while.end: ; preds = %if.else6.i29, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit37 +while.end: ; preds = %if.then2.i34, %if.else6.i29 %24 = trunc nuw nsw i64 %indvars.iv to i32 %invariant.gep = getelementptr i8, ptr %s, i64 -2 %25 = zext nneg i32 %0 to i64 @@ -405,7 +366,6 @@ while.cond13: ; preds = %while.end, %while.b %indvars.iv64 = phi i64 [ %25, %while.end ], [ %indvars.iv.next65, %while.body20 ] %gep = getelementptr i16, ptr %invariant.gep, i64 %indvars.iv64 %26 = load i16, ptr %gep, align 2 - %conv17 = zext i16 %26 to i32 %cmp1.i38 = icmp ult i16 %26, 256 br i1 %cmp1.i38, label %if.then2.i44, label %if.else6.i39 @@ -413,31 +373,23 @@ if.then2.i44: ; preds = %while.cond13 %idxprom.i45 = zext nneg i16 %26 to i64 %arrayidx.i46 = getelementptr inbounds nuw [256 x i8], ptr @_ZN6icu_75L6latin1E, i64 0, i64 %idxprom.i45 %27 = load i8, ptr %arrayidx.i46, align 1 - %28 = lshr i8 %27, 2 - %29 = and i8 %28, 1 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit47 + %28 = and i8 %27, 4 + %29 = icmp eq i8 %28, 0 + br i1 %29, label %if.end22.loopexit, label %while.body20 if.else6.i39: ; preds = %while.cond13 - %30 = add i16 %26, -8206 - %or.cond.i40 = icmp ult i16 %30, 28 - br i1 %or.cond.i40, label %if.then9.i42, label %if.end22.loopexit - -if.then9.i42: ; preds = %if.else6.i39 - %31 = add nsw i32 %conv17, -8232 - %32 = icmp ult i32 %31, -24 - %conv12.i43 = zext i1 %32 to i8 - br label %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit47 - -_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit47: ; preds = %if.then2.i44, %if.then9.i42 - %retval.0.i41 = phi i8 [ %29, %if.then2.i44 ], [ %conv12.i43, %if.then9.i42 ] - %tobool19.not = icmp eq i8 %retval.0.i41, 0 - br i1 %tobool19.not, label %if.end22.loopexit, label %while.body20 - -while.body20: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit47 + %30 = add i16 %26, -8234 + %or.cond.i40 = icmp ult i16 %30, -28 + %31 = add nsw i16 %26, -8208 + %32 = icmp ult i16 %31, 24 + %or.cond76 = select i1 %or.cond.i40, i1 true, i1 %32 + br i1 %or.cond76, label %if.end22.loopexit, label %while.body20 + +while.body20: ; preds = %if.else6.i39, %if.then2.i44 %indvars.iv.next65 = add nsw i64 %indvars.iv64, -1 br label %while.cond13, !llvm.loop !8 -if.end22.loopexit: ; preds = %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit47, %if.else6.i39 +if.end22.loopexit: ; preds = %if.then2.i44, %if.else6.i39 %33 = trunc nsw i64 %indvars.iv64 to i32 br label %if.end22 @@ -450,8 +402,8 @@ if.end22: ; preds = %while.body, %if.end %add.ptr = getelementptr inbounds nuw i16, ptr %s, i64 %idx.ext br label %return -return: ; preds = %if.else6.i19, %entry, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27, %if.end22 - %retval.0 = phi ptr [ %add.ptr, %if.end22 ], [ %s, %_ZN6icu_7512PatternProps12isWhiteSpaceEi.exit27 ], [ %s, %entry ], [ %s, %if.else6.i19 ] +return: ; preds = %if.then2.i24, %if.else6.i19, %entry, %if.end22 + %retval.0 = phi ptr [ %add.ptr, %if.end22 ], [ %s, %entry ], [ %s, %if.else6.i19 ], [ %s, %if.then2.i24 ] ret ptr %retval.0 } diff --git a/bench/icu/optimized/uniset_props.ll b/bench/icu/optimized/uniset_props.ll index de9861681d2..cf3f1a4e32f 100644 --- a/bench/icu/optimized/uniset_props.ll +++ b/bench/icu/optimized/uniset_props.ll @@ -2943,8 +2943,7 @@ _ZNK6icu_7513UnicodeString6charAtEi.exit98: ; preds = %_ZN6icu_7512_GLOBAL lor.lhs.false34: ; preds = %_ZNK6icu_7513UnicodeString6charAtEi.exit98 %cmp28 = icmp eq i16 %18, 78 - %cmp25 = icmp eq i16 %18, 80 - %conv26 = zext i1 %cmp25 to i8 + %cmp25 = icmp ne i16 %18, 80 %inc35 = add nsw i32 %call31, 1 store i32 %inc35, ptr %pos, align 4 %cmp.i.i109 = icmp ult i32 %call31, %cond.i103 @@ -2971,7 +2970,7 @@ do.body44: ; preds = %_ZNK6icu_7513Unicod if.then49: ; preds = %_ZNK6icu_7513UnicodeString6charAtEi.exit, %if.then8, %if.then15 %25 = phi i32 [ %inc, %if.then15 ], [ %call10, %if.then8 ], [ %call10, %_ZNK6icu_7513UnicodeString6charAtEi.exit ] - %invert.0.ph = phi i8 [ 1, %if.then15 ], [ 0, %if.then8 ], [ 0, %_ZNK6icu_7513UnicodeString6charAtEi.exit ] + %invert.0.ph = phi i1 [ false, %if.then15 ], [ true, %if.then8 ], [ true, %_ZNK6icu_7513UnicodeString6charAtEi.exit ] %cmp.i.i119 = icmp slt i32 %25, 0 %spec.select.i = call i32 @llvm.smin.i32(i32 %25, i32 %cond.i41) %start.addr.0.i = select i1 %cmp.i.i119, i32 0, i32 %spec.select.i @@ -2988,7 +2987,7 @@ if.else51: ; preds = %_ZNK6icu_7513Unicod br label %if.end53 if.end53: ; preds = %if.else51, %if.then49 - %invert.0202 = phi i8 [ %invert.0.ph, %if.then49 ], [ %conv26, %if.else51 ] + %invert.0202 = phi i1 [ %invert.0.ph, %if.then49 ], [ %cmp25, %if.else51 ] %isName.0200 = phi i1 [ false, %if.then49 ], [ %cmp28, %if.else51 ] %tobool7.not172198 = phi i32 [ 2, %if.then49 ], [ 1, %if.else51 ] %close.0 = phi i32 [ %call2.i, %if.then49 ], [ %call2.i139, %if.else51 ] @@ -3088,8 +3087,7 @@ invoke.cont84: ; preds = %if.end83 br i1 %cmp.i167, label %if.end100, label %if.then89 if.then89: ; preds = %invoke.cont84 - %tobool90.not = icmp eq i8 %invert.0202, 0 - br i1 %tobool90.not, label %if.end96, label %if.then91 + br i1 %invert.0202, label %if.end96, label %if.then91 if.then91: ; preds = %if.then89 %call93 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN6icu_7510UnicodeSet10complementEv(ptr noundef nonnull align 8 dereferenceable(200) %this) diff --git a/bench/icu/optimized/units_router.ll b/bench/icu/optimized/units_router.ll index 146d515244f..03ae17606be 100644 --- a/bench/icu/optimized/units_router.ll +++ b/bench/icu/optimized/units_router.ll @@ -583,44 +583,43 @@ invoke.cont: ; preds = %if.end %tobool.not.i.i = icmp eq i16 %conv2.i12.i.i, 0 %fUnion.i5.i.i = getelementptr inbounds nuw i8, ptr %precisionSkeleton, i64 8 %4 = load i16, ptr %fUnion.i5.i.i, align 8 - br i1 %tobool.not.i.i, label %if.else.i.i, label %if.then.i.i - -if.then.i.i: ; preds = %invoke.cont - %5 = trunc i16 %4 to i8 - %conv2.i4.i.i = and i8 %5, 1 - br label %invoke.cont2 - -if.else.i.i: ; preds = %invoke.cont %conv2.i613.i.i = and i16 %4, 1 %tobool4.not.i.i = icmp eq i16 %conv2.i613.i.i, 0 - br i1 %tobool4.not.i.i, label %land.rhs.i.i, label %invoke.cont2 + br i1 %tobool.not.i.i, label %if.else.i.i, label %invoke.cont2 + +if.else.i.i: ; preds = %invoke.cont + br i1 %tobool4.not.i.i, label %land.rhs.i.i, label %if.then5.critedge land.rhs.i.i: ; preds = %if.else.i.i %spec.select10.i.i = call i32 @llvm.smin.i32(i32 %cond.i.i, i32 0) %srcLength.addr.0.i.i = call i32 @llvm.smax.i32(i32 %cond.i.i, i32 0) - %6 = and i16 %1, 2 - %tobool.not.i.i.i = icmp eq i16 %6, 0 + %5 = and i16 %1, 2 + %tobool.not.i.i.i = icmp eq i16 %5, 0 %fBuffer.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 10 %fArray.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 24 - %7 = load ptr, ptr %fArray.i.i.i, align 8 - %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %7, ptr %fBuffer.i.i.i + %6 = load ptr, ptr %fArray.i.i.i, align 8 + %cond.i.i.i = select i1 %tobool.not.i.i.i, ptr %6, ptr %fBuffer.i.i.i %call6.i.i4 = invoke noundef signext i8 @_ZNK6icu_7513UnicodeString17doEqualsSubstringEiiPKDsii(ptr noundef nonnull align 8 dereferenceable(64) %precisionSkeleton, i32 noundef 0, i32 noundef %cond.i.i, ptr noundef %cond.i.i.i, i32 noundef %spec.select10.i.i, i32 noundef %srcLength.addr.0.i.i) to label %call6.i.i.noexc unwind label %lpad1 call6.i.i.noexc: ; preds = %land.rhs.i.i - %tobool7.i.i = icmp ne i8 %call6.i.i4, 0 - %8 = zext i1 %tobool7.i.i to i8 + %tobool7.i.i.not = icmp eq i8 %call6.i.i4, 0 br label %invoke.cont2 -invoke.cont2: ; preds = %call6.i.i.noexc, %if.else.i.i, %if.then.i.i - %retval.0.i.i = phi i8 [ %conv2.i4.i.i, %if.then.i.i ], [ 0, %if.else.i.i ], [ %8, %call6.i.i.noexc ] - %tobool4.not = icmp eq i8 %retval.0.i.i, 0 +invoke.cont2: ; preds = %invoke.cont, %call6.i.i.noexc + %retval.0.i.i = phi i1 [ %tobool7.i.i.not, %call6.i.i.noexc ], [ %tobool4.not.i.i, %invoke.cont ] call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp) #11 - %9 = load ptr, ptr %agg.tmp, align 8 - call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %9) #11, !srcloc !4 - br i1 %tobool4.not, label %if.then5, label %if.end6 + %7 = load ptr, ptr %agg.tmp, align 8 + call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %7) #11, !srcloc !4 + br i1 %retval.0.i.i, label %if.then5, label %if.end6 -if.then5: ; preds = %invoke.cont2 +if.then5.critedge: ; preds = %if.else.i.i + call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp) #11 + %8 = load ptr, ptr %agg.tmp, align 8 + call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %8) #11, !srcloc !4 + br label %if.then5 + +if.then5: ; preds = %if.then5.critedge, %invoke.cont2 store i32 3, ptr %status, align 4 store i32 0, ptr %agg.result, align 8 %fTrailingZeroDisplay.i5 = getelementptr inbounds nuw i8, ptr %agg.result, i64 24 @@ -628,20 +627,20 @@ if.then5: ; preds = %invoke.cont2 br label %return lpad: ; preds = %if.end - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad1: ; preds = %land.rhs.i.i - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %ref.tmp) #11 br label %ehcleanup ehcleanup: ; preds = %lpad1, %lpad - %.pn = phi { ptr, i32 } [ %11, %lpad1 ], [ %10, %lpad ] - %12 = load ptr, ptr %agg.tmp, align 8 - call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %12) #11, !srcloc !4 + %.pn = phi { ptr, i32 } [ %10, %lpad1 ], [ %9, %lpad ] + %11 = load ptr, ptr %agg.tmp, align 8 + call void asm sideeffect "", "rm,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %11) #11, !srcloc !4 resume { ptr, i32 } %.pn if.end6: ; preds = %invoke.cont2 diff --git a/bench/icu/optimized/ushape.ll b/bench/icu/optimized/ushape.ll index 843fd1bcc1d..d8eded88868 100644 --- a/bench/icu/optimized/ushape.ll +++ b/bench/icu/optimized/ushape.ll @@ -14,7 +14,6 @@ target triple = "x86_64-unknown-linux-gnu" @_ZL13IrrelevantPos = internal unnamed_addr constant [8 x i8] c"\00\02\04\06\08\0A\0C\0E", align 1 @_ZL14convertLamAlef = internal unnamed_addr constant [8 x i16] [i16 1570, i16 1570, i16 1571, i16 1571, i16 1573, i16 1573, i16 1575, i16 1575], align 16 @_ZL13yehHamzaToYeh = internal unnamed_addr constant [2 x i16] [i16 -273, i16 -272], align 2 -@_ZL14tashkeelMedial = internal unnamed_addr constant [16 x i8] c"\00\01\00\00\00\00\00\01\00\01\00\01\00\01\00\01", align 16 @switch.table._ZL12shapeUnicodePDsiijP10UErrorCodei15uShapeVariables = private unnamed_addr constant [6 x i16] [i16 1628, i16 1629, i16 poison, i16 1630, i16 poison, i16 1631], align 2 ; Function Attrs: mustprogress uwtable @@ -1850,30 +1849,21 @@ _ZL23isTashkeelOnTatweelCharDs.exit: ; preds = %switch.early.test.i br i1 %cmp3.not, label %switch.early.test.i22, label %for.inc.sink.split switch.early.test.i22: ; preds = %_ZL23isTashkeelOnTatweelCharDs.exit - switch i16 %0, label %if.then.i32 [ + switch i16 %0, label %_ZL22isIsolatedTashkeelCharDs.exit [ i16 -387, label %for.inc.sink.split i16 -395, label %if.else.i29 i16 -397, label %if.else.i29 ] -if.then.i32: ; preds = %switch.early.test.i22 - %arrayidx.i34 = getelementptr inbounds nuw [16 x i8], ptr @_ZL14tashkeelMedial, i64 0, i64 %idxprom.i - %5 = load i8, ptr %arrayidx.i34, align 1 - %conv10.i = zext i8 %5 to i32 - %sub11.i = sub nsw i32 1, %conv10.i - br label %_ZL22isIsolatedTashkeelCharDs.exit - if.else.i29: ; preds = %if.else.i, %switch.early.test.i, %switch.early.test.i, %switch.early.test.i22, %switch.early.test.i22 - %6 = add i16 %0, 930 - %or.cond3.i = icmp ult i16 %6, 6 - %..i = zext i1 %or.cond3.i to i32 + %5 = add i16 %0, 924 + %or.cond3.i = icmp ult i16 %5, -6 br label %_ZL22isIsolatedTashkeelCharDs.exit -_ZL22isIsolatedTashkeelCharDs.exit: ; preds = %if.then.i32, %if.else.i29 - %retval.0.i30 = phi i32 [ %sub11.i, %if.then.i32 ], [ %..i, %if.else.i29 ] - %tobool.not = icmp eq i32 %retval.0.i30, 0 +_ZL22isIsolatedTashkeelCharDs.exit: ; preds = %switch.early.test.i22, %if.else.i29 + %retval.0.i30 = phi i1 [ %or.cond3.i, %if.else.i29 ], [ false, %switch.early.test.i22 ] %cmp19.not = icmp eq i16 %0, -388 - %or.cond14 = or i1 %cmp19.not, %tobool.not + %or.cond14 = or i1 %cmp19.not, %retval.0.i30 br i1 %or.cond14, label %for.inc, label %for.inc.sink.split for.inc.sink.split: ; preds = %_ZL22isIsolatedTashkeelCharDs.exit, %switch.early.test.i22, %switch.early.test.i, %if.else.i, %_ZL23isTashkeelOnTatweelCharDs.exit diff --git a/bench/imgui/optimized/imgui_draw.cpp.ll b/bench/imgui/optimized/imgui_draw.cpp.ll index c7ec0292484..44006ddf539 100644 --- a/bench/imgui/optimized/imgui_draw.cpp.ll +++ b/bench/imgui/optimized/imgui_draw.cpp.ll @@ -23661,63 +23661,63 @@ entry: entry.split.us: ; preds = %entry %0 = load i8, ptr %text, align 1 - %tobool3.not.us12 = icmp eq i8 %0, 0 - br i1 %tobool3.not.us12, label %while.end, label %while.body.us + %1 = icmp eq i8 %0, 0 + br i1 %1, label %while.end, label %while.body.us while.body.us: ; preds = %entry.split.us, %if.end.us - %text.addr.0.us13 = phi ptr [ %add.ptr.us, %if.end.us ], [ %text, %entry.split.us ] + %text.addr.0.us9 = phi ptr [ %add.ptr.us, %if.end.us ], [ %text, %entry.split.us ] store i32 0, ptr %c, align 4 - %call.us = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %c, ptr noundef nonnull %text.addr.0.us13, ptr noundef null) + %call.us = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %c, ptr noundef nonnull %text.addr.0.us9, ptr noundef null) %cmp4.us = icmp eq i32 %call.us, 0 br i1 %cmp4.us, label %while.end, label %if.end.us if.end.us: ; preds = %while.body.us %idx.ext.us = sext i32 %call.us to i64 - %add.ptr.us = getelementptr inbounds i8, ptr %text.addr.0.us13, i64 %idx.ext.us - %1 = load i32, ptr %c, align 4 - %sh_prom.i.i.us = and i32 %1, 31 + %add.ptr.us = getelementptr inbounds i8, ptr %text.addr.0.us9, i64 %idx.ext.us + %2 = load i32, ptr %c, align 4 + %sh_prom.i.i.us = and i32 %2, 31 %shl.i.i.us = shl nuw i32 1, %sh_prom.i.i.us - %2 = load ptr, ptr %Data.i.i.i, align 8 - %3 = lshr i32 %1, 5 - %4 = and i32 %3, 2047 - %idxprom.i.i.i.us = zext nneg i32 %4 to i64 - %arrayidx.i.i.i.us = getelementptr inbounds nuw i32, ptr %2, i64 %idxprom.i.i.i.us - %5 = load i32, ptr %arrayidx.i.i.i.us, align 4 - %or.i.i.us = or i32 %5, %shl.i.i.us + %3 = load ptr, ptr %Data.i.i.i, align 8 + %4 = lshr i32 %2, 5 + %5 = and i32 %4, 2047 + %idxprom.i.i.i.us = zext nneg i32 %5 to i64 + %arrayidx.i.i.i.us = getelementptr inbounds nuw i32, ptr %3, i64 %idxprom.i.i.i.us + %6 = load i32, ptr %arrayidx.i.i.i.us, align 4 + %or.i.i.us = or i32 %6, %shl.i.i.us store i32 %or.i.i.us, ptr %arrayidx.i.i.i.us, align 4 - %6 = load i8, ptr %add.ptr.us, align 1 - %tobool3.not.us = icmp eq i8 %6, 0 - br i1 %tobool3.not.us, label %while.end, label %while.body.us, !llvm.loop !129 + %7 = load i8, ptr %add.ptr.us, align 1 + %8 = icmp eq i8 %7, 0 + br i1 %8, label %while.end, label %while.body.us, !llvm.loop !129 entry.split: ; preds = %entry - %cmp7.not = icmp ult ptr %text, %text_end - br i1 %cmp7.not, label %while.body, label %while.end + %cmp.not7 = icmp ult ptr %text, %text_end + br i1 %cmp.not7, label %while.body, label %while.end while.body: ; preds = %entry.split, %if.end - %text.addr.010 = phi ptr [ %add.ptr, %if.end ], [ %text, %entry.split ] + %text.addr.08 = phi ptr [ %add.ptr, %if.end ], [ %text, %entry.split ] store i32 0, ptr %c, align 4 - %call = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %c, ptr noundef %text.addr.010, ptr noundef nonnull %text_end) + %call = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %c, ptr noundef %text.addr.08, ptr noundef nonnull %text_end) %cmp4 = icmp eq i32 %call, 0 br i1 %cmp4, label %while.end, label %if.end if.end: ; preds = %while.body %idx.ext = sext i32 %call to i64 - %add.ptr = getelementptr inbounds i8, ptr %text.addr.010, i64 %idx.ext - %7 = load i32, ptr %c, align 4 - %sh_prom.i.i = and i32 %7, 31 + %add.ptr = getelementptr inbounds i8, ptr %text.addr.08, i64 %idx.ext + %9 = load i32, ptr %c, align 4 + %sh_prom.i.i = and i32 %9, 31 %shl.i.i = shl nuw i32 1, %sh_prom.i.i - %8 = load ptr, ptr %Data.i.i.i, align 8 - %9 = lshr i32 %7, 5 - %10 = and i32 %9, 2047 - %idxprom.i.i.i = zext nneg i32 %10 to i64 - %arrayidx.i.i.i = getelementptr inbounds nuw i32, ptr %8, i64 %idxprom.i.i.i - %11 = load i32, ptr %arrayidx.i.i.i, align 4 - %or.i.i = or i32 %11, %shl.i.i + %10 = load ptr, ptr %Data.i.i.i, align 8 + %11 = lshr i32 %9, 5 + %12 = and i32 %11, 2047 + %idxprom.i.i.i = zext nneg i32 %12 to i64 + %arrayidx.i.i.i = getelementptr inbounds nuw i32, ptr %10, i64 %idxprom.i.i.i + %13 = load i32, ptr %arrayidx.i.i.i, align 4 + %or.i.i = or i32 %13, %shl.i.i store i32 %or.i.i, ptr %arrayidx.i.i.i, align 4 %cmp.not = icmp ult ptr %add.ptr, %text_end br i1 %cmp.not, label %while.body, label %while.end, !llvm.loop !129 -while.end: ; preds = %while.body, %if.end, %while.body.us, %if.end.us, %entry.split, %entry.split.us +while.end: ; preds = %if.end, %while.body, %while.body.us, %if.end.us, %entry.split, %entry.split.us ret void } diff --git a/bench/libquic/optimized/simple.c.ll b/bench/libquic/optimized/simple.c.ll index a2dcc76f261..303cbf87e3b 100644 --- a/bench/libquic/optimized/simple.c.ll +++ b/bench/libquic/optimized/simple.c.ll @@ -449,24 +449,19 @@ if.end4.i: ; preds = %lor.lhs.false.i %field_encode.i = getelementptr inbounds nuw i8, ptr %0, i64 72 %1 = load ptr, ptr %field_encode.i, align 8 %tobool5.not.i = icmp eq ptr %1, null - br i1 %tobool5.not.i, label %if.end10.i, label %if.then6.i + br i1 %tobool5.not.i, label %set_Jprojective_coordinate_GFp.exit, label %if.then6.i if.then6.i: ; preds = %if.end4.i %call9.i = tail call i32 %1(ptr noundef nonnull %group, ptr noundef nonnull %X, ptr noundef nonnull %x, ptr noundef nonnull %ctx.addr.0) #5 - br label %set_Jprojective_coordinate_GFp.exit + %2 = icmp eq i32 %call9.i, 0 + br i1 %2, label %err, label %lor.lhs.false -if.end10.i: ; preds = %if.end4.i +set_Jprojective_coordinate_GFp.exit: ; preds = %if.end4.i %call11.i = tail call ptr @BN_copy(ptr noundef nonnull %X, ptr noundef nonnull %x) #5 - %cmp12.i = icmp ne ptr %call11.i, null - %conv.i = zext i1 %cmp12.i to i32 - br label %set_Jprojective_coordinate_GFp.exit + %cmp12.i.not = icmp eq ptr %call11.i, null + br i1 %cmp12.i.not, label %err, label %lor.lhs.false -set_Jprojective_coordinate_GFp.exit: ; preds = %if.then6.i, %if.end10.i - %retval.0.i = phi i32 [ %call9.i, %if.then6.i ], [ %conv.i, %if.end10.i ] - %tobool.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool.not, label %err, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end3, %set_Jprojective_coordinate_GFp.exit +lor.lhs.false: ; preds = %if.then6.i, %if.end3, %set_Jprojective_coordinate_GFp.exit %Y = getelementptr inbounds nuw i8, ptr %point, i64 32 %cmp.i9 = icmp eq ptr %y, null br i1 %cmp.i9, label %lor.lhs.false7, label %if.end.i10 @@ -487,28 +482,23 @@ set_Jprojective_coordinate_GFp.exit28.thread: ; preds = %if.end.i10, %lor.lh br label %err if.end4.i19: ; preds = %lor.lhs.false.i15 - %2 = load ptr, ptr %group, align 8 - %field_encode.i20 = getelementptr inbounds nuw i8, ptr %2, i64 72 - %3 = load ptr, ptr %field_encode.i20, align 8 - %tobool5.not.i21 = icmp eq ptr %3, null - br i1 %tobool5.not.i21, label %if.end10.i24, label %if.then6.i22 + %3 = load ptr, ptr %group, align 8 + %field_encode.i20 = getelementptr inbounds nuw i8, ptr %3, i64 72 + %4 = load ptr, ptr %field_encode.i20, align 8 + %tobool5.not.i21 = icmp eq ptr %4, null + br i1 %tobool5.not.i21, label %set_Jprojective_coordinate_GFp.exit28, label %if.then6.i22 if.then6.i22: ; preds = %if.end4.i19 - %call9.i23 = tail call i32 %3(ptr noundef nonnull %group, ptr noundef nonnull %Y, ptr noundef nonnull %y, ptr noundef nonnull %ctx.addr.0) #5 - br label %set_Jprojective_coordinate_GFp.exit28 + %call9.i23 = tail call i32 %4(ptr noundef nonnull %group, ptr noundef nonnull %Y, ptr noundef nonnull %y, ptr noundef nonnull %ctx.addr.0) #5 + %5 = icmp eq i32 %call9.i23, 0 + br i1 %5, label %err, label %lor.lhs.false7 -if.end10.i24: ; preds = %if.end4.i19 +set_Jprojective_coordinate_GFp.exit28: ; preds = %if.end4.i19 %call11.i25 = tail call ptr @BN_copy(ptr noundef nonnull %Y, ptr noundef nonnull %y) #5 - %cmp12.i26 = icmp ne ptr %call11.i25, null - %conv.i27 = zext i1 %cmp12.i26 to i32 - br label %set_Jprojective_coordinate_GFp.exit28 - -set_Jprojective_coordinate_GFp.exit28: ; preds = %if.then6.i22, %if.end10.i24 - %retval.0.i14 = phi i32 [ %call9.i23, %if.then6.i22 ], [ %conv.i27, %if.end10.i24 ] - %tobool6.not = icmp eq i32 %retval.0.i14, 0 - br i1 %tobool6.not, label %err, label %lor.lhs.false7 + %cmp12.i26.not = icmp eq ptr %call11.i25, null + br i1 %cmp12.i26.not, label %err, label %lor.lhs.false7 -lor.lhs.false7: ; preds = %lor.lhs.false, %set_Jprojective_coordinate_GFp.exit28 +lor.lhs.false7: ; preds = %if.then6.i22, %lor.lhs.false, %set_Jprojective_coordinate_GFp.exit28 %Z = getelementptr inbounds nuw i8, ptr %point, i64 56 %cmp.i29 = icmp eq ptr %z, null br i1 %cmp.i29, label %err, label %if.end.i30 @@ -526,36 +516,32 @@ lor.lhs.false.i35: ; preds = %if.end.i30 set_Jprojective_coordinate_GFp.exit48.thread: ; preds = %if.end.i30, %lor.lhs.false.i35 tail call void @ERR_put_error(i32 noundef 15, i32 noundef 0, i32 noundef 101, ptr noundef nonnull @.str, i32 noundef 280) #5 - br label %6 + br label %9 if.end4.i39: ; preds = %lor.lhs.false.i35 - %4 = load ptr, ptr %group, align 8 - %field_encode.i40 = getelementptr inbounds nuw i8, ptr %4, i64 72 - %5 = load ptr, ptr %field_encode.i40, align 8 - %tobool5.not.i41 = icmp eq ptr %5, null - br i1 %tobool5.not.i41, label %if.end10.i44, label %if.then6.i42 + %6 = load ptr, ptr %group, align 8 + %field_encode.i40 = getelementptr inbounds nuw i8, ptr %6, i64 72 + %7 = load ptr, ptr %field_encode.i40, align 8 + %tobool5.not.i41 = icmp eq ptr %7, null + br i1 %tobool5.not.i41, label %set_Jprojective_coordinate_GFp.exit48, label %if.then6.i42 if.then6.i42: ; preds = %if.end4.i39 - %call9.i43 = tail call i32 %5(ptr noundef nonnull %group, ptr noundef nonnull %Z, ptr noundef nonnull %z, ptr noundef nonnull %ctx.addr.0) #5 - br label %set_Jprojective_coordinate_GFp.exit48 + %call9.i43 = tail call i32 %7(ptr noundef nonnull %group, ptr noundef nonnull %Z, ptr noundef nonnull %z, ptr noundef nonnull %ctx.addr.0) #5 + %call9.i43.fr = freeze i32 %call9.i43 + %8 = icmp eq i32 %call9.i43.fr, 0 + br i1 %8, label %9, label %err -if.end10.i44: ; preds = %if.end4.i39 +set_Jprojective_coordinate_GFp.exit48: ; preds = %if.end4.i39 %call11.i45 = tail call ptr @BN_copy(ptr noundef nonnull %Z, ptr noundef nonnull %z) #5 - %cmp12.i46 = icmp ne ptr %call11.i45, null - %conv.i47 = zext i1 %cmp12.i46 to i32 - br label %set_Jprojective_coordinate_GFp.exit48 - -set_Jprojective_coordinate_GFp.exit48: ; preds = %if.then6.i42, %if.end10.i44 - %retval.0.i34 = phi i32 [ %call9.i43, %if.then6.i42 ], [ %conv.i47, %if.end10.i44 ] - %retval.0.i34.fr = freeze i32 %retval.0.i34 - %tobool9.not = icmp eq i32 %retval.0.i34.fr, 0 - br i1 %tobool9.not, label %6, label %err + %call11.i45.fr = freeze ptr %call11.i45 + %cmp12.i46.not = icmp eq ptr %call11.i45.fr, null + br i1 %cmp12.i46.not, label %9, label %err -6: ; preds = %set_Jprojective_coordinate_GFp.exit48.thread, %set_Jprojective_coordinate_GFp.exit48 +9: ; preds = %if.then6.i42, %set_Jprojective_coordinate_GFp.exit48.thread, %set_Jprojective_coordinate_GFp.exit48 br label %err -err: ; preds = %lor.lhs.false7, %6, %set_Jprojective_coordinate_GFp.exit48, %set_Jprojective_coordinate_GFp.exit28.thread, %set_Jprojective_coordinate_GFp.exit.thread, %set_Jprojective_coordinate_GFp.exit, %set_Jprojective_coordinate_GFp.exit28 - %ret.0 = phi i32 [ 0, %set_Jprojective_coordinate_GFp.exit28 ], [ 0, %set_Jprojective_coordinate_GFp.exit ], [ 0, %set_Jprojective_coordinate_GFp.exit.thread ], [ 0, %set_Jprojective_coordinate_GFp.exit28.thread ], [ 0, %6 ], [ 1, %set_Jprojective_coordinate_GFp.exit48 ], [ 1, %lor.lhs.false7 ] +err: ; preds = %if.then6.i42, %if.then6.i22, %if.then6.i, %lor.lhs.false7, %9, %set_Jprojective_coordinate_GFp.exit48, %set_Jprojective_coordinate_GFp.exit28.thread, %set_Jprojective_coordinate_GFp.exit.thread, %set_Jprojective_coordinate_GFp.exit, %set_Jprojective_coordinate_GFp.exit28 + %ret.0 = phi i32 [ 0, %set_Jprojective_coordinate_GFp.exit28 ], [ 0, %set_Jprojective_coordinate_GFp.exit ], [ 0, %set_Jprojective_coordinate_GFp.exit.thread ], [ 0, %set_Jprojective_coordinate_GFp.exit28.thread ], [ 0, %9 ], [ 1, %set_Jprojective_coordinate_GFp.exit48 ], [ 1, %lor.lhs.false7 ], [ 0, %if.then6.i ], [ 0, %if.then6.i22 ], [ 1, %if.then6.i42 ] tail call void @BN_CTX_free(ptr noundef %new_ctx.0) #5 br label %return diff --git a/bench/libquic/optimized/tasn_prn.c.ll b/bench/libquic/optimized/tasn_prn.c.ll index 3178b4bef31..d430b2685ec 100644 --- a/bench/libquic/optimized/tasn_prn.c.ll +++ b/bench/libquic/optimized/tasn_prn.c.ll @@ -251,41 +251,42 @@ land.lhs.true.i: ; preds = %if.end.i if.then3.i: ; preds = %land.lhs.true.i %call5.i = tail call i32 %6(ptr noundef %out, ptr noundef nonnull %fld, ptr noundef nonnull %it, i32 noundef %indent, ptr noundef %pctx) #7 - br label %asn1_primitive_print.exit + %7 = icmp eq i32 %call5.i, 0 + br i1 %7, label %return, label %sw.epilog if.end6.i: ; preds = %land.lhs.true.i, %if.end.i - %7 = load ptr, ptr %fld, align 8 - %8 = load i8, ptr %it, align 8 - %cmp.i = icmp eq i8 %8, 5 + %8 = load ptr, ptr %fld, align 8 + %9 = load i8, ptr %it, align 8 + %cmp.i = icmp eq i8 %9, 5 br i1 %cmp.i, label %if.end11.thread.i, label %if.end11.i if.end11.thread.i: ; preds = %if.end6.i - %type.i = getelementptr inbounds nuw i8, ptr %7, i64 4 - %9 = load i32, ptr %type.i, align 4 - %and.i = and i32 %9, -257 + %type.i = getelementptr inbounds nuw i8, ptr %8, i64 4 + %10 = load i32, ptr %type.i, align 4 + %and.i = and i32 %10, -257 %conv9.i = sext i32 %and.i to i64 br label %if.else24.i if.end11.i: ; preds = %if.end6.i %utype10.i = getelementptr inbounds nuw i8, ptr %it, i64 8 - %10 = load i64, ptr %utype10.i, align 8 - %cmp12.i = icmp eq i64 %10, -4 + %11 = load i64, ptr %utype10.i, align 8 + %cmp12.i = icmp eq i64 %11, -4 br i1 %cmp12.i, label %if.then14.i, label %if.else24.i if.then14.i: ; preds = %if.end11.i - %11 = load i32, ptr %7, align 8 - %conv16.i = sext i32 %11 to i64 - %value.i = getelementptr inbounds nuw i8, ptr %7, i64 8 - %12 = load ptr, ptr %value.i, align 8 - %13 = load i64, ptr %pctx, align 8 - %and17.i = and i64 %13, 16 + %12 = load i32, ptr %8, align 8 + %conv16.i = sext i32 %12 to i64 + %value.i = getelementptr inbounds nuw i8, ptr %8, i64 8 + %13 = load ptr, ptr %value.i, align 8 + %14 = load i64, ptr %pctx, align 8 + %and17.i = and i64 %14, 16 %tobool18.not.i = icmp eq i64 %and17.i, 0 br i1 %tobool18.not.i, label %if.end33.sink.split.i, label %if.end33.i if.else24.i: ; preds = %if.end11.i, %if.end11.thread.i - %utype.055.i = phi i64 [ %conv9.i, %if.end11.thread.i ], [ %10, %if.end11.i ] - %14 = load i64, ptr %pctx, align 8 - %and26.i = and i64 %14, 8 + %utype.055.i = phi i64 [ %conv9.i, %if.end11.thread.i ], [ %11, %if.end11.i ] + %15 = load i64, ptr %pctx, align 8 + %and26.i = and i64 %15, 8 %tobool27.not.i = icmp eq i64 %and26.i, 0 br i1 %tobool27.not.i, label %if.end33.i, label %if.then28.i @@ -294,26 +295,20 @@ if.then28.i: ; preds = %if.else24.i br label %if.end33.sink.split.i if.end33.sink.split.i: ; preds = %if.then28.i, %if.then14.i - %conv29.sink.i = phi i32 [ %conv29.i, %if.then28.i ], [ %11, %if.then14.i ] + %conv29.sink.i = phi i32 [ %conv29.i, %if.then28.i ], [ %12, %if.then14.i ] %utype.1.ph.i = phi i64 [ %utype.055.i, %if.then28.i ], [ %conv16.i, %if.then14.i ] - %str.0.ph.i = phi ptr [ %7, %if.then28.i ], [ %12, %if.then14.i ] + %str.0.ph.i = phi ptr [ %8, %if.then28.i ], [ %13, %if.then14.i ] %fld.addr.0.ph.i = phi ptr [ %fld, %if.then28.i ], [ %value.i, %if.then14.i ] %call30.i = tail call ptr @ASN1_tag2str(i32 noundef %conv29.sink.i) #7 br label %if.end33.i if.end33.i: ; preds = %if.end33.sink.split.i, %if.else24.i, %if.then14.i %utype.1.i = phi i64 [ %conv16.i, %if.then14.i ], [ %utype.055.i, %if.else24.i ], [ %utype.1.ph.i, %if.end33.sink.split.i ] - %str.0.i = phi ptr [ %12, %if.then14.i ], [ %7, %if.else24.i ], [ %str.0.ph.i, %if.end33.sink.split.i ] + %str.0.i = phi ptr [ %13, %if.then14.i ], [ %8, %if.else24.i ], [ %str.0.ph.i, %if.end33.sink.split.i ] %pname.0.i = phi ptr [ null, %if.then14.i ], [ null, %if.else24.i ], [ %call30.i, %if.end33.sink.split.i ] %fld.addr.0.i = phi ptr [ %value.i, %if.then14.i ], [ %fld, %if.else24.i ], [ %fld.addr.0.ph.i, %if.end33.sink.split.i ] %cmp34.i = icmp eq i64 %utype.1.i, 5 - br i1 %cmp34.i, label %if.then36.i, label %if.end42.i - -if.then36.i: ; preds = %if.end33.i - %call37.i = tail call i32 @BIO_puts(ptr noundef %out, ptr noundef nonnull @.str.16) #7 - %cmp38.i = icmp sgt i32 %call37.i, 0 - %..i = zext i1 %cmp38.i to i32 - br label %asn1_primitive_print.exit + br i1 %cmp34.i, label %asn1_primitive_print.exit, label %if.end42.i if.end42.i: ; preds = %if.end33.i %tobool43.not.i = icmp eq ptr %pname.0.i, null @@ -345,18 +340,18 @@ if.end55.i: ; preds = %if.end49.i, %if.end ] sw.bb.i: ; preds = %if.end55.i - %15 = load i32, ptr %fld.addr.0.i, align 4 - %cmp56.i = icmp eq i32 %15, -1 + %16 = load i32, ptr %fld.addr.0.i, align 4 + %cmp56.i = icmp eq i32 %16, -1 br i1 %cmp56.i, label %if.then58.i, label %if.end60.i if.then58.i: ; preds = %sw.bb.i %size.i = getelementptr inbounds nuw i8, ptr %it, i64 40 - %16 = load i64, ptr %size.i, align 8 - %conv59.i = trunc i64 %16 to i32 + %17 = load i64, ptr %size.i, align 8 + %conv59.i = trunc i64 %17 to i32 br label %if.end60.i if.end60.i: ; preds = %if.then58.i, %sw.bb.i - %boolval.0.i = phi i32 [ %conv59.i, %if.then58.i ], [ %15, %sw.bb.i ] + %boolval.0.i = phi i32 [ %conv59.i, %if.then58.i ], [ %16, %sw.bb.i ] %switch.selectcmp.i.i = icmp eq i32 %boolval.0.i, 0 %switch.select.i.i = select i1 %switch.selectcmp.i.i, ptr @.str.19, ptr @.str.20 %switch.selectcmp1.i.i = icmp eq i32 %boolval.0.i, -1 @@ -379,8 +374,8 @@ sw.bb66.i: ; preds = %if.end55.i br label %sw.epilog.i sw.bb68.i: ; preds = %if.end55.i - %17 = load ptr, ptr %fld.addr.0.i, align 8 - %call69.i = tail call fastcc i32 @asn1_print_oid_ctx(ptr noundef %out, ptr noundef %17) + %18 = load ptr, ptr %fld.addr.0.i, align 8 + %call69.i = tail call fastcc i32 @asn1_print_oid_ctx(ptr noundef %out, ptr noundef %18) br label %sw.epilog.i sw.bb72.i: ; preds = %if.end55.i, %if.end55.i, %if.end55.i @@ -390,17 +385,17 @@ sw.bb72.i: ; preds = %if.end55.i, %if.end if.end77.i: ; preds = %sw.bb72.i %data.i = getelementptr inbounds nuw i8, ptr %str.0.i, i64 8 - %18 = load ptr, ptr %data.i, align 8 - %19 = load i32, ptr %str.0.i, align 8 - %conv78.i = sext i32 %19 to i64 - %call79.i = tail call i32 @ASN1_parse_dump(ptr noundef %out, ptr noundef %18, i64 noundef %conv78.i, i32 noundef %indent, i32 noundef 0) #7 + %19 = load ptr, ptr %data.i, align 8 + %20 = load i32, ptr %str.0.i, align 8 + %conv78.i = sext i32 %20 to i64 + %call79.i = tail call i32 @ASN1_parse_dump(ptr noundef %out, ptr noundef %19, i64 noundef %conv78.i, i32 noundef %indent, i32 noundef 0) #7 %cmp80.i = icmp slt i32 %call79.i, 1 br i1 %cmp80.i, label %return, label %sw.epilog sw.default.i: ; preds = %if.end55.i %str_flags.i = getelementptr inbounds nuw i8, ptr %pctx, i64 32 - %20 = load i64, ptr %str_flags.i, align 8 - %call84.i = tail call i32 @ASN1_STRING_print_ex(ptr noundef %out, ptr noundef %str.0.i, i64 noundef %20) #7 + %21 = load i64, ptr %str_flags.i, align 8 + %call84.i = tail call i32 @ASN1_STRING_print_ex(ptr noundef %out, ptr noundef %str.0.i, i64 noundef %21) #7 br label %sw.epilog.i sw.epilog.i: ; preds = %sw.default.i, %sw.bb68.i, %sw.bb66.i, %sw.bb64.i, %sw.bb62.i, %if.end60.i @@ -418,10 +413,10 @@ land.lhs.true89.i: ; preds = %sw.epilog.i %cmp91.i = icmp slt i32 %call90.i, 1 br i1 %cmp91.i, label %return, label %sw.epilog -asn1_primitive_print.exit: ; preds = %if.then3.i, %if.then36.i - %retval.0.i = phi i32 [ %call5.i, %if.then3.i ], [ %..i, %if.then36.i ] - %tobool31.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool31.not, label %return, label %sw.epilog +asn1_primitive_print.exit: ; preds = %if.end33.i + %call37.i = tail call i32 @BIO_puts(ptr noundef %out, ptr noundef nonnull @.str.16) #7 + %cmp38.i = icmp slt i32 %call37.i, 1 + br i1 %cmp38.i, label %return, label %sw.epilog sw.bb34: ; preds = %if.end20 %tobool35.not = icmp eq i32 %nohdr, 0 @@ -437,18 +432,18 @@ land.lhs.true36.if.end40_crit_edge: ; preds = %land.lhs.true36 br label %if.end40 if.end40: ; preds = %land.lhs.true36.if.end40_crit_edge, %sw.bb34 - %21 = phi ptr [ %.pre, %land.lhs.true36.if.end40_crit_edge ], [ %0, %sw.bb34 ] - %tobool42.not = icmp eq ptr %21, null + %22 = phi ptr [ %.pre, %land.lhs.true36.if.end40_crit_edge ], [ %0, %sw.bb34 ] + %tobool42.not = icmp eq ptr %22, null br i1 %tobool42.not, label %if.else59, label %land.lhs.true43 land.lhs.true43: ; preds = %if.end40 - %asn1_ex_print = getelementptr inbounds nuw i8, ptr %21, i64 48 - %22 = load ptr, ptr %asn1_ex_print, align 8 - %tobool44.not = icmp eq ptr %22, null + %asn1_ex_print = getelementptr inbounds nuw i8, ptr %22, i64 48 + %23 = load ptr, ptr %asn1_ex_print, align 8 + %tobool44.not = icmp eq ptr %23, null br i1 %tobool44.not, label %if.else59, label %if.then45 if.then45: ; preds = %land.lhs.true43 - %call47 = tail call i32 %22(ptr noundef %out, ptr noundef nonnull %fld, i32 noundef %indent, ptr noundef nonnull @.str.4, ptr noundef %pctx) #7 + %call47 = tail call i32 %23(ptr noundef %out, ptr noundef nonnull %fld, i32 noundef %indent, ptr noundef nonnull @.str.4, ptr noundef %pctx) #7 switch i32 %call47, label %if.end58 [ i32 0, label %return i32 2, label %land.lhs.true53 @@ -479,8 +474,8 @@ sw.bb68: ; preds = %if.end20 lor.lhs.false: ; preds = %sw.bb68 %conv72 = zext nneg i32 %call69 to i64 %tcount = getelementptr inbounds nuw i8, ptr %it, i64 24 - %23 = load i64, ptr %tcount, align 8 - %cmp73.not = icmp sgt i64 %23, %conv72 + %24 = load i64, ptr %tcount, align 8 + %cmp73.not = icmp sgt i64 %24, %conv72 br i1 %cmp73.not, label %if.end81, label %if.then75 if.then75: ; preds = %lor.lhs.false, %sw.bb68 @@ -491,8 +486,8 @@ if.then75: ; preds = %lor.lhs.false, %sw. if.end81: ; preds = %lor.lhs.false %templates82 = getelementptr inbounds nuw i8, ptr %it, i64 16 - %24 = load ptr, ptr %templates82, align 8 - %add.ptr = getelementptr inbounds nuw %struct.ASN1_TEMPLATE_st, ptr %24, i64 %conv72 + %25 = load ptr, ptr %templates82, align 8 + %add.ptr = getelementptr inbounds nuw %struct.ASN1_TEMPLATE_st, ptr %25, i64 %conv72 %call83 = tail call ptr @asn1_get_field_ptr(ptr noundef nonnull %fld, ptr noundef %add.ptr) #7 %call84 = tail call i32 @asn1_template_print_ctx(ptr noundef %out, ptr noundef %call83, i32 noundef %indent, ptr noundef %add.ptr, ptr noundef %pctx) %tobool85.not = icmp eq i32 %call84, 0 @@ -514,8 +509,8 @@ if.end94: ; preds = %land.lhs.true90, %s br i1 %or.cond, label %if.then98, label %if.end115 if.then98: ; preds = %if.end94 - %25 = load i64, ptr %pctx, align 8 - %and100 = and i64 %25, 2 + %26 = load i64, ptr %pctx, align 8 + %and100 = and i64 %26, 2 %tobool101.not = icmp eq i64 %and100, 0 br i1 %tobool101.not, label %if.else108, label %if.then102 @@ -545,19 +540,19 @@ if.then125: ; preds = %if.then117 if.end127: ; preds = %if.then117, %if.end115 %tcount130 = getelementptr inbounds nuw i8, ptr %it, i64 24 - %26 = load i64, ptr %tcount130, align 8 - %cmp131102 = icmp sgt i64 %26, 0 + %27 = load i64, ptr %tcount130, align 8 + %cmp131102 = icmp sgt i64 %27, 0 br i1 %cmp131102, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %if.end127 %templates128 = getelementptr inbounds nuw i8, ptr %it, i64 16 - %27 = load ptr, ptr %templates128, align 8 + %28 = load ptr, ptr %templates128, align 8 %add = add nsw i32 %indent, 2 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.inc ] - %tt.0103 = phi ptr [ %27, %for.body.lr.ph ], [ %incdec.ptr, %for.inc ] + %tt.0103 = phi ptr [ %28, %for.body.lr.ph ], [ %incdec.ptr, %for.inc ] %call133 = call ptr @asn1_do_adb(ptr noundef nonnull %fld, ptr noundef %tt.0103, i32 noundef 1) #7 %tobool134.not = icmp eq ptr %call133, null br i1 %tobool134.not, label %return, label %if.end136 @@ -571,13 +566,13 @@ if.end136: ; preds = %for.body for.inc: ; preds = %if.end136 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %incdec.ptr = getelementptr inbounds nuw i8, ptr %tt.0103, i64 40 - %28 = load i64, ptr %tcount130, align 8 - %cmp131 = icmp sgt i64 %28, %indvars.iv.next + %29 = load i64, ptr %tcount130, align 8 + %cmp131 = icmp sgt i64 %29, %indvars.iv.next br i1 %cmp131, label %for.body, label %for.end, !llvm.loop !7 for.end: ; preds = %for.inc, %if.end127 - %29 = load i64, ptr %pctx, align 8 - %and143 = and i64 %29, 2 + %30 = load i64, ptr %pctx, align 8 + %and143 = and i64 %30, 2 %tobool144.not = icmp eq i64 %and143, 0 br i1 %tobool144.not, label %if.end151, label %if.then145 @@ -599,11 +594,11 @@ sw.default: ; preds = %if.end20 %call162 = tail call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %out, ptr noundef nonnull @.str.13, i32 noundef %conv) #7 br label %return -sw.epilog: ; preds = %land.lhs.true89.i, %sw.epilog.thread.i, %if.end77.i, %if.end151, %if.then153, %if.end81, %land.lhs.true61, %if.else59, %asn1_primitive_print.exit, %if.then22 +sw.epilog: ; preds = %if.then3.i, %land.lhs.true89.i, %sw.epilog.thread.i, %if.end77.i, %if.end151, %if.then153, %if.end81, %land.lhs.true61, %if.else59, %asn1_primitive_print.exit, %if.then22 br label %return -return: ; preds = %if.end136, %for.body, %sw.epilog.thread.i, %if.end77.i, %land.lhs.true89.i, %sw.epilog.i, %sw.bb72.i, %if.end49.i, %if.then44.i, %sw.bb29, %if.then153, %if.then145, %if.then117, %if.else108, %if.then102, %land.lhs.true90, %if.end81, %if.then75, %land.lhs.true61, %land.lhs.true53, %if.then45, %land.lhs.true36, %asn1_primitive_print.exit, %if.then22, %if.end14, %land.lhs.true11, %sw.epilog, %sw.default, %if.then125, %if.end58, %if.end19 - %retval.0 = phi i32 [ 1, %if.end19 ], [ 0, %sw.default ], [ 1, %if.then125 ], [ 1, %sw.epilog ], [ 1, %if.end58 ], [ 0, %land.lhs.true11 ], [ 0, %if.end14 ], [ 0, %if.then22 ], [ 0, %asn1_primitive_print.exit ], [ 0, %land.lhs.true36 ], [ %call47, %if.then45 ], [ 0, %land.lhs.true53 ], [ 0, %land.lhs.true61 ], [ %., %if.then75 ], [ 0, %if.end81 ], [ 0, %land.lhs.true90 ], [ 0, %if.then102 ], [ 0, %if.else108 ], [ %call118, %if.then117 ], [ 0, %if.then145 ], [ 0, %if.then153 ], [ 0, %sw.bb29 ], [ 0, %if.then44.i ], [ 0, %if.end49.i ], [ 0, %sw.bb72.i ], [ 0, %sw.epilog.i ], [ 0, %land.lhs.true89.i ], [ 0, %if.end77.i ], [ 0, %sw.epilog.thread.i ], [ 0, %for.body ], [ 0, %if.end136 ] +return: ; preds = %if.end136, %for.body, %if.then3.i, %sw.epilog.thread.i, %if.end77.i, %land.lhs.true89.i, %sw.epilog.i, %sw.bb72.i, %if.end49.i, %if.then44.i, %sw.bb29, %if.then153, %if.then145, %if.then117, %if.else108, %if.then102, %land.lhs.true90, %if.end81, %if.then75, %land.lhs.true61, %land.lhs.true53, %if.then45, %land.lhs.true36, %asn1_primitive_print.exit, %if.then22, %if.end14, %land.lhs.true11, %sw.epilog, %sw.default, %if.then125, %if.end58, %if.end19 + %retval.0 = phi i32 [ 1, %if.end19 ], [ 0, %sw.default ], [ 1, %if.then125 ], [ 1, %sw.epilog ], [ 1, %if.end58 ], [ 0, %land.lhs.true11 ], [ 0, %if.end14 ], [ 0, %if.then22 ], [ 0, %asn1_primitive_print.exit ], [ 0, %land.lhs.true36 ], [ %call47, %if.then45 ], [ 0, %land.lhs.true53 ], [ 0, %land.lhs.true61 ], [ %., %if.then75 ], [ 0, %if.end81 ], [ 0, %land.lhs.true90 ], [ 0, %if.then102 ], [ 0, %if.else108 ], [ %call118, %if.then117 ], [ 0, %if.then145 ], [ 0, %if.then153 ], [ 0, %sw.bb29 ], [ 0, %if.then44.i ], [ 0, %if.end49.i ], [ 0, %sw.bb72.i ], [ 0, %sw.epilog.i ], [ 0, %land.lhs.true89.i ], [ 0, %if.end77.i ], [ 0, %sw.epilog.thread.i ], [ 0, %if.then3.i ], [ 0, %for.body ], [ 0, %if.end136 ] ret i32 %retval.0 } diff --git a/bench/libwebp/optimized/quant_enc.c.ll b/bench/libwebp/optimized/quant_enc.c.ll index b40ab4c52e9..a4db6cd6a29 100644 --- a/bench/libwebp/optimized/quant_enc.c.ll +++ b/bench/libwebp/optimized/quant_enc.c.ll @@ -1902,9 +1902,9 @@ SimpleQuantize.exit: ; preds = %ReconstructIntra4.e %592 = getelementptr inbounds nuw i8, ptr %0, i64 48 %593 = load ptr, ptr %592, align 8, !alias.scope !106, !noalias !109 %594 = load i8, ptr %593, align 4, !noalias !111 - br i1 %590, label %605, label %.thread199.i + br i1 %590, label %605, label %.thread197.i -.thread199.i: ; preds = %589 +.thread197.i: ; preds = %589 %595 = load ptr, ptr %13, align 8, !alias.scope !106, !noalias !109 %596 = lshr i8 %594, 5 %597 = and i8 %596, 3 @@ -1925,15 +1925,15 @@ SimpleQuantize.exit: ; preds = %ReconstructIntra4.e %609 = lshr i8 %594, 5 %610 = and i8 %609, 3 %611 = zext nneg i8 %610 to i64 - %.idx198.i = mul nuw nsw i64 %611, 744 + %.idx196.i = mul nuw nsw i64 %611, 744 %612 = getelementptr i8, ptr %608, i64 1344 - %613 = getelementptr i8, ptr %612, i64 %.idx198.i + %613 = getelementptr i8, ptr %612, i64 %.idx196.i %614 = load i64, ptr %613, align 8, !noalias !111 br i1 %607, label %615, label %.thread.i -615: ; preds = %605, %.thread199.i - %616 = phi i64 [ %604, %.thread199.i ], [ 36028797018963967, %605 ] - %617 = phi i64 [ %601, %.thread199.i ], [ %614, %605 ] +615: ; preds = %605, %.thread197.i + %616 = phi i64 [ %604, %.thread197.i ], [ 36028797018963967, %605 ] + %617 = phi i64 [ %601, %.thread197.i ], [ %614, %605 ] %618 = getelementptr inbounds nuw i8, ptr %0, i64 8 %619 = load ptr, ptr %618, align 8, !alias.scope !106, !noalias !109 %620 = load ptr, ptr %32, align 8, !alias.scope !106, !noalias !109 @@ -1941,8 +1941,8 @@ SimpleQuantize.exit: ; preds = %ReconstructIntra4.e 621: ; preds = %621, %615 %indvars.iv.i64 = phi i64 [ 0, %615 ], [ %indvars.iv.next.i65, %621 ] - %.1107177.i = phi i64 [ 36028797018963967, %615 ], [ %.2.i, %621 ] - %.0122175.i = phi i32 [ -1, %615 ], [ %.1123.i, %621 ] + %.1107175.i = phi i64 [ 36028797018963967, %615 ], [ %.2.i, %621 ] + %.0122173.i = phi i32 [ -1, %615 ], [ %.1123.i, %621 ] %622 = getelementptr inbounds nuw [4 x i16], ptr @VP8I16ModeOffsets, i64 0, i64 %indvars.iv.i64 %623 = load i16, ptr %622, align 2, !noalias !111 %624 = zext i16 %623 to i64 @@ -1958,12 +1958,12 @@ SimpleQuantize.exit: ; preds = %ReconstructIntra4.e %634 = add nsw i64 %633, %629 %.not139.i = icmp eq i64 %indvars.iv.i64, 0 %635 = icmp sge i64 %616, %632 - %or.cond141.not172.i = select i1 %.not139.i, i1 true, i1 %635 - %636 = icmp slt i64 %634, %.1107177.i - %or.cond142.i = select i1 %or.cond141.not172.i, i1 %636, i1 false + %or.cond141.not170.i = select i1 %.not139.i, i1 true, i1 %635 + %636 = icmp slt i64 %634, %.1107175.i + %or.cond142.i = select i1 %or.cond141.not170.i, i1 %636, i1 false %637 = trunc nuw nsw i64 %indvars.iv.i64 to i32 - %.1123.i = select i1 %or.cond142.i, i32 %637, i32 %.0122175.i - %.2.i = select i1 %or.cond142.i, i64 %634, i64 %.1107177.i + %.1123.i = select i1 %or.cond142.i, i32 %637, i32 %.0122173.i + %.2.i = select i1 %or.cond142.i, i64 %634, i64 %.1107175.i %indvars.iv.next.i65 = add nuw nsw i64 %indvars.iv.i64, 1 %exitcond.not.i66 = icmp eq i64 %indvars.iv.next.i65, 4 br i1 %exitcond.not.i66, label %638, label %621, !llvm.loop !112 @@ -2015,21 +2015,21 @@ SimpleQuantize.exit: ; preds = %ReconstructIntra4.e %656 = getelementptr inbounds nuw i8, ptr %.0816.i.i80, i64 32 %657 = add nuw nsw i32 %.017.i.i79, 1 %exitcond.not.i.i89 = icmp eq i32 %657, 16 - br i1 %exitcond.not.i.i89, label %.thread200.i, label %648, !llvm.loop !22 + br i1 %exitcond.not.i.i89, label %.thread198.i, label %648, !llvm.loop !22 IsFlatSource16.exit.thread.i: ; preds = %653, %651, %649, %648 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !111 br label %659 -.thread200.i: ; preds = %655 +.thread198.i: ; preds = %655 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !111 %658 = select i1 %640, i32 0, i32 2 tail call void @VP8SetIntra16Mode(ptr noundef nonnull %0, i32 noundef %658) #11, !noalias !109 - br label %.thread164.i + br label %.thread163.i 659: ; preds = %IsFlatSource16.exit.thread.i, %641 tail call void @VP8SetIntra16Mode(ptr noundef nonnull %0, i32 noundef %.1123.i) #11, !noalias !109 - br i1 %590, label %.thread164.i, label %.thread.i + br i1 %590, label %.thread163.i, label %.thread.i .thread.i: ; preds = %659, %605 %660 = phi i64 [ %616, %659 ], [ 36028797018963967, %605 ] @@ -2072,11 +2072,11 @@ IsFlatSource16.exit.thread.i: ; preds = %653, %651, %649, %6 %686 = ashr exact i32 %674, 2 %687 = load ptr, ptr %666, align 8, !alias.scope !116, !noalias !109 %688 = mul nsw i32 %682, %686 - %.pre196.i = sext i32 %688 to i64 + %.pre194.i = sext i32 %688 to i64 br label %689 689: ; preds = %685, %672 - %.pre-phi.i68 = phi i64 [ %.pre196.i, %685 ], [ %675, %672 ] + %.pre-phi.i68 = phi i64 [ %.pre194.i, %685 ], [ %675, %672 ] %.sink.i.i69 = phi ptr [ %687, %685 ], [ %664, %672 ] %690 = getelementptr i8, ptr %.sink.i.i69, i64 %.pre-phi.i68 %.in.in.i.i70 = getelementptr i8, ptr %690, i64 -1 @@ -2108,30 +2108,30 @@ GetCostModeI4.exit.i73: ; preds = %697, %692 br label %702 702: ; preds = %702, %GetCostModeI4.exit.i73 - %indvars.iv187.i = phi i64 [ 0, %GetCostModeI4.exit.i73 ], [ %indvars.iv.next188.i, %702 ] - %.0125179.i = phi i64 [ 36028797018963967, %GetCostModeI4.exit.i73 ], [ %spec.select143.i, %702 ] - %.0127178.i = phi i32 [ -1, %GetCostModeI4.exit.i73 ], [ %spec.select.i, %702 ] + %indvars.iv185.i = phi i64 [ 0, %GetCostModeI4.exit.i73 ], [ %indvars.iv.next186.i, %702 ] + %.0125177.i = phi i64 [ 36028797018963967, %GetCostModeI4.exit.i73 ], [ %spec.select143.i, %702 ] + %.0127176.i = phi i32 [ -1, %GetCostModeI4.exit.i73 ], [ %spec.select.i, %702 ] %703 = load ptr, ptr %32, align 8, !alias.scope !106, !noalias !109 - %704 = getelementptr inbounds nuw [10 x i16], ptr @VP8I4ModeOffsets, i64 0, i64 %indvars.iv187.i + %704 = getelementptr inbounds nuw [10 x i16], ptr @VP8I4ModeOffsets, i64 0, i64 %indvars.iv185.i %705 = load i16, ptr %704, align 2, !noalias !111 %706 = zext i16 %705 to i64 %707 = getelementptr inbounds nuw i8, ptr %703, i64 %706 %708 = load ptr, ptr @VP8SSE4x4, align 8, !noalias !111 %709 = call i32 %708(ptr noundef %679, ptr noundef %707) #11 %710 = shl nsw i32 %709, 8 - %711 = getelementptr inbounds nuw i16, ptr %700, i64 %indvars.iv187.i + %711 = getelementptr inbounds nuw i16, ptr %700, i64 %indvars.iv185.i %712 = load i16, ptr %711, align 2, !noalias !111 %713 = zext i16 %712 to i32 %714 = mul nuw nsw i32 %713, 11 %715 = add nsw i32 %714, %710 %716 = sext i32 %715 to i64 - %717 = icmp sgt i64 %.0125179.i, %716 - %718 = trunc nuw nsw i64 %indvars.iv187.i to i32 - %spec.select.i = select i1 %717, i32 %718, i32 %.0127178.i - %spec.select143.i = call i64 @llvm.smin.i64(i64 %.0125179.i, i64 %716) - %indvars.iv.next188.i = add nuw nsw i64 %indvars.iv187.i, 1 - %exitcond190.not.i = icmp eq i64 %indvars.iv.next188.i, 10 - br i1 %exitcond190.not.i, label %719, label %702, !llvm.loop !117 + %717 = icmp sgt i64 %.0125177.i, %716 + %718 = trunc nuw nsw i64 %indvars.iv185.i to i32 + %spec.select.i = select i1 %717, i32 %718, i32 %.0127176.i + %spec.select143.i = call i64 @llvm.smin.i64(i64 %.0125177.i, i64 %716) + %indvars.iv.next186.i = add nuw nsw i64 %indvars.iv185.i, 1 + %exitcond188.not.i = icmp eq i64 %indvars.iv.next186.i, 10 + br i1 %exitcond188.not.i, label %719, label %702, !llvm.loop !117 719: ; preds = %702 %720 = sext i32 %spec.select.i to i64 @@ -2148,7 +2148,7 @@ GetCostModeI4.exit.i73: ; preds = %697, %692 %.not135.i = icmp sge i64 %729, %.0106154.i %730 = icmp sgt i64 %724, %660 %or.cond144.i = select i1 %.not135.i, i1 true, i1 %730 - br i1 %or.cond144.i, label %.thread164.i, label %731 + br i1 %or.cond144.i, label %.thread163.i, label %731 731: ; preds = %719 %732 = load ptr, ptr %667, align 8, !alias.scope !106, !noalias !109 @@ -2220,8 +2220,8 @@ ReconstructIntra4.exit.i77: ; preds = %766, %753 store ptr %776, ptr %667, align 8, !alias.scope !106, !noalias !109 br label %785 -.thread164.i: ; preds = %719, %659, %.thread200.i - %.0106155170.i = phi i64 [ %.2.i, %.thread200.i ], [ %.2.i, %659 ], [ %.0106154.i, %719 ] +.thread163.i: ; preds = %719, %659, %.thread198.i + %.0106155168.i = phi i64 [ %.2.i, %659 ], [ %.2.i, %.thread198.i ], [ %.0106154.i, %719 ] %778 = getelementptr inbounds nuw i8, ptr %0, i64 16 %779 = load ptr, ptr %778, align 8, !alias.scope !106, !noalias !109 %780 = getelementptr inbounds nuw i8, ptr %0, i64 64 @@ -2231,9 +2231,9 @@ ReconstructIntra4.exit.i77: ; preds = %766, %753 %784 = call fastcc i32 @ReconstructIntra16(ptr noundef %0, ptr noundef %1, ptr noundef %779, i32 noundef %783) br label %785 -785: ; preds = %.thread164.i, %.thread156.i - %.2110.i = phi i32 [ %784, %.thread164.i ], [ %772, %.thread156.i ] - %.3.i = phi i64 [ %.0106155170.i, %.thread164.i ], [ %729, %.thread156.i ] +785: ; preds = %.thread163.i, %.thread156.i + %.2110.i = phi i32 [ %784, %.thread163.i ], [ %772, %.thread156.i ] + %.3.i = phi i64 [ %.0106155168.i, %.thread163.i ], [ %729, %.thread156.i ] br i1 %591, label %RefineUsingDistortion.exit, label %786 786: ; preds = %785 @@ -2243,30 +2243,30 @@ ReconstructIntra4.exit.i77: ; preds = %766, %753 br label %790 790: ; preds = %790, %786 - %indvars.iv191.i = phi i64 [ 0, %786 ], [ %indvars.iv.next192.i, %790 ] - %.0111183.i = phi i64 [ 36028797018963967, %786 ], [ %spec.select146.i, %790 ] - %.0113182.i = phi i32 [ -1, %786 ], [ %spec.select145.i, %790 ] + %indvars.iv189.i = phi i64 [ 0, %786 ], [ %indvars.iv.next190.i, %790 ] + %.0111181.i = phi i64 [ 36028797018963967, %786 ], [ %spec.select146.i, %790 ] + %.0113180.i = phi i32 [ -1, %786 ], [ %spec.select145.i, %790 ] %791 = load ptr, ptr %32, align 8, !alias.scope !106, !noalias !109 - %792 = getelementptr inbounds nuw [4 x i16], ptr @VP8UVModeOffsets, i64 0, i64 %indvars.iv191.i + %792 = getelementptr inbounds nuw [4 x i16], ptr @VP8UVModeOffsets, i64 0, i64 %indvars.iv189.i %793 = load i16, ptr %792, align 2, !noalias !111 %794 = zext i16 %793 to i64 %795 = getelementptr inbounds nuw i8, ptr %791, i64 %794 %796 = load ptr, ptr @VP8SSE16x8, align 8, !noalias !111 %797 = call i32 %796(ptr noundef nonnull %789, ptr noundef %795) #11 %798 = shl nsw i32 %797, 8 - %799 = getelementptr inbounds nuw [4 x i16], ptr @VP8FixedCostsUV, i64 0, i64 %indvars.iv191.i + %799 = getelementptr inbounds nuw [4 x i16], ptr @VP8FixedCostsUV, i64 0, i64 %indvars.iv189.i %800 = load i16, ptr %799, align 2, !noalias !111 %801 = zext i16 %800 to i32 %802 = mul nuw nsw i32 %801, 120 %803 = add nsw i32 %802, %798 %804 = sext i32 %803 to i64 - %805 = icmp sgt i64 %.0111183.i, %804 - %806 = trunc nuw nsw i64 %indvars.iv191.i to i32 - %spec.select145.i = select i1 %805, i32 %806, i32 %.0113182.i - %spec.select146.i = call i64 @llvm.smin.i64(i64 %.0111183.i, i64 %804) - %indvars.iv.next192.i = add nuw nsw i64 %indvars.iv191.i, 1 - %exitcond194.not.i = icmp eq i64 %indvars.iv.next192.i, 4 - br i1 %exitcond194.not.i, label %807, label %790, !llvm.loop !129 + %805 = icmp sgt i64 %.0111181.i, %804 + %806 = trunc nuw nsw i64 %indvars.iv189.i to i32 + %spec.select145.i = select i1 %805, i32 %806, i32 %.0113180.i + %spec.select146.i = call i64 @llvm.smin.i64(i64 %.0111181.i, i64 %804) + %indvars.iv.next190.i = add nuw nsw i64 %indvars.iv189.i, 1 + %exitcond192.not.i = icmp eq i64 %indvars.iv.next190.i, 4 + br i1 %exitcond192.not.i, label %807, label %790, !llvm.loop !129 807: ; preds = %790 call void @VP8SetIntraUVMode(ptr noundef nonnull %0, i32 noundef %spec.select145.i) #11 diff --git a/bench/linux/optimized/device_pm.ll b/bench/linux/optimized/device_pm.ll index 8a4ac98d032..e2b8390fe85 100644 --- a/bench/linux/optimized/device_pm.ll +++ b/bench/linux/optimized/device_pm.ll @@ -1217,7 +1217,7 @@ define internal fastcc noundef range(i32 -61, 1) i32 @acpi_dev_pm_get_state(ptr call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6 store i64 0, ptr %7, align 8, !annotation !5 %16 = icmp ne i32 %2, 0 - br i1 %16, label %17, label %57 + br i1 %16, label %17, label %51 17: ; preds = %5 %18 = call i32 @acpi_evaluate_integer(ptr noundef %15, ptr noundef nonnull %6, ptr noundef null, ptr noundef nonnull %7) #6 @@ -1227,7 +1227,7 @@ define internal fastcc noundef range(i32 -61, 1) i32 @acpi_dev_pm_get_state(ptr %22 = load i64, ptr %7, align 8 %23 = icmp ugt i64 %22, 4 %24 = select i1 %21, i1 true, i1 %23 - br i1 %24, label %107, label %25 + br i1 %24, label %101, label %25 25: ; preds = %17 %26 = getelementptr inbounds nuw i8, ptr %1, i64 248 @@ -1239,7 +1239,7 @@ define internal fastcc noundef range(i32 -61, 1) i32 @acpi_dev_pm_get_state(ptr 31: ; preds = %25 %32 = icmp eq i64 %22, 3 - br i1 %32, label %33, label %107 + br i1 %32, label %33, label %101 33: ; preds = %31 store i64 4, ptr %7, align 8 @@ -1266,103 +1266,96 @@ define internal fastcc noundef range(i32 -61, 1) i32 @acpi_dev_pm_get_state(ptr %48 = load i8, ptr %47, align 8 %49 = and i8 %48, 1 %50 = icmp eq i8 %49, 0 - br i1 %50, label %.thread, label %51 - -51: ; preds = %46 - %52 = getelementptr inbounds nuw i8, ptr %1, i64 432 - %53 = load i64, ptr %52, align 8 - %54 = zext i32 %2 to i64 - %55 = icmp uge i64 %53, %54 - %56 = zext i1 %55 to i8 - br label %74 - -57: ; preds = %5 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 220 - %59 = load i16, ptr %58, align 4 - %60 = and i16 %59, 1 - %61 = icmp eq i16 %60, 0 - br i1 %61, label %70, label %62 - -62: ; preds = %57 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 280 - %64 = load ptr, ptr %63, align 8 - %65 = icmp eq ptr %64, null - br i1 %65, label %70, label %66 - -66: ; preds = %62 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 424 - %68 = load ptr, ptr %67, align 8 - %69 = icmp eq ptr %68, null - br i1 %69, label %70, label %.thread6 - -70: ; preds = %66, %62, %57 - %71 = getelementptr inbounds nuw i8, ptr %1, i64 456 - %72 = load i8, ptr %71, align 8 - %73 = and i8 %72, 1 - br label %74 - -74: ; preds = %70, %51 - %75 = phi i32 [ 0, %70 ], [ %37, %51 ] - %76 = phi i8 [ %73, %70 ], [ %56, %51 ] - %77 = phi i1 [ false, %70 ], [ %36, %51 ] - %78 = icmp eq i8 %76, 0 - br i1 %78, label %.thread, label %.thread6 - -.thread6: ; preds = %66, %74 - %79 = phi i1 [ %77, %74 ], [ false, %66 ] - %80 = phi i32 [ %75, %74 ], [ 0, %66 ] + br i1 %50, label %.thread, label %69 + +51: ; preds = %5 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 220 + %53 = load i16, ptr %52, align 4 + %54 = and i16 %53, 1 + %55 = icmp eq i16 %54, 0 + br i1 %55, label %64, label %56 + +56: ; preds = %51 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 280 + %58 = load ptr, ptr %57, align 8 + %59 = icmp eq ptr %58, null + br i1 %59, label %64, label %60 + +60: ; preds = %56 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 424 + %62 = load ptr, ptr %61, align 8 + %63 = icmp eq ptr %62, null + br i1 %63, label %64, label %.thread6 + +64: ; preds = %60, %56, %51 + %65 = getelementptr inbounds nuw i8, ptr %1, i64 456 + %66 = load i8, ptr %65, align 8 + %67 = and i8 %66, 1 + %68 = icmp eq i8 %67, 0 + br i1 %68, label %.thread, label %.thread6 + +69: ; preds = %46 + %70 = getelementptr inbounds nuw i8, ptr %1, i64 432 + %71 = load i64, ptr %70, align 8 + %72 = zext i32 %2 to i64 + %.not = icmp ult i64 %71, %72 + br i1 %.not, label %.thread, label %.thread6 + +.thread6: ; preds = %60, %64, %69 + %73 = phi i1 [ %36, %69 ], [ false, %64 ], [ false, %60 ] + %74 = phi i32 [ %37, %69 ], [ 0, %64 ], [ 0, %60 ] store i8 87, ptr %12, align 1 - %81 = call i32 @acpi_evaluate_integer(ptr noundef %15, ptr noundef nonnull %6, ptr noundef null, ptr noundef nonnull %7) #6 - %82 = icmp eq i32 %81, 5 - br i1 %82, label %83, label %86 + %75 = call i32 @acpi_evaluate_integer(ptr noundef %15, ptr noundef nonnull %6, ptr noundef null, ptr noundef nonnull %7) #6 + %76 = icmp eq i32 %75, 5 + br i1 %76, label %77, label %80 -83: ; preds = %.thread6 - %84 = and i1 %16, %79 - %85 = select i1 %84, i32 %80, i32 4 +77: ; preds = %.thread6 + %78 = and i1 %16, %73 + %79 = select i1 %78, i32 %74, i32 4 br label %.thread -86: ; preds = %.thread6 - %87 = icmp eq i32 %81, 0 - %88 = load i64, ptr %7, align 8 - %89 = icmp ult i64 %88, 5 - %90 = select i1 %87, i1 %89, i1 false - br i1 %90, label %91, label %107 - -91: ; preds = %86 - %92 = getelementptr inbounds nuw i8, ptr %1, i64 248 - %93 = getelementptr [5 x %struct.acpi_device_power_state], ptr %92, i64 0, i64 %88 - %94 = load i8, ptr %93, align 8 - %95 = and i8 %94, 1 - %96 = icmp eq i8 %95, 0 - %spec.select = select i1 %96, i64 4, i64 %88 - %97 = zext nneg i32 %80 to i64 - %98 = call i64 @llvm.umax.i64(i64 %spec.select, i64 %97) - %99 = trunc nuw i64 %98 to i32 +80: ; preds = %.thread6 + %81 = icmp eq i32 %75, 0 + %82 = load i64, ptr %7, align 8 + %83 = icmp ult i64 %82, 5 + %84 = select i1 %81, i1 %83, i1 false + br i1 %84, label %85, label %101 + +85: ; preds = %80 + %86 = getelementptr inbounds nuw i8, ptr %1, i64 248 + %87 = getelementptr [5 x %struct.acpi_device_power_state], ptr %86, i64 0, i64 %82 + %88 = load i8, ptr %87, align 8 + %89 = and i8 %88, 1 + %90 = icmp eq i8 %89, 0 + %spec.select = select i1 %90, i64 4, i64 %82 + %91 = zext nneg i32 %74 to i64 + %92 = call i64 @llvm.umax.i64(i64 %spec.select, i64 %91) + %93 = trunc nuw i64 %92 to i32 br label %.thread -.thread: ; preds = %34, %42, %46, %91, %83, %74 - %100 = phi i32 [ %80, %91 ], [ %75, %74 ], [ %80, %83 ], [ %37, %46 ], [ %37, %42 ], [ %37, %34 ] - %101 = phi i32 [ %99, %91 ], [ 4, %74 ], [ %85, %83 ], [ 4, %46 ], [ 4, %42 ], [ 4, %34 ] - %102 = icmp eq ptr %3, null - br i1 %102, label %104, label %103 +.thread: ; preds = %34, %42, %46, %64, %85, %77, %69 + %94 = phi i32 [ %74, %85 ], [ %37, %69 ], [ %74, %77 ], [ 0, %64 ], [ %37, %46 ], [ %37, %42 ], [ %37, %34 ] + %95 = phi i32 [ %93, %85 ], [ 4, %69 ], [ %79, %77 ], [ 4, %64 ], [ 4, %46 ], [ 4, %42 ], [ 4, %34 ] + %96 = icmp eq ptr %3, null + br i1 %96, label %98, label %97 -103: ; preds = %.thread - store i32 %100, ptr %3, align 4 - br label %104 +97: ; preds = %.thread + store i32 %94, ptr %3, align 4 + br label %98 -104: ; preds = %103, %.thread - %105 = icmp eq ptr %4, null - br i1 %105, label %107, label %106 +98: ; preds = %97, %.thread + %99 = icmp eq ptr %4, null + br i1 %99, label %101, label %100 -106: ; preds = %104 - store i32 %101, ptr %4, align 4 - br label %107 +100: ; preds = %98 + store i32 %95, ptr %4, align 4 + br label %101 -107: ; preds = %106, %104, %86, %31, %17 - %108 = phi i32 [ -61, %17 ], [ -61, %31 ], [ -61, %86 ], [ 0, %106 ], [ 0, %104 ] +101: ; preds = %100, %98, %80, %31, %17 + %102 = phi i32 [ -61, %17 ], [ -61, %31 ], [ -61, %80 ], [ 0, %100 ], [ 0, %98 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %6) #6 - ret i32 %108 + ret i32 %102 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/relay.ll b/bench/linux/optimized/relay.ll index 663be1120a0..cbf9c7cb21f 100644 --- a/bench/linux/optimized/relay.ll +++ b/bench/linux/optimized/relay.ll @@ -1114,7 +1114,7 @@ define dso_local noundef i64 @relay_switch_subbuf(ptr noundef %0, i64 noundef %1 %5 = getelementptr inbounds nuw i8, ptr %4, i64 8 %6 = load i64, ptr %5, align 8 %7 = icmp ult i64 %6, %1 - br i1 %7, label %100, label %8, !prof !13 + br i1 %7, label %96, label %8, !prof !13 8: ; preds = %2 %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1198,59 +1198,58 @@ define dso_local noundef i64 @relay_switch_subbuf(ptr noundef %0, i64 noundef %1 %68 = load ptr, ptr %67, align 8 %69 = load ptr, ptr %68, align 8 %70 = icmp eq ptr %69, null - br i1 %70, label %71, label %78 + br i1 %70, label %76, label %71 71: ; preds = %53 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %73 = load i64, ptr %72, align 32 - %74 = sub i64 %57, %73 - %75 = load i64, ptr %59, align 8 - %76 = icmp ult i64 %74, %75 - %77 = zext i1 %76 to i32 - br label %82 - -78: ; preds = %53 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %80 = load i64, ptr %79, align 16 - %81 = tail call i32 %69(ptr noundef %0, ptr noundef %66, ptr noundef %55, i64 noundef %80) #15 - br label %82 - -82: ; preds = %78, %71 - %83 = phi i32 [ %81, %78 ], [ %77, %71 ] - %84 = icmp eq i32 %83, 0 - br i1 %84, label %85, label %90 - -85: ; preds = %82 - %86 = load ptr, ptr %3, align 8 - %87 = getelementptr inbounds nuw i8, ptr %86, i64 8 - %88 = load i64, ptr %87, align 8 - %89 = add i64 %88, 1 - store i64 %89, ptr %9, align 16 - br label %103 - -90: ; preds = %82 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %73 = load i64, ptr %72, align 16 + %74 = tail call i32 %69(ptr noundef %0, ptr noundef %66, ptr noundef %55, i64 noundef %73) #15 + %75 = icmp eq i32 %74, 0 + br i1 %75, label %._crit_edge, label %86 + +._crit_edge: ; preds = %71 + %.pre = load ptr, ptr %3, align 8 + br label %81 + +76: ; preds = %53 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %78 = load i64, ptr %77, align 32 + %79 = sub i64 %57, %78 + %80 = load i64, ptr %59, align 8 + %.not = icmp ult i64 %79, %80 + br i1 %.not, label %86, label %81 + +81: ; preds = %._crit_edge, %76 + %82 = phi ptr [ %.pre, %._crit_edge ], [ %58, %76 ] + %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 + %84 = load i64, ptr %83, align 8 + %85 = add i64 %84, 1 + store i64 %85, ptr %9, align 16 + br label %99 + +86: ; preds = %71, %76 store ptr %66, ptr %54, align 8 - %91 = getelementptr inbounds nuw i8, ptr %0, i64 136 - %92 = load ptr, ptr %91, align 8 - %93 = getelementptr i64, ptr %92, i64 %61 - store i64 0, ptr %93, align 8 - %94 = load i64, ptr %9, align 16 - %95 = add i64 %94, %1 - %96 = load ptr, ptr %3, align 8 - %97 = getelementptr inbounds nuw i8, ptr %96, i64 8 - %98 = load i64, ptr %97, align 8 - %99 = icmp ugt i64 %95, %98 - br i1 %99, label %100, label %103, !prof !13 - -100: ; preds = %90, %2 - %101 = phi ptr [ %96, %90 ], [ %4, %2 ] - %102 = getelementptr inbounds nuw i8, ptr %101, i64 56 - store i64 %1, ptr %102, align 8 - br label %103 - -103: ; preds = %100, %90, %85 - %104 = phi i64 [ 0, %100 ], [ 0, %85 ], [ %1, %90 ] - ret i64 %104 + %87 = getelementptr inbounds nuw i8, ptr %0, i64 136 + %88 = load ptr, ptr %87, align 8 + %89 = getelementptr i64, ptr %88, i64 %61 + store i64 0, ptr %89, align 8 + %90 = load i64, ptr %9, align 16 + %91 = add i64 %90, %1 + %92 = load ptr, ptr %3, align 8 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 8 + %94 = load i64, ptr %93, align 8 + %95 = icmp ugt i64 %91, %94 + br i1 %95, label %96, label %99, !prof !13 + +96: ; preds = %86, %2 + %97 = phi ptr [ %92, %86 ], [ %4, %2 ] + %98 = getelementptr inbounds nuw i8, ptr %97, i64 56 + store i64 %1, ptr %98, align 8 + br label %99 + +99: ; preds = %96, %86, %81 + %100 = phi i64 [ 0, %96 ], [ 0, %81 ], [ %1, %86 ] + ret i64 %100 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/sit.ll b/bench/linux/optimized/sit.ll index f4e4ea8fcdd..6710b9ca3ce 100644 --- a/bench/linux/optimized/sit.ll +++ b/bench/linux/optimized/sit.ll @@ -4438,12 +4438,12 @@ define internal i32 @ipip_rcv(ptr noundef %0) #4 align 16 { %23 = load i32, ptr %22, align 4 %24 = tail call fastcc ptr @ipip6_tunnel_lookup(ptr noundef %19, ptr noundef %3, i32 noundef %21, i32 noundef %23, i32 noundef %11) %25 = icmp eq ptr %24, null - br i1 %25, label %107, label %26 + br i1 %25, label %103, label %26 26: ; preds = %10 %27 = getelementptr inbounds nuw i8, ptr %24, i64 129 %28 = load i8, ptr %27, align 1 - switch i8 %28, label %.thread11 [ + switch i8 %28, label %102 [ i8 4, label %29 i8 0, label %29 ] @@ -4455,8 +4455,8 @@ define internal i32 @ipip_rcv(ptr noundef %0) #4 align 16 { %33 = getelementptr inbounds nuw i8, ptr %0, i64 127 %34 = load i8, ptr %33, align 1 %35 = and i8 %34, 1 - %.not = icmp eq i8 %35, 0 - br i1 %.not, label %75, label %36 + %.not11 = icmp eq i8 %35, 0 + br i1 %.not11, label %76, label %36 36: ; preds = %29 %37 = getelementptr inbounds nuw i8, ptr %0, i64 216 @@ -4467,18 +4467,18 @@ define internal i32 @ipip_rcv(ptr noundef %0) #4 align 16 { %42 = shl nuw nsw i64 %41, 3 %43 = getelementptr i8, ptr %38, i64 %42 %44 = icmp eq ptr %43, null - br i1 %44, label %.thread6, label %45 + br i1 %44, label %.thread8, label %45 45: ; preds = %36 %46 = getelementptr inbounds nuw i8, ptr %43, i64 4 %47 = load i32, ptr %46, align 4 %48 = icmp eq i32 %47, 0 - br i1 %48, label %.thread6, label %49 + br i1 %48, label %.thread8, label %49 49: ; preds = %45 %50 = load i32, ptr %43, align 8 %51 = icmp eq i32 %50, %47 - br i1 %51, label %52, label %.thread6 + br i1 %51, label %52, label %.thread8 52: ; preds = %49 %53 = getelementptr inbounds nuw i8, ptr %43, i64 64 @@ -4486,7 +4486,7 @@ define internal i32 @ipip_rcv(ptr noundef %0) #4 align 16 { %55 = sext i32 %54 to i64 %56 = getelementptr [1 x %struct.xfrm_offload], ptr %53, i64 0, i64 %55 %57 = icmp eq ptr %56, null - br i1 %57, label %.thread6, label %58 + br i1 %57, label %.thread8, label %58 58: ; preds = %52 %59 = getelementptr inbounds nuw i8, ptr %43, i64 16 @@ -4496,78 +4496,73 @@ define internal i32 @ipip_rcv(ptr noundef %0) #4 align 16 { %63 = load i8, ptr %62, align 8 %64 = and i8 %63, 12 %65 = icmp eq i8 %64, 8 - br i1 %65, label %66, label %.thread6 + br i1 %65, label %66, label %.thread8 66: ; preds = %58 %67 = getelementptr inbounds nuw i8, ptr %56, i64 8 %68 = load i32, ptr %67, align 4 %69 = and i32 %68, 2 %70 = icmp eq i32 %69, 0 - br i1 %70, label %.thread11, label %71 + br i1 %70, label %102, label %71 71: ; preds = %66 %72 = getelementptr inbounds nuw i8, ptr %56, i64 12 %73 = load i32, ptr %72, align 4 %74 = and i32 %73, 1 - br label %90 + %75 = icmp eq i32 %74, 0 + br i1 %75, label %102, label %.critedge5 -75: ; preds = %29 - %76 = getelementptr inbounds nuw i8, ptr %32, i64 2816 - %77 = load i32, ptr %76, align 4 - %.not14 = icmp eq i32 %77, 0 - br i1 %.not14, label %78, label %.thread6 - -78: ; preds = %75 - %79 = getelementptr inbounds nuw i8, ptr %32, i64 2968 - %80 = load i8, ptr %79, align 1 - %81 = icmp eq i8 %80, 2 - br i1 %81, label %.thread10, label %.thread6 - -.thread6: ; preds = %36, %45, %49, %52, %58, %78, %75 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 60 - %83 = load i16, ptr %82, align 4 - %84 = and i16 %83, 256 - %85 = icmp eq i16 %84, 0 - br i1 %85, label %86, label %.thread10 - -86: ; preds = %.thread6 - %87 = tail call i32 @__xfrm_policy_check(ptr noundef null, i32 noundef 0, ptr noundef %0, i16 noundef zeroext 2) #18 - %88 = icmp ne i32 %87, 0 - %89 = zext i1 %88 to i32 - br label %90 - -90: ; preds = %86, %71 - %91 = phi i32 [ %74, %71 ], [ %89, %86 ] - %92 = icmp eq i32 %91, 0 - br i1 %92, label %.thread11, label %.thread10 - -.thread10: ; preds = %78, %.thread6, %90 - %93 = tail call i32 @__iptunnel_pull_header(ptr noundef %0, i32 noundef 0, i16 noundef zeroext 8, i1 noundef zeroext false, i1 noundef zeroext false) #18 - %94 = icmp eq i32 %93, 0 - br i1 %94, label %95, label %.thread11 - -95: ; preds = %.thread10 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 200 - %97 = load ptr, ptr %96, align 8 - %98 = load ptr, ptr %12, align 8 - %99 = ptrtoint ptr %97 to i64 - %100 = ptrtoint ptr %98 to i64 - %101 = sub i64 %99, %100 - %102 = trunc i64 %101 to i16 - %103 = getelementptr inbounds nuw i8, ptr %0, i64 182 - store i16 %102, ptr %103, align 2 - %104 = load i8, ptr @log_ecn_error, align 1, !range !55, !noundef !56 - %105 = icmp ne i8 %104, 0 - %106 = tail call i32 @ip_tunnel_rcv(ptr noundef nonnull %24, ptr noundef %0, ptr noundef nonnull @ipip_tpi, ptr noundef null, i1 noundef zeroext %105) #18 - br label %107 - -.thread11: ; preds = %66, %26, %90, %.thread10 +76: ; preds = %29 + %77 = getelementptr inbounds nuw i8, ptr %32, i64 2816 + %78 = load i32, ptr %77, align 4 + %.not12 = icmp eq i32 %78, 0 + br i1 %.not12, label %79, label %.thread8 + +79: ; preds = %76 + %80 = getelementptr inbounds nuw i8, ptr %32, i64 2968 + %81 = load i8, ptr %80, align 1 + %82 = icmp eq i8 %81, 2 + br i1 %82, label %.critedge5, label %.thread8 + +.thread8: ; preds = %36, %45, %49, %52, %58, %79, %76 + %83 = getelementptr inbounds nuw i8, ptr %0, i64 60 + %84 = load i16, ptr %83, align 4 + %85 = and i16 %84, 256 + %86 = icmp eq i16 %85, 0 + br i1 %86, label %87, label %.critedge5 + +87: ; preds = %.thread8 + %88 = tail call i32 @__xfrm_policy_check(ptr noundef null, i32 noundef 0, ptr noundef %0, i16 noundef zeroext 2) #18 + %.not = icmp eq i32 %88, 0 + br i1 %.not, label %102, label %.critedge5 + +.critedge5: ; preds = %71, %.thread8, %79, %87 + %89 = tail call i32 @__iptunnel_pull_header(ptr noundef %0, i32 noundef 0, i16 noundef zeroext 8, i1 noundef zeroext false, i1 noundef zeroext false) #18 + %90 = icmp eq i32 %89, 0 + br i1 %90, label %.critedge, label %102 + +.critedge: ; preds = %.critedge5 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %92 = load ptr, ptr %91, align 8 + %93 = load ptr, ptr %12, align 8 + %94 = ptrtoint ptr %92 to i64 + %95 = ptrtoint ptr %93 to i64 + %96 = sub i64 %94, %95 + %97 = trunc i64 %96 to i16 + %98 = getelementptr inbounds nuw i8, ptr %0, i64 182 + store i16 %97, ptr %98, align 2 + %99 = load i8, ptr @log_ecn_error, align 1, !range !55, !noundef !56 + %100 = icmp ne i8 %99, 0 + %101 = tail call i32 @ip_tunnel_rcv(ptr noundef nonnull %24, ptr noundef %0, ptr noundef nonnull @ipip_tpi, ptr noundef null, i1 noundef zeroext %100) #18 + br label %103 + +102: ; preds = %26, %87, %.critedge5, %66, %71 tail call void @kfree_skb_reason(ptr noundef %0, i32 noundef 2) #18 - br label %107 + br label %103 -107: ; preds = %95, %.thread11, %10 - %108 = phi i32 [ 0, %.thread11 ], [ %106, %95 ], [ 1, %10 ] - ret i32 %108 +103: ; preds = %.critedge, %102, %10 + %104 = phi i32 [ 0, %102 ], [ %101, %.critedge ], [ 1, %10 ] + ret i32 %104 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/linux/optimized/svc4proc.ll b/bench/linux/optimized/svc4proc.ll index 41c1b03bbbe..7916ebe69f8 100644 --- a/bench/linux/optimized/svc4proc.ll +++ b/bench/linux/optimized/svc4proc.ll @@ -351,9 +351,9 @@ define internal noundef range(i32 0, 83886081) i32 @nlm4svc_proc_sm_notify(ptr n %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds nuw i8, ptr %0, i64 48 %6 = load i16, ptr %5, align 2 - switch i16 %6, label %.thread [ + switch i16 %6, label %.critedge [ i16 2, label %7 - i16 10, label %18 + i16 10, label %16 ] 7: ; preds = %1 @@ -361,70 +361,64 @@ define internal noundef range(i32 0, 83886081) i32 @nlm4svc_proc_sm_notify(ptr n %9 = load i16, ptr %8, align 2 %10 = and i16 %9, 252 %11 = icmp eq i16 %10, 0 - br i1 %11, label %12, label %.thread + br i1 %11, label %12, label %.critedge 12: ; preds = %7 %13 = getelementptr inbounds nuw i8, ptr %0, i64 52 %14 = load i32, ptr %13, align 4 %15 = and i32 %14, 255 - %16 = icmp eq i32 %15, 127 - %17 = zext i1 %16 to i32 - br label %37 + %.not1 = icmp eq i32 %15, 127 + br i1 %.not1, label %36, label %.critedge -18: ; preds = %1 - %19 = getelementptr inbounds nuw i8, ptr %0, i64 50 - %20 = load i16, ptr %19, align 2 - %21 = and i16 %20, 252 - %22 = icmp eq i16 %21, 0 - br i1 %22, label %23, label %.thread - -23: ; preds = %18 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %25 = tail call i32 @__ipv6_addr_type(ptr noundef nonnull %24) #7 - %26 = and i32 %25, 4096 - %27 = icmp eq i32 %26, 0 - br i1 %27, label %34, label %28 - -28: ; preds = %23 - %29 = getelementptr i8, ptr %0, i64 68 - %30 = load i32, ptr %29, align 4 - %31 = and i32 %30, 255 - %32 = icmp eq i32 %31, 127 - %33 = zext i1 %32 to i32 - br label %37 - -34: ; preds = %23 - %35 = tail call i32 @__ipv6_addr_type(ptr noundef nonnull %24) #7 - %36 = and i32 %35, 16 - br label %37 - -37: ; preds = %34, %28, %12 - %38 = phi i32 [ %17, %12 ], [ %33, %28 ], [ %36, %34 ] - %39 = icmp eq i32 %38, 0 - br i1 %39, label %.thread, label %42 - -.thread: ; preds = %18, %7, %1, %37 +16: ; preds = %1 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 50 + %18 = load i16, ptr %17, align 2 + %19 = and i16 %18, 252 + %20 = icmp eq i16 %19, 0 + br i1 %20, label %21, label %.critedge + +21: ; preds = %16 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %23 = tail call i32 @__ipv6_addr_type(ptr noundef nonnull %22) #7 + %24 = and i32 %23, 4096 + %25 = icmp eq i32 %24, 0 + br i1 %25, label %30, label %26 + +26: ; preds = %21 + %27 = getelementptr i8, ptr %0, i64 68 + %28 = load i32, ptr %27, align 4 + %29 = and i32 %28, 255 + %.not = icmp eq i32 %29, 127 + br i1 %.not, label %36, label %.critedge + +30: ; preds = %21 + %31 = tail call i32 @__ipv6_addr_type(ptr noundef nonnull %22) #7 + %32 = and i32 %31, 16 + %33 = icmp eq i32 %32, 0 + br i1 %33, label %.critedge, label %36 + +.critedge: ; preds = %26, %12, %1, %7, %16, %30 call void @llvm.lifetime.start.p0(i64 63, ptr nonnull %2) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(63) %2, i8 0, i64 63, i1 false), !annotation !7 - %40 = call ptr @svc_print_addr(ptr noundef %0, ptr noundef nonnull %2, i64 noundef 63) #7 - %41 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, ptr noundef %40) #8 + %34 = call ptr @svc_print_addr(ptr noundef %0, ptr noundef nonnull %2, i64 noundef 63) #7 + %35 = call i32 (ptr, ...) @_printk(ptr noundef nonnull @.str.22, ptr noundef %34) #8 call void @llvm.lifetime.end.p0(i64 63, ptr nonnull %2) #7 - br label %50 - -42: ; preds = %37 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %44 = load ptr, ptr %43, align 8 - %45 = icmp eq ptr %44, null - %46 = getelementptr inbounds nuw i8, ptr %44, i64 488 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 11392 - %48 = select i1 %45, ptr %47, ptr %46 - %49 = load ptr, ptr %48, align 8 - tail call void @nlm_host_rebooted(ptr noundef %49, ptr noundef %4) #7 - br label %50 - -50: ; preds = %42, %.thread - %51 = phi i32 [ 0, %42 ], [ 83886080, %.thread ] - ret i32 %51 + br label %44 + +36: ; preds = %26, %12, %30 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %38 = load ptr, ptr %37, align 8 + %39 = icmp eq ptr %38, null + %40 = getelementptr inbounds nuw i8, ptr %38, i64 488 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 11392 + %42 = select i1 %39, ptr %41, ptr %40 + %43 = load ptr, ptr %42, align 8 + tail call void @nlm_host_rebooted(ptr noundef %43, ptr noundef %4) #7 + br label %44 + +44: ; preds = %36, %.critedge + %45 = phi i32 [ 0, %36 ], [ 83886080, %.critedge ] + ret i32 %45 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/llvm/optimized/ELF.cpp.ll b/bench/llvm/optimized/ELF.cpp.ll index 799e9fb55c8..7e9b7ea53e7 100644 --- a/bench/llvm/optimized/ELF.cpp.ll +++ b/bench/llvm/optimized/ELF.cpp.ll @@ -11277,61 +11277,48 @@ define linkonce_odr hidden void @_ZN4llvm9utohexstrB5cxx11Embj(ptr dead_on_unwin %6 = alloca %"class.std::allocator.10", align 1 %7 = getelementptr inbounds nuw i8, ptr %5, i64 17 %8 = icmp eq i64 %1, 0 - br i1 %8, label %9, label %11 + br i1 %8, label %9, label %.thread + +.thread: ; preds = %4 + %.not21 = icmp eq i32 %3, 0 + br label %.lr.ph 9: ; preds = %4 %10 = getelementptr inbounds nuw i8, ptr %5, i64 16 store i8 48, ptr %10, align 16 - br label %11 - -11: ; preds = %9, %4 - %.013 = phi ptr [ %10, %9 ], [ %7, %4 ] %.not = icmp eq i32 %3, 0 - %12 = icmp ne i32 %3, 0 - %13 = zext i1 %12 to i64 - %14 = select i1 %.not, i64 %1, i64 %13 - %.not1516 = icmp eq i64 %14, 0 - br i1 %.not1516, label %._crit_edge, label %.lr.ph - -.lr.ph: ; preds = %11 - %15 = select i1 %2, i8 32, i8 0 - br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split - -.lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us - %.019.us = phi i64 [ %21, %.lr.ph.split.us ], [ %1, %.lr.ph ] - %.117.us = phi ptr [ %20, %.lr.ph.split.us ], [ %.013, %.lr.ph ] - %16 = and i64 %.019.us, 15 - %17 = getelementptr inbounds nuw [17 x i8], ptr @_ZZN4llvm8hexdigitEjbE3LUT, i64 0, i64 %16 - %18 = load i8, ptr %17, align 1 - %19 = or i8 %18, %15 - %20 = getelementptr inbounds i8, ptr %.117.us, i64 -1 - store i8 %19, ptr %20, align 1 - %21 = lshr i64 %.019.us, 4 - %.not15.us = icmp ult i64 %.019.us, 16 - br i1 %.not15.us, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !1103 - -.lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split - %.019 = phi i64 [ %27, %.lr.ph.split ], [ %1, %.lr.ph ] - %.01218 = phi i32 [ %28, %.lr.ph.split ], [ 0, %.lr.ph ] - %.117 = phi ptr [ %26, %.lr.ph.split ], [ %.013, %.lr.ph ] - %22 = and i64 %.019, 15 - %23 = getelementptr inbounds nuw [17 x i8], ptr @_ZZN4llvm8hexdigitEjbE3LUT, i64 0, i64 %22 - %24 = load i8, ptr %23, align 1 - %25 = or i8 %24, %15 - %26 = getelementptr inbounds i8, ptr %.117, i64 -1 - store i8 %25, ptr %26, align 1 - %27 = lshr i64 %.019, 4 - %28 = add nuw i32 %.01218, 1 - %exitcond.not = icmp eq i32 %28, %3 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !1103 - -._crit_edge: ; preds = %.lr.ph.split, %.lr.ph.split.us, %11 - %.1.lcssa = phi ptr [ %.013, %11 ], [ %20, %.lr.ph.split.us ], [ %26, %.lr.ph.split ] + br i1 %.not, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %.thread, %9 + %.not24 = phi i1 [ %.not21, %.thread ], [ false, %9 ] + %.01323 = phi ptr [ %7, %.thread ], [ %10, %9 ] + %11 = select i1 %2, i8 32, i8 0 + br label %12 + +12: ; preds = %.lr.ph, %12 + %.019 = phi i64 [ %1, %.lr.ph ], [ %18, %12 ] + %.01218 = phi i32 [ 0, %.lr.ph ], [ %19, %12 ] + %.117 = phi ptr [ %.01323, %.lr.ph ], [ %17, %12 ] + %13 = and i64 %.019, 15 + %14 = getelementptr inbounds nuw [17 x i8], ptr @_ZZN4llvm8hexdigitEjbE3LUT, i64 0, i64 %13 + %15 = load i8, ptr %14, align 1 + %16 = or i8 %15, %11 + %17 = getelementptr inbounds i8, ptr %.117, i64 -1 + store i8 %16, ptr %17, align 1 + %18 = lshr i64 %.019, 4 + %19 = add i32 %.01218, 1 + %20 = icmp uge i32 %19, %3 + %21 = icmp ult i64 %.019, 16 + %.not15 = select i1 %.not24, i1 %21, i1 %20 + br i1 %.not15, label %._crit_edge, label %12, !llvm.loop !1103 + +._crit_edge: ; preds = %12, %9 + %.1.lcssa = phi ptr [ %10, %9 ], [ %17, %12 ] call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #19 - %29 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #19 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %29, ptr noundef nonnull align 1 dereferenceable(1) %6) #19 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %30, align 8 + %22 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #19 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %22, ptr noundef nonnull align 1 dereferenceable(1) %6) #19 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %23, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %.1.lcssa, ptr noundef nonnull %7) call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #19 ret void diff --git a/bench/llvm/optimized/LoopVectorizationLegality.cpp.ll b/bench/llvm/optimized/LoopVectorizationLegality.cpp.ll index 86020b17adc..365b1ce3a0d 100644 --- a/bench/llvm/optimized/LoopVectorizationLegality.cpp.ll +++ b/bench/llvm/optimized/LoopVectorizationLegality.cpp.ll @@ -2002,16 +2002,16 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %4 = getelementptr inbounds nuw i8, ptr %0, i64 56 %5 = load ptr, ptr %4, align 8 %6 = tail call noundef zeroext i1 @_ZNK4llvm14LoopAccessInfo11isInvariantEPNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef %1) #20 - br i1 %6, label %59, label %7 + br i1 %6, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit", label %7 7: ; preds = %3 %8 = and i64 %2, 4294967296 %.not = icmp eq i64 %8, 0 - br i1 %.not, label %9, label %59 + br i1 %.not, label %9, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" 9: ; preds = %7 %10 = icmp eq i32 %.sroa.010.0.extract.trunc, 1 - br i1 %10, label %59, label %11 + br i1 %10, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit", label %11 11: ; preds = %9 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2021,14 +2021,14 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 %17 = load ptr, ptr %16, align 8 %18 = tail call noundef zeroext i1 @_ZNK4llvm15ScalarEvolution10isSCEVableEPNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(1392) %15, ptr noundef %17) #20 - br i1 %18, label %19, label %59 + br i1 %18, label %19, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" 19: ; preds = %11 %20 = tail call noundef ptr @_ZN4llvm15ScalarEvolution7getSCEVEPNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(1392) %15, ptr noundef nonnull %1) #20 %21 = load ptr, ptr %0, align 8 %22 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef 0, ptr noundef %21) %23 = tail call noundef zeroext i1 @_ZN4llvm19SCEVCouldNotCompute7classofEPKNS_4SCEVE(ptr noundef nonnull align 8 dereferenceable(30) %22) #20 - br i1 %23, label %59, label %24 + br i1 %23, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit", label %24 24: ; preds = %19 %25 = and i64 %2, 4294967295 @@ -2044,7 +2044,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %30 = load ptr, ptr %0, align 8 %31 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef %29, ptr noundef %30) %.not53.i.i.i.i.i = icmp eq ptr %22, %31 - br i1 %.not53.i.i.i.i.i, label %32, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" + br i1 %.not53.i.i.i.i.i, label %32, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit" 32: ; preds = %.lr.ph.i.i.i.i.i %33 = add nsw i64 %.sroa.028.058.i.i.i.i.i, -1 @@ -2052,7 +2052,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %35 = load ptr, ptr %0, align 8 %36 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef %34, ptr noundef %35) %.not54.i.i.i.i.i = icmp eq ptr %22, %36 - br i1 %.not54.i.i.i.i.i, label %37, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" + br i1 %.not54.i.i.i.i.i, label %37, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit" 37: ; preds = %32 %38 = add nsw i64 %.sroa.028.058.i.i.i.i.i, -2 @@ -2060,7 +2060,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %40 = load ptr, ptr %0, align 8 %41 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef %39, ptr noundef %40) %.not55.i.i.i.i.i = icmp eq ptr %22, %41 - br i1 %.not55.i.i.i.i.i, label %42, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" + br i1 %.not55.i.i.i.i.i, label %42, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit" 42: ; preds = %37 %43 = add nsw i64 %.sroa.028.058.i.i.i.i.i, -3 @@ -2068,7 +2068,7 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif %45 = load ptr, ptr %0, align 8 %46 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef %44, ptr noundef %45) %.not56.i.i.i.i.i = icmp eq ptr %22, %46 - br i1 %.not56.i.i.i.i.i, label %47, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" + br i1 %.not56.i.i.i.i.i, label %47, label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit" 47: ; preds = %42 %48 = add nsw i64 %.sroa.028.058.i.i.i.i.i, -4 @@ -2099,17 +2099,16 @@ define dso_local noundef zeroext i1 @_ZNK4llvm25LoopVectorizationLegality9isUnif ._crit_edge._crit_edge67.i.i.i.i.i: ; preds = %._crit_edge._crit_edge.i.i.i.i.i, %._crit_edge.i.i.i.i.i %56 = load ptr, ptr %0, align 8 %57 = tail call fastcc noundef ptr @_ZN4llvm12_GLOBAL__N_131SCEVAddRecForUniformityRewriter7rewriteEPKNS_4SCEVERNS_15ScalarEvolutionEjjPNS_4LoopE(ptr noundef %20, ptr noundef nonnull align 8 dereferenceable(1392) %15, i32 noundef %.sroa.010.0.extract.trunc, i32 noundef 1, ptr noundef %56) - %.not52.i.i.i.i.i = icmp ne ptr %22, %57 - %spec.select.i.i.i.i.i = zext i1 %.not52.i.i.i.i.i to i64 + %.not52.i.i.i.i.i.not = icmp eq ptr %22, %57 br label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" -"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit": ; preds = %.lr.ph.i.i.i.i.i, %32, %37, %42, %._crit_edge.i.i.i.i.i, %51, %._crit_edge._crit_edge.i.i.i.i.i, %._crit_edge._crit_edge67.i.i.i.i.i - %.sroa.08.0.in.sroa.speculated.i.i.i.i.i = phi i64 [ 3, %51 ], [ 3, %._crit_edge._crit_edge.i.i.i.i.i ], [ 0, %._crit_edge.i.i.i.i.i ], [ %spec.select.i.i.i.i.i, %._crit_edge._crit_edge67.i.i.i.i.i ], [ %.sroa.028.058.i.i.i.i.i, %.lr.ph.i.i.i.i.i ], [ %33, %32 ], [ %38, %37 ], [ %43, %42 ] - %58 = icmp eq i64 %.sroa.08.0.in.sroa.speculated.i.i.i.i.i, 0 - br label %59 +"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit": ; preds = %42, %37, %32, %.lr.ph.i.i.i.i.i + %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.ph = phi i64 [ %43, %42 ], [ %38, %37 ], [ %33, %32 ], [ %.sroa.028.058.i.i.i.i.i, %.lr.ph.i.i.i.i.i ] + %58 = icmp eq i64 %.sroa.08.0.in.sroa.speculated.i.i.i.i.i.ph, 0 + br label %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" -59: ; preds = %19, %11, %9, %7, %3, %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" - %.0 = phi i1 [ %58, %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit" ], [ true, %3 ], [ false, %7 ], [ true, %9 ], [ false, %11 ], [ false, %19 ] +"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit": ; preds = %._crit_edge._crit_edge67.i.i.i.i.i, %._crit_edge._crit_edge.i.i.i.i.i, %51, %._crit_edge.i.i.i.i.i, %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit", %19, %11, %9, %7, %3 + %.0 = phi i1 [ true, %3 ], [ false, %7 ], [ true, %9 ], [ false, %11 ], [ false, %19 ], [ false, %51 ], [ false, %._crit_edge._crit_edge.i.i.i.i.i ], [ true, %._crit_edge.i.i.i.i.i ], [ %.not52.i.i.i.i.i.not, %._crit_edge._crit_edge67.i.i.i.i.i ], [ %58, %"_ZN4llvm6all_ofINS_14iterator_rangeINS_6detail15SafeIntIteratorIjLb1EEEEEZNKS_25LoopVectorizationLegality9isUniformEPNS_5ValueENS_12ElementCountEE3$_0EEbOT_T0_.exit.loopexit" ] ret i1 %.0 } diff --git a/bench/llvm/optimized/X86Disassembler.cpp.ll b/bench/llvm/optimized/X86Disassembler.cpp.ll index 00e61742853..043aa6098d1 100644 --- a/bench/llvm/optimized/X86Disassembler.cpp.ll +++ b/bench/llvm/optimized/X86Disassembler.cpp.ll @@ -4355,9 +4355,9 @@ define internal fastcc noundef range(i32 -1, 1) i32 @_ZL8fixupRegPN4llvm15X86Dis i8 18, label %76 i8 23, label %77 i8 21, label %81 - i8 22, label %85 - i8 17, label %90 - i8 24, label %91 + i8 22, label %86 + i8 17, label %91 + i8 24, label %92 i8 25, label %96 i8 26, label %100 i8 10, label %76 @@ -4403,66 +4403,59 @@ _ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandType 77: ; preds = %58 %78 = and i32 %61, 255 - %79 = icmp ult i8 %62, 8 - %spec.select = zext i1 %79 to i8 + %79 = icmp ugt i8 %62, 7 %80 = add nuw nsw i32 %78, 383 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit 81: ; preds = %58 %82 = and i32 %61, 15 - %83 = lshr i8 %62, 3 - %.lobit = and i8 %83, 1 - %spec.select47 = xor i8 %.lobit, 1 - %84 = add nuw nsw i32 %82, 333 + %83 = add nuw nsw i32 %82, 333 + %84 = and i8 %62, 8 + %85 = icmp ne i8 %84, 0 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit -85: ; preds = %58 - %86 = icmp ult i8 %62, 8 - %spec.select48 = zext i1 %86 to i8 - %87 = lshr i32 %61, 1 - %88 = and i32 %87, 127 - %89 = add nuw nsw i32 %88, 341 +86: ; preds = %58 + %87 = icmp ugt i8 %62, 7 + %88 = lshr i32 %61, 1 + %89 = and i32 %88, 127 + %90 = add nuw nsw i32 %89, 341 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit -90: ; preds = %58 +91: ; preds = %58 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread -91: ; preds = %58 - %92 = and i8 %62, 6 - %93 = and i32 %61, 7 - %94 = icmp ne i8 %92, 6 - %spec.select49 = zext i1 %94 to i8 - %95 = add nuw nsw i32 %93, 345 +92: ; preds = %58 + %93 = and i8 %62, 6 + %94 = and i32 %61, 7 + %.not54 = icmp eq i8 %93, 6 + %95 = add nuw nsw i32 %94, 345 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit 96: ; preds = %58 %97 = and i32 %61, 255 - %98 = icmp ult i8 %62, 16 - %spec.select50 = zext i1 %98 to i8 + %98 = icmp ugt i8 %62, 15 %99 = add nuw nsw i32 %97, 351 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit 100: ; preds = %58 %101 = and i32 %61, 255 - %102 = icmp ult i8 %62, 16 - %spec.select51 = zext i1 %102 to i8 + %102 = icmp ugt i8 %62, 15 %103 = add nuw nsw i32 %101, 367 br label %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit -_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread: ; preds = %58, %71, %72, %73, %74, %75, %76, %90 - %.sink53 = phi i32 [ 255, %71 ], [ 255, %72 ], [ 255, %73 ], [ 255, %74 ], [ 255, %75 ], [ 255, %76 ], [ 7, %90 ], [ 255, %58 ] - %.sink52 = phi i32 [ 133, %71 ], [ 165, %72 ], [ 197, %73 ], [ 301, %74 ], [ 269, %75 ], [ 237, %76 ], [ 229, %90 ], [ %57, %58 ] +_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread: ; preds = %58, %71, %72, %73, %74, %75, %76, %91 + %.sink53 = phi i32 [ 255, %71 ], [ 255, %72 ], [ 255, %73 ], [ 255, %74 ], [ 255, %75 ], [ 255, %76 ], [ 7, %91 ], [ 255, %58 ] + %.sink52 = phi i32 [ 133, %71 ], [ 165, %72 ], [ 197, %73 ], [ 301, %74 ], [ 269, %75 ], [ 237, %76 ], [ 229, %91 ], [ %57, %58 ] %104 = and i32 %61, %.sink53 %105 = add nsw i32 %104, %.sink52 %106 = and i32 %105, 65535 br label %.sink.split -_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit: ; preds = %77, %81, %85, %91, %96, %100 - %.pr = phi i8 [ %spec.select, %77 ], [ %spec.select47, %81 ], [ %spec.select48, %85 ], [ %spec.select49, %91 ], [ %spec.select50, %96 ], [ %spec.select51, %100 ] - %.0.i.ph = phi i32 [ %80, %77 ], [ %84, %81 ], [ %89, %85 ], [ %95, %91 ], [ %99, %96 ], [ %103, %100 ] +_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit: ; preds = %77, %81, %86, %92, %96, %100 + %.pr = phi i1 [ %79, %77 ], [ %85, %81 ], [ %87, %86 ], [ %.not54, %92 ], [ %98, %96 ], [ %102, %100 ] + %.0.i.ph = phi i32 [ %80, %77 ], [ %83, %81 ], [ %90, %86 ], [ %95, %92 ], [ %99, %96 ], [ %103, %100 ] store i32 %.0.i.ph, ptr %54, align 4 - %.not26 = icmp eq i8 %.pr, 0 - br i1 %.not26, label %108, label %107 + br i1 %.pr, label %108, label %107 .sink.split: ; preds = %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread, %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread43 %.0.i.ph.ph.sink = phi i32 [ %.0.i.ph.ph, %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread43 ], [ %106, %_ZL12fixupRMValuePN4llvm15X86Disassembler19InternalInstructionENS0_11OperandTypeEhPh.exit.thread ] diff --git a/bench/lua/optimized/ldebug.ll b/bench/lua/optimized/ldebug.ll index 7c6893f70a3..fda9b35ef23 100644 --- a/bench/lua/optimized/ldebug.ll +++ b/bench/lua/optimized/ldebug.ll @@ -2524,24 +2524,20 @@ for.body.preheader.i: ; preds = %if.end for.body.i: ; preds = %for.inc.i, %for.body.preheader.i %indvars.iv.i = phi i64 [ 0, %for.body.preheader.i ], [ %indvars.iv.next.i, %for.inc.i ] %setreg.08.i = phi i32 [ -1, %for.body.preheader.i ], [ %setreg.1.i, %for.inc.i ] - %jmptarget.07.i = phi i32 [ 0, %for.body.preheader.i ], [ %jmptarget.14.i, %for.inc.i ] + %jmptarget.07.i = phi i32 [ 0, %for.body.preheader.i ], [ %jmptarget.13.i, %for.inc.i ] %arrayidx7.i = getelementptr inbounds nuw i32, ptr %p.val, i64 %indvars.iv.i %4 = load i32, ptr %arrayidx7.i, align 4 %and9.i = and i32 %4, 127 %shr10.i = lshr i32 %4, 7 %and11.i = and i32 %shr10.i, 255 switch i32 %and9.i, label %sw.default.i [ - i32 8, label %sw.bb.i + i32 8, label %sw.epilog.i i32 76, label %sw.bb18.i i32 68, label %sw.bb22.i i32 69, label %sw.bb22.i - i32 56, label %sw.bb25.i + i32 56, label %sw.epilog.thread.i ] -sw.bb.i: ; preds = %for.body.i - %cmp14.not.i = icmp samesign ugt i32 %and11.i, %reg.tr - br i1 %cmp14.not.i, label %for.inc.i, label %sw.epilog.i - sw.bb18.i: ; preds = %for.body.i %add19.i = add nuw nsw i32 %and11.i, 2 %cmp20.not.i = icmp samesign ult i32 %reg.tr, %add19.i @@ -2551,7 +2547,7 @@ sw.bb22.i: ; preds = %for.body.i, %for.bo %cmp23.not.i = icmp samesign ult i32 %reg.tr, %and11.i br i1 %cmp23.not.i, label %for.inc.i, label %if.then48.i -sw.bb25.i: ; preds = %for.body.i +sw.epilog.thread.i: ; preds = %for.body.i %5 = trunc i64 %indvars.iv.i to i32 %6 = add i32 %5, -16777214 %add30.i = add i32 %6, %shr10.i @@ -2565,28 +2561,30 @@ sw.default.i: ; preds = %for.body.i %arrayidx38.i = getelementptr inbounds nuw [83 x i8], ptr @luaP_opmodes, i64 0, i64 %idxprom37.i %8 = load i8, ptr %arrayidx38.i, align 1 %9 = and i8 %8, 8 - %tobool41.i = icmp ne i8 %9, 0 - %cmp43.i = icmp eq i32 %reg.tr, %and11.i - %10 = and i1 %cmp43.i, %tobool41.i - br i1 %10, label %if.then48.i, label %for.inc.i + %tobool41.i = icmp eq i8 %9, 0 + %cmp43.i = icmp ne i32 %reg.tr, %and11.i + %.not.i = or i1 %cmp43.i, %tobool41.i + br i1 %.not.i, label %for.inc.i, label %if.then48.i -sw.epilog.i: ; preds = %sw.bb.i +sw.epilog.i: ; preds = %for.body.i + %cmp14.not.i = icmp samesign ugt i32 %and11.i, %reg.tr %shr12.i = lshr i32 %4, 16 %and13.i = and i32 %shr12.i, 255 %add.i = add nuw nsw i32 %and11.i, %and13.i %cmp16.not.i = icmp samesign ugt i32 %reg.tr, %add.i - br i1 %cmp16.not.i, label %for.inc.i, label %if.then48.i + %land.ext.i = select i1 %cmp14.not.i, i1 true, i1 %cmp16.not.i + br i1 %land.ext.i, label %for.inc.i, label %if.then48.i if.then48.i: ; preds = %sw.epilog.i, %sw.default.i, %sw.bb22.i, %sw.bb18.i - %11 = sext i32 %jmptarget.07.i to i64 - %cmp.i.i = icmp slt i64 %indvars.iv.i, %11 - %12 = trunc nuw nsw i64 %indvars.iv.i to i32 - %.pc.i.i = select i1 %cmp.i.i, i32 -1, i32 %12 + %10 = sext i32 %jmptarget.07.i to i64 + %cmp.i.i = icmp slt i64 %indvars.iv.i, %10 + %11 = trunc nuw nsw i64 %indvars.iv.i to i32 + %.pc.i.i = select i1 %cmp.i.i, i32 -1, i32 %11 br label %for.inc.i -for.inc.i: ; preds = %if.then48.i, %sw.epilog.i, %sw.default.i, %sw.bb25.i, %sw.bb22.i, %sw.bb18.i, %sw.bb.i - %jmptarget.14.i = phi i32 [ %jmptarget.07.i, %if.then48.i ], [ %jmptarget.07.i, %sw.epilog.i ], [ %jmptarget.07.i, %sw.bb.i ], [ %jmptarget.2.i, %sw.bb25.i ], [ %jmptarget.07.i, %sw.default.i ], [ %jmptarget.07.i, %sw.bb22.i ], [ %jmptarget.07.i, %sw.bb18.i ] - %setreg.1.i = phi i32 [ %.pc.i.i, %if.then48.i ], [ %setreg.08.i, %sw.epilog.i ], [ %setreg.08.i, %sw.bb.i ], [ %setreg.08.i, %sw.bb25.i ], [ %setreg.08.i, %sw.default.i ], [ %setreg.08.i, %sw.bb22.i ], [ %setreg.08.i, %sw.bb18.i ] +for.inc.i: ; preds = %if.then48.i, %sw.epilog.i, %sw.default.i, %sw.epilog.thread.i, %sw.bb22.i, %sw.bb18.i + %jmptarget.13.i = phi i32 [ %jmptarget.07.i, %if.then48.i ], [ %jmptarget.07.i, %sw.epilog.i ], [ %jmptarget.2.i, %sw.epilog.thread.i ], [ %jmptarget.07.i, %sw.default.i ], [ %jmptarget.07.i, %sw.bb22.i ], [ %jmptarget.07.i, %sw.bb18.i ] + %setreg.1.i = phi i32 [ %.pc.i.i, %if.then48.i ], [ %setreg.08.i, %sw.epilog.i ], [ %setreg.08.i, %sw.epilog.thread.i ], [ %setreg.08.i, %sw.default.i ], [ %setreg.08.i, %sw.bb22.i ], [ %setreg.08.i, %sw.bb18.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 %findsetreg.exit, label %for.body.i, !llvm.loop !14 @@ -2597,11 +2595,11 @@ findsetreg.exit: ; preds = %for.inc.i br i1 %cmp.not, label %return, label %if.then2 if.then2: ; preds = %findsetreg.exit - %13 = load ptr, ptr %0, align 8 + %12 = load ptr, ptr %0, align 8 %idxprom = sext i32 %setreg.1.i to i64 - %arrayidx = getelementptr inbounds i32, ptr %13, i64 %idxprom - %14 = load i32, ptr %arrayidx, align 4 - %and = and i32 %14, 127 + %arrayidx = getelementptr inbounds i32, ptr %12, i64 %idxprom + %13 = load i32, ptr %arrayidx, align 4 + %and = and i32 %13, 127 switch i32 %and, label %return [ i32 0, label %sw.bb i32 9, label %sw.bb11 @@ -2610,42 +2608,42 @@ if.then2: ; preds = %findsetreg.exit ] sw.bb: ; preds = %if.then2 - %shr3 = lshr i32 %14, 16 + %shr3 = lshr i32 %13, 16 %and4 = and i32 %shr3, 255 - %shr5 = lshr i32 %14, 7 + %shr5 = lshr i32 %13, 7 %and6 = and i32 %shr5, 255 %cmp7 = icmp samesign ult i32 %and4, %and6 br i1 %cmp7, label %tailrecurse, label %return sw.bb11: ; preds = %if.then2 - %shr12 = lshr i32 %14, 16 + %shr12 = lshr i32 %13, 16 %and13 = and i32 %shr12, 255 - %15 = getelementptr i8, ptr %p, i64 80 - %p.val25 = load ptr, ptr %15, align 8 + %14 = getelementptr i8, ptr %p, i64 80 + %p.val25 = load ptr, ptr %14, align 8 %idxprom.i28 = zext nneg i32 %and13 to i64 %arrayidx.i29 = getelementptr inbounds nuw %struct.Upvaldesc, ptr %p.val25, i64 %idxprom.i28 - %16 = load ptr, ptr %arrayidx.i29, align 8 - %cmp.i = icmp eq ptr %16, null - %contents.i = getelementptr inbounds nuw i8, ptr %16, i64 24 + %15 = load ptr, ptr %arrayidx.i29, align 8 + %cmp.i = icmp eq ptr %15, null + %contents.i = getelementptr inbounds nuw i8, ptr %15, i64 24 %retval.0.i = select i1 %cmp.i, ptr @.str.18, ptr %contents.i store ptr %retval.0.i, ptr %name, align 8 br label %return sw.bb15: ; preds = %if.then2 - %shr16 = lshr i32 %14, 15 - %17 = getelementptr i8, ptr %p, i64 56 - %p.val26 = load ptr, ptr %17, align 8 + %shr16 = lshr i32 %13, 15 + %16 = getelementptr i8, ptr %p, i64 56 + %p.val26 = load ptr, ptr %16, align 8 %idxprom.i30 = zext nneg i32 %shr16 to i64 %arrayidx.i31 = getelementptr inbounds nuw %struct.TValue, ptr %p.val26, i64 %idxprom.i30 %tt_.i = getelementptr inbounds nuw i8, ptr %arrayidx.i31, i64 8 - %18 = load i8, ptr %tt_.i, align 8 - %19 = and i8 %18, 15 - %cmp.i32 = icmp eq i8 %19, 4 + %17 = load i8, ptr %tt_.i, align 8 + %18 = and i8 %17, 15 + %cmp.i32 = icmp eq i8 %18, 4 br i1 %cmp.i32, label %if.then.i, label %kname.exit if.then.i: ; preds = %sw.bb15 - %20 = load ptr, ptr %arrayidx.i31, align 8 - %contents.i34 = getelementptr inbounds nuw i8, ptr %20, i64 24 + %19 = load ptr, ptr %arrayidx.i31, align 8 + %contents.i34 = getelementptr inbounds nuw i8, ptr %19, i64 24 br label %kname.exit kname.exit: ; preds = %sw.bb15, %if.then.i @@ -2655,23 +2653,23 @@ kname.exit: ; preds = %sw.bb15, %if.then.i br label %return sw.bb19: ; preds = %if.then2 - %arrayidx.le = getelementptr inbounds i32, ptr %13, i64 %idxprom + %arrayidx.le = getelementptr inbounds i32, ptr %12, i64 %idxprom %arrayidx23 = getelementptr i8, ptr %arrayidx.le, i64 4 - %21 = load i32, ptr %arrayidx23, align 4 - %shr24 = lshr i32 %21, 7 - %22 = getelementptr i8, ptr %p, i64 56 - %p.val27 = load ptr, ptr %22, align 8 + %20 = load i32, ptr %arrayidx23, align 4 + %shr24 = lshr i32 %20, 7 + %21 = getelementptr i8, ptr %p, i64 56 + %p.val27 = load ptr, ptr %21, align 8 %idxprom.i35 = zext nneg i32 %shr24 to i64 %arrayidx.i36 = getelementptr inbounds nuw %struct.TValue, ptr %p.val27, i64 %idxprom.i35 %tt_.i37 = getelementptr inbounds nuw i8, ptr %arrayidx.i36, i64 8 - %23 = load i8, ptr %tt_.i37, align 8 - %24 = and i8 %23, 15 - %cmp.i38 = icmp eq i8 %24, 4 + %22 = load i8, ptr %tt_.i37, align 8 + %23 = and i8 %22, 15 + %cmp.i38 = icmp eq i8 %23, 4 br i1 %cmp.i38, label %if.then.i41, label %kname.exit43 if.then.i41: ; preds = %sw.bb19 - %25 = load ptr, ptr %arrayidx.i36, align 8 - %contents.i42 = getelementptr inbounds nuw i8, ptr %25, i64 24 + %24 = load ptr, ptr %arrayidx.i36, align 8 + %contents.i42 = getelementptr inbounds nuw i8, ptr %24, i64 24 br label %kname.exit43 kname.exit43: ; preds = %sw.bb19, %if.then.i41 diff --git a/bench/lua/optimized/ltable.ll b/bench/lua/optimized/ltable.ll index 00da34a9046..fde6b52020b 100644 --- a/bench/lua/optimized/ltable.ll +++ b/bench/lua/optimized/ltable.ll @@ -1034,7 +1034,7 @@ if.end.i.us: ; preds = %for.cond.us i8 0, label %return i8 1, label %return i8 17, label %return - i8 3, label %sw.bb14.i.us + i8 3, label %equalkey.exit.us i8 19, label %sw.bb17.i.us i8 2, label %sw.bb22.i.us i8 22, label %sw.bb27.i.us @@ -1046,156 +1046,138 @@ sw.bb32.i.us: ; preds = %if.end.i.us %key_val34.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 %3 = load ptr, ptr %key_val34.i.us, align 8 %call.i.us = tail call i32 @luaS_eqlngstr(ptr noundef %2, ptr noundef %3) #12 - br label %equalkey.exit.us + %4 = icmp eq i32 %call.i.us, 0 + br i1 %4, label %if.else.us, label %return sw.bb27.i.us: ; preds = %if.end.i.us - %4 = load ptr, ptr %key, align 8 + %5 = load ptr, ptr %key, align 8 %key_val29.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 - %5 = load ptr, ptr %key_val29.i.us, align 8 - %cmp30.i.us = icmp eq ptr %4, %5 - %conv31.i.us = zext i1 %cmp30.i.us to i32 - br label %equalkey.exit.us + %6 = load ptr, ptr %key_val29.i.us, align 8 + %cmp30.i.us.not = icmp eq ptr %5, %6 + br i1 %cmp30.i.us.not, label %return, label %if.else.us sw.bb22.i.us: ; preds = %if.end.i.us - %6 = load ptr, ptr %key, align 8 + %7 = load ptr, ptr %key, align 8 %key_val24.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 - %7 = load ptr, ptr %key_val24.i.us, align 8 - %cmp25.i.us = icmp eq ptr %6, %7 - %conv26.i.us = zext i1 %cmp25.i.us to i32 - br label %equalkey.exit.us + %8 = load ptr, ptr %key_val24.i.us, align 8 + %cmp25.i.us.not = icmp eq ptr %7, %8 + br i1 %cmp25.i.us.not, label %return, label %if.else.us sw.bb17.i.us: ; preds = %if.end.i.us - %8 = load double, ptr %key, align 8 + %9 = load double, ptr %key, align 8 %key_val19.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 - %9 = load double, ptr %key_val19.i.us, align 8 - %cmp20.i.us = fcmp oeq double %8, %9 - %conv21.i.us = zext i1 %cmp20.i.us to i32 - br label %equalkey.exit.us - -sw.bb14.i.us: ; preds = %if.end.i.us - %10 = load i64, ptr %key, align 8 - %key_val.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 - %11 = load i64, ptr %key_val.i.us, align 8 - %cmp15.i.us = icmp eq i64 %10, %11 - %conv16.i.us = zext i1 %cmp15.i.us to i32 - br label %equalkey.exit.us + %10 = load double, ptr %key_val19.i.us, align 8 + %cmp20.i.us = fcmp une double %9, %10 + br i1 %cmp20.i.us, label %if.else.us, label %return sw.default.i.us: ; preds = %if.end.i.us - %12 = load ptr, ptr %key, align 8 + %11 = load ptr, ptr %key, align 8 %key_val36.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 - %13 = load ptr, ptr %key_val36.i.us, align 8 - %cmp37.i.us = icmp eq ptr %12, %13 - %conv38.i.us = zext i1 %cmp37.i.us to i32 - br label %equalkey.exit.us + %12 = load ptr, ptr %key_val36.i.us, align 8 + %cmp37.i.us.not = icmp eq ptr %11, %12 + br i1 %cmp37.i.us.not, label %return, label %if.else.us -equalkey.exit.us: ; preds = %sw.default.i.us, %sw.bb14.i.us, %sw.bb17.i.us, %sw.bb22.i.us, %sw.bb27.i.us, %sw.bb32.i.us - %retval.0.i.us = phi i32 [ %conv38.i.us, %sw.default.i.us ], [ %call.i.us, %sw.bb32.i.us ], [ %conv31.i.us, %sw.bb27.i.us ], [ %conv26.i.us, %sw.bb22.i.us ], [ %conv21.i.us, %sw.bb17.i.us ], [ %conv16.i.us, %sw.bb14.i.us ] - %tobool.not.us = icmp eq i32 %retval.0.i.us, 0 - br i1 %tobool.not.us, label %if.else.us, label %return +equalkey.exit.us: ; preds = %if.end.i.us + %13 = load i64, ptr %key, align 8 + %key_val.i.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 16 + %14 = load i64, ptr %key_val.i.us, align 8 + %cmp15.i.us.not = icmp eq i64 %13, %14 + br i1 %cmp15.i.us.not, label %return, label %if.else.us -if.else.us: ; preds = %for.cond.us, %equalkey.exit.us +if.else.us: ; preds = %sw.bb17.i.us, %sw.bb22.i.us, %sw.bb27.i.us, %sw.bb32.i.us, %sw.default.i.us, %for.cond.us, %equalkey.exit.us %next.us = getelementptr inbounds nuw i8, ptr %n.0.us, i64 12 - %14 = load i32, ptr %next.us, align 4 - %cmp.us = icmp eq i32 %14, 0 + %15 = load i32, ptr %next.us, align 4 + %cmp.us = icmp eq i32 %15, 0 br i1 %cmp.us, label %return, label %if.end.us if.end.us: ; preds = %if.else.us - %idx.ext.us = sext i32 %14 to i64 + %idx.ext.us = sext i32 %15 to i64 %add.ptr.us = getelementptr inbounds %union.Node, ptr %n.0.us, i64 %idx.ext.us br label %for.cond.us for.cond: ; preds = %entry, %if.end %n.0 = phi ptr [ %add.ptr, %if.end ], [ %call, %entry ] - %15 = load i8, ptr %tt_.i, align 8 + %16 = load i8, ptr %tt_.i, align 8 %key_tt.i = getelementptr inbounds nuw i8, ptr %n.0, i64 9 - %16 = load i8, ptr %key_tt.i, align 1 - %cmp.not.i = icmp eq i8 %15, %16 + %17 = load i8, ptr %key_tt.i, align 1 + %cmp.not.i = icmp eq i8 %16, %17 br i1 %cmp.not.i, label %if.end.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %for.cond - %cmp6.i = icmp ne i8 %16, 11 - %17 = and i8 %15, 64 - %tobool11.not.i = icmp eq i8 %17, 0 + %cmp6.i = icmp ne i8 %17, 11 + %18 = and i8 %16, 64 + %tobool11.not.i = icmp eq i8 %18, 0 %or.cond16.i = or i1 %tobool11.not.i, %cmp6.i br i1 %or.cond16.i, label %if.else, label %sw.default.i if.end.i: ; preds = %for.cond - switch i8 %15, label %sw.default.i [ + switch i8 %16, label %sw.default.i [ i8 0, label %return i8 1, label %return i8 17, label %return - i8 3, label %sw.bb14.i + i8 3, label %equalkey.exit i8 19, label %sw.bb17.i i8 2, label %sw.bb22.i i8 22, label %sw.bb27.i i8 84, label %sw.bb32.i ] -sw.bb14.i: ; preds = %if.end.i - %18 = load i64, ptr %key, align 8 - %key_val.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 - %19 = load i64, ptr %key_val.i, align 8 - %cmp15.i = icmp eq i64 %18, %19 - %conv16.i = zext i1 %cmp15.i to i32 - br label %equalkey.exit - sw.bb17.i: ; preds = %if.end.i - %20 = load double, ptr %key, align 8 + %19 = load double, ptr %key, align 8 %key_val19.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 - %21 = load double, ptr %key_val19.i, align 8 - %cmp20.i = fcmp oeq double %20, %21 - %conv21.i = zext i1 %cmp20.i to i32 - br label %equalkey.exit + %20 = load double, ptr %key_val19.i, align 8 + %cmp20.i = fcmp une double %19, %20 + br i1 %cmp20.i, label %if.else, label %return sw.bb22.i: ; preds = %if.end.i - %22 = load ptr, ptr %key, align 8 + %21 = load ptr, ptr %key, align 8 %key_val24.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 - %23 = load ptr, ptr %key_val24.i, align 8 - %cmp25.i = icmp eq ptr %22, %23 - %conv26.i = zext i1 %cmp25.i to i32 - br label %equalkey.exit + %22 = load ptr, ptr %key_val24.i, align 8 + %cmp25.i.not = icmp eq ptr %21, %22 + br i1 %cmp25.i.not, label %return, label %if.else sw.bb27.i: ; preds = %if.end.i - %24 = load ptr, ptr %key, align 8 + %23 = load ptr, ptr %key, align 8 %key_val29.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 - %25 = load ptr, ptr %key_val29.i, align 8 - %cmp30.i = icmp eq ptr %24, %25 - %conv31.i = zext i1 %cmp30.i to i32 - br label %equalkey.exit + %24 = load ptr, ptr %key_val29.i, align 8 + %cmp30.i.not = icmp eq ptr %23, %24 + br i1 %cmp30.i.not, label %return, label %if.else sw.bb32.i: ; preds = %if.end.i - %26 = load ptr, ptr %key, align 8 + %25 = load ptr, ptr %key, align 8 %key_val34.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 - %27 = load ptr, ptr %key_val34.i, align 8 - %call.i = tail call i32 @luaS_eqlngstr(ptr noundef %26, ptr noundef %27) #12 - br label %equalkey.exit + %26 = load ptr, ptr %key_val34.i, align 8 + %call.i = tail call i32 @luaS_eqlngstr(ptr noundef %25, ptr noundef %26) #12 + %27 = icmp eq i32 %call.i, 0 + br i1 %27, label %if.else, label %return sw.default.i: ; preds = %if.end.i, %land.lhs.true.i %28 = load ptr, ptr %key, align 8 %key_val36.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 %29 = load ptr, ptr %key_val36.i, align 8 - %cmp37.i = icmp eq ptr %28, %29 - %conv38.i = zext i1 %cmp37.i to i32 - br label %equalkey.exit + %cmp37.i.not = icmp eq ptr %28, %29 + br i1 %cmp37.i.not, label %return, label %if.else -equalkey.exit: ; preds = %sw.bb14.i, %sw.bb17.i, %sw.bb22.i, %sw.bb27.i, %sw.bb32.i, %sw.default.i - %retval.0.i = phi i32 [ %conv38.i, %sw.default.i ], [ %call.i, %sw.bb32.i ], [ %conv31.i, %sw.bb27.i ], [ %conv26.i, %sw.bb22.i ], [ %conv21.i, %sw.bb17.i ], [ %conv16.i, %sw.bb14.i ] - %tobool.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool.not, label %if.else, label %return +equalkey.exit: ; preds = %if.end.i + %30 = load i64, ptr %key, align 8 + %key_val.i = getelementptr inbounds nuw i8, ptr %n.0, i64 16 + %31 = load i64, ptr %key_val.i, align 8 + %cmp15.i.not = icmp eq i64 %30, %31 + br i1 %cmp15.i.not, label %return, label %if.else -if.else: ; preds = %land.lhs.true.i, %equalkey.exit +if.else: ; preds = %sw.bb17.i, %sw.bb22.i, %sw.bb27.i, %sw.bb32.i, %sw.default.i, %land.lhs.true.i, %equalkey.exit %next = getelementptr inbounds nuw i8, ptr %n.0, i64 12 - %30 = load i32, ptr %next, align 4 - %cmp = icmp eq i32 %30, 0 + %32 = load i32, ptr %next, align 4 + %cmp = icmp eq i32 %32, 0 br i1 %cmp, label %return, label %if.end if.end: ; preds = %if.else - %idx.ext = sext i32 %30 to i64 + %idx.ext = sext i32 %32 to i64 %add.ptr = getelementptr inbounds %union.Node, ptr %n.0, i64 %idx.ext br label %for.cond -return: ; preds = %equalkey.exit, %if.else, %if.end.i, %if.end.i, %if.end.i, %if.end.i.us, %if.end.i.us, %if.end.i.us, %equalkey.exit.us, %if.else.us - %.us-phi = phi ptr [ %n.0.us, %equalkey.exit.us ], [ @absentkey, %if.else.us ], [ %n.0.us, %if.end.i.us ], [ %n.0.us, %if.end.i.us ], [ %n.0.us, %if.end.i.us ], [ %n.0, %equalkey.exit ], [ @absentkey, %if.else ], [ %n.0, %if.end.i ], [ %n.0, %if.end.i ], [ %n.0, %if.end.i ] +return: ; preds = %equalkey.exit, %if.else, %if.end.i, %if.end.i, %if.end.i, %sw.default.i, %sw.bb32.i, %sw.bb27.i, %sw.bb22.i, %sw.bb17.i, %if.end.i.us, %if.end.i.us, %if.end.i.us, %equalkey.exit.us, %if.else.us, %sw.default.i.us, %sw.bb32.i.us, %sw.bb27.i.us, %sw.bb22.i.us, %sw.bb17.i.us + %.us-phi = phi ptr [ %n.0.us, %sw.bb17.i.us ], [ %n.0.us, %sw.bb22.i.us ], [ %n.0.us, %sw.bb27.i.us ], [ %n.0.us, %sw.bb32.i.us ], [ %n.0.us, %sw.default.i.us ], [ %n.0.us, %equalkey.exit.us ], [ @absentkey, %if.else.us ], [ %n.0.us, %if.end.i.us ], [ %n.0.us, %if.end.i.us ], [ %n.0.us, %if.end.i.us ], [ %n.0, %sw.bb17.i ], [ %n.0, %sw.bb22.i ], [ %n.0, %sw.bb27.i ], [ %n.0, %sw.bb32.i ], [ %n.0, %sw.default.i ], [ %n.0, %equalkey.exit ], [ @absentkey, %if.else ], [ %n.0, %if.end.i ], [ %n.0, %if.end.i ], [ %n.0, %if.end.i ] ret ptr %.us-phi } diff --git a/bench/luajit/optimized/minilua.ll b/bench/luajit/optimized/minilua.ll index 45379a06c89..cac627e1962 100644 --- a/bench/luajit/optimized/minilua.ll +++ b/bench/luajit/optimized/minilua.ll @@ -39657,7 +39657,7 @@ for.body.preheader: ; preds = %entry for.body: ; preds = %for.body.preheader, %for.inc %indvars.iv = phi i64 [ %2, %for.body.preheader ], [ %indvars.iv.next, %for.inc ] %nargs.023 = phi i32 [ %nargs.019, %for.body.preheader ], [ %nargs.0, %for.inc ] - %status.021 = phi i32 [ 1, %for.body.preheader ], [ %status.1, %for.inc ] + %status.021 = phi i1 [ false, %for.body.preheader ], [ %11, %for.inc ] %3 = load ptr, ptr %1, align 8 %4 = getelementptr %struct.lua_TValue, ptr %3, i64 %indvars.iv %add.ptr.i.i = getelementptr i8, ptr %4, i64 -16 @@ -39674,8 +39674,7 @@ lua_type.exit: ; preds = %for.body br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %lua_type.exit - %tobool2.not = icmp eq i32 %status.021, 0 - br i1 %tobool2.not, label %for.inc, label %land.rhs + br i1 %status.021, label %for.inc, label %land.rhs land.rhs: ; preds = %if.then %7 = trunc nuw nsw i64 %indvars.iv to i32 @@ -39695,8 +39694,7 @@ if.then.i: ; preds = %if.else unreachable luaL_checklstring.exit: ; preds = %if.else - %tobool7.not = icmp eq i32 %status.021, 0 - br i1 %tobool7.not, label %for.inc, label %land.rhs8 + br i1 %status.021, label %for.inc, label %land.rhs8 land.rhs8: ; preds = %luaL_checklstring.exit %9 = load i64, ptr %l, align 8 @@ -39707,8 +39705,8 @@ land.rhs8: ; preds = %luaL_checklstring.e for.inc: ; preds = %luaL_checklstring.exit, %land.rhs8, %if.then, %land.rhs %status.1.shrunk = phi i1 [ false, %if.then ], [ %cmp5, %land.rhs ], [ false, %luaL_checklstring.exit ], [ %cmp10, %land.rhs8 ] - %status.1 = zext i1 %status.1.shrunk to i32 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %11 = xor i1 %status.1.shrunk, true %nargs.0 = add nsw i32 %nargs.023, -1 %tobool.not = icmp eq i32 %nargs.0, 0 br i1 %tobool.not, label %for.end, label %for.body, !llvm.loop !133 @@ -39718,32 +39716,32 @@ for.end: ; preds = %for.inc br i1 %status.1.shrunk, label %if.then.i14, label %if.else.i if.then.i14: ; preds = %entry, %for.end - %11 = phi ptr [ %.pre, %for.end ], [ %L.val, %entry ] - store i32 1, ptr %11, align 8 + %12 = phi ptr [ %.pre, %for.end ], [ %L.val, %entry ] + store i32 1, ptr %12, align 8 br label %pushresult.exit if.else.i: ; preds = %for.end %call.i12 = tail call ptr @__errno_location() #42 - %12 = load i32, ptr %call.i12, align 4 + %13 = load i32, ptr %call.i12, align 4 %tt.i9.i = getelementptr inbounds nuw i8, ptr %.pre, i64 8 store i32 0, ptr %tt.i9.i, align 8 - %13 = load ptr, ptr %0, align 8 - %incdec.ptr.i10.i = getelementptr inbounds nuw i8, ptr %13, i64 16 + %14 = load ptr, ptr %0, align 8 + %incdec.ptr.i10.i = getelementptr inbounds nuw i8, ptr %14, i64 16 store ptr %incdec.ptr.i10.i, ptr %0, align 8 - %call6.i = call ptr @strerror(i32 noundef %12) #37 + %call6.i = call ptr @strerror(i32 noundef %13) #37 %call7.i = call ptr (ptr, ptr, ...) @lua_pushfstring(ptr noundef nonnull %L, ptr noundef nonnull @.str.113, ptr noundef %call6.i) - %14 = load ptr, ptr %0, align 8 - %conv.i.i = sitofp i32 %12 to double - store double %conv.i.i, ptr %14, align 8 + %15 = load ptr, ptr %0, align 8 + %conv.i.i = sitofp i32 %13 to double + store double %conv.i.i, ptr %15, align 8 br label %pushresult.exit pushresult.exit: ; preds = %if.then.i14, %if.else.i - %.sink14.i = phi ptr [ %14, %if.else.i ], [ %11, %if.then.i14 ] + %.sink14.i = phi ptr [ %15, %if.else.i ], [ %12, %if.then.i14 ] %.sink.i = phi i32 [ 3, %if.else.i ], [ 1, %if.then.i14 ] %tt.i12.i = getelementptr inbounds nuw i8, ptr %.sink14.i, i64 8 store i32 %.sink.i, ptr %tt.i12.i, align 8 - %15 = load ptr, ptr %0, align 8 - %incdec.ptr.i13.i = getelementptr inbounds nuw i8, ptr %15, i64 16 + %16 = load ptr, ptr %0, align 8 + %incdec.ptr.i13.i = getelementptr inbounds nuw i8, ptr %16, i64 16 store ptr %incdec.ptr.i13.i, ptr %0, align 8 ret i32 %.sink.i } @@ -44997,34 +44995,35 @@ sw.bb1.i295: ; preds = %land.rhs.i %69 = load i8, ptr %incdec.ptr.i164413, align 1 %conv2.i297 = zext i8 %69 to i32 %call.i298 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i, i32 noundef %conv2.i297) - br label %singlematch.exit303 + %70 = icmp eq i32 %call.i298, 0 + br i1 %70, label %while.end.i, label %while.body.i214 sw.bb3.i256: ; preds = %land.rhs.i - %70 = load i8, ptr %incdec.ptr.i164413, align 1 - %cmp.i.i259 = icmp eq i8 %70, 94 + %71 = load i8, ptr %incdec.ptr.i164413, align 1 + %cmp.i.i259 = icmp eq i8 %71, 94 %spec.select.i.i260 = select i1 %cmp.i.i259, ptr %incdec.ptr.i164413, ptr %p.addr.0 %not.cmp.i.i261 = xor i1 %cmp.i.i259, true %incdec.ptr220.i.i262 = getelementptr inbounds nuw i8, ptr %spec.select.i.i260, i64 1 %cmp321.i.i263 = icmp ult ptr %incdec.ptr220.i.i262, %add.ptr4.i257 - br i1 %cmp321.i.i263, label %while.body.i.i269, label %matchbracketclass.exit.i264 + br i1 %cmp321.i.i263, label %while.body.i.i269, label %singlematch.exit303 while.body.i.i269: ; preds = %sw.bb3.i256, %if.end39.i.i279 %incdec.ptr223.i.i270 = phi ptr [ %incdec.ptr2.i.i281, %if.end39.i.i279 ], [ %incdec.ptr220.i.i262, %sw.bb3.i256 ] %p.addr.122.i.i271 = phi ptr [ %p.addr.2.i.i280, %if.end39.i.i279 ], [ %spec.select.i.i260, %sw.bb3.i256 ] - %71 = load i8, ptr %incdec.ptr223.i.i270, align 1 - %cmp6.i.i272 = icmp eq i8 %71, 37 + %72 = load i8, ptr %incdec.ptr223.i.i270, align 1 + %cmp6.i.i272 = icmp eq i8 %72, 37 %incdec.ptr9.i.i273 = getelementptr inbounds nuw i8, ptr %p.addr.122.i.i271, i64 2 - %72 = load i8, ptr %incdec.ptr9.i.i273, align 1 + %73 = load i8, ptr %incdec.ptr9.i.i273, align 1 br i1 %cmp6.i.i272, label %if.then8.i.i291, label %if.else.i.i274 if.then8.i.i291: ; preds = %while.body.i.i269 - %conv10.i.i292 = zext i8 %72 to i32 + %conv10.i.i292 = zext i8 %73 to i32 %call.i.i293 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i, i32 noundef %conv10.i.i292) %tobool.not.i.i294 = icmp eq i32 %call.i.i293, 0 - br i1 %tobool.not.i.i294, label %if.end39.i.i279, label %matchbracketclass.exit.i264 + br i1 %tobool.not.i.i294, label %if.end39.i.i279, label %matchbracketclass.exit.i264.loopexit if.else.i.i274: ; preds = %while.body.i.i269 - %cmp15.i.i275 = icmp eq i8 %72, 45 + %cmp15.i.i275 = icmp eq i8 %73, 45 br i1 %cmp15.i.i275, label %land.lhs.true.i.i283, label %if.else32.i.i276 land.lhs.true.i.i283: ; preds = %if.else.i.i274 @@ -45033,52 +45032,48 @@ land.lhs.true.i.i283: ; preds = %if.else.i.i274 br i1 %cmp18.i.i285, label %if.then20.i.i286, label %if.else32.i.i276 if.then20.i.i286: ; preds = %land.lhs.true.i.i283 - %cmp24.not.i.i288 = icmp ult i8 %68, %71 + %cmp24.not.i.i288 = icmp ult i8 %68, %72 br i1 %cmp24.not.i.i288, label %if.end39.i.i279, label %land.lhs.true26.i.i289 land.lhs.true26.i.i289: ; preds = %if.then20.i.i286 - %73 = load i8, ptr %add.ptr17.i.i284, align 1 - %cmp28.not.i.i290 = icmp ult i8 %73, %68 - br i1 %cmp28.not.i.i290, label %if.end39.i.i279, label %matchbracketclass.exit.i264 + %74 = load i8, ptr %add.ptr17.i.i284, align 1 + %cmp28.not.i.i290 = icmp ult i8 %74, %68 + br i1 %cmp28.not.i.i290, label %if.end39.i.i279, label %matchbracketclass.exit.i264.loopexit if.else32.i.i276: ; preds = %land.lhs.true.i.i283, %if.else.i.i274 - %cmp34.i.i278 = icmp eq i8 %68, %71 - br i1 %cmp34.i.i278, label %matchbracketclass.exit.i264, label %if.end39.i.i279 + %cmp34.i.i278 = icmp eq i8 %68, %72 + br i1 %cmp34.i.i278, label %matchbracketclass.exit.i264.loopexit, label %if.end39.i.i279 if.end39.i.i279: ; preds = %if.else32.i.i276, %land.lhs.true26.i.i289, %if.then20.i.i286, %if.then8.i.i291 %p.addr.2.i.i280 = phi ptr [ %incdec.ptr9.i.i273, %if.then8.i.i291 ], [ %add.ptr17.i.i284, %land.lhs.true26.i.i289 ], [ %add.ptr17.i.i284, %if.then20.i.i286 ], [ %incdec.ptr223.i.i270, %if.else32.i.i276 ] %incdec.ptr2.i.i281 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i280, i64 1 %cmp3.i.i282 = icmp ult ptr %incdec.ptr2.i.i281, %add.ptr4.i257 - br i1 %cmp3.i.i282, label %while.body.i.i269, label %matchbracketclass.exit.i264, !llvm.loop !150 + br i1 %cmp3.i.i282, label %while.body.i.i269, label %matchbracketclass.exit.i264.loopexit, !llvm.loop !150 -matchbracketclass.exit.i264: ; preds = %if.end39.i.i279, %if.else32.i.i276, %land.lhs.true26.i.i289, %if.then8.i.i291, %sw.bb3.i256 - %retval.0.in.i.i265 = phi i1 [ %cmp.i.i259, %sw.bb3.i256 ], [ %cmp.i.i259, %if.end39.i.i279 ], [ %not.cmp.i.i261, %if.else32.i.i276 ], [ %not.cmp.i.i261, %land.lhs.true26.i.i289 ], [ %not.cmp.i.i261, %if.then8.i.i291 ] - %retval.0.i.i266 = zext i1 %retval.0.in.i.i265 to i32 - br label %singlematch.exit303 +matchbracketclass.exit.i264.loopexit: ; preds = %if.then8.i.i291, %land.lhs.true26.i.i289, %if.else32.i.i276, %if.end39.i.i279 + %retval.0.in.i.i265.ph = phi i1 [ %not.cmp.i.i261, %if.then8.i.i291 ], [ %not.cmp.i.i261, %land.lhs.true26.i.i289 ], [ %not.cmp.i.i261, %if.else32.i.i276 ], [ %cmp.i.i259, %if.end39.i.i279 ] + br i1 %retval.0.in.i.i265.ph, label %while.body.i214, label %while.end.i sw.default.i299: ; preds = %land.rhs.i - %cmp.i301 = icmp eq i8 %68, %2 - %conv7.i302 = zext i1 %cmp.i301 to i32 - br label %singlematch.exit303 + %cmp.i301.not = icmp eq i8 %68, %2 + br i1 %cmp.i301.not, label %while.body.i214, label %while.end.i -singlematch.exit303: ; preds = %sw.bb1.i295, %matchbracketclass.exit.i264, %sw.default.i299 - %retval.0.i267 = phi i32 [ %conv7.i302, %sw.default.i299 ], [ %retval.0.i.i266, %matchbracketclass.exit.i264 ], [ %call.i298, %sw.bb1.i295 ] - %tobool.not.i213 = icmp eq i32 %retval.0.i267, 0 - br i1 %tobool.not.i213, label %while.end.i, label %while.body.i214 +singlematch.exit303: ; preds = %sw.bb3.i256 + br i1 %cmp.i.i259, label %while.body.i214, label %while.end.i -while.body.i214: ; preds = %land.rhs.i, %singlematch.exit303 +while.body.i214: ; preds = %matchbracketclass.exit.i264.loopexit, %sw.bb1.i295, %sw.default.i299, %land.rhs.i, %singlematch.exit303 %inc.i215 = add nuw nsw i64 %i.0.i508, 1 %add.ptr.i205 = getelementptr inbounds nuw i8, ptr %s.addr.0, i64 %inc.i215 %cmp.i207 = icmp ult ptr %add.ptr.i205, %57 br i1 %cmp.i207, label %land.rhs.i, label %while.end.i, !llvm.loop !151 -while.end.i: ; preds = %while.body.i214, %singlematch.exit303 - %i.0.i.lcssa = phi i64 [ %67, %while.body.i214 ], [ %i.0.i508, %singlematch.exit303 ] +while.end.i: ; preds = %while.body.i214, %singlematch.exit303, %sw.default.i299, %sw.bb1.i295, %matchbracketclass.exit.i264.loopexit + %i.0.i.lcssa = phi i64 [ %67, %while.body.i214 ], [ %i.0.i508, %singlematch.exit303 ], [ %i.0.i508, %sw.default.i299 ], [ %i.0.i508, %sw.bb1.i295 ], [ %i.0.i508, %matchbracketclass.exit.i264.loopexit ] %cmp3.i208512 = icmp sgt i64 %i.0.i.lcssa, -1 br i1 %cmp3.i208512, label %while.body5.i.lr.ph, label %return while.body5.i.lr.ph: ; preds = %while.cond.i.preheader, %while.end.i - %i.0.i.lcssa602 = phi i64 [ %i.0.i.lcssa, %while.end.i ], [ 0, %while.cond.i.preheader ] + %i.0.i.lcssa606 = phi i64 [ %i.0.i.lcssa, %while.end.i ], [ 0, %while.cond.i.preheader ] %add.ptr7.i = getelementptr inbounds nuw i8, ptr %retval.0.i181, i64 1 br label %while.body5.i @@ -45088,7 +45083,7 @@ while.cond2.i: ; preds = %while.body5.i br i1 %cmp3.i208, label %while.body5.i, label %return, !llvm.loop !152 while.body5.i: ; preds = %while.body5.i.lr.ph, %while.cond2.i - %i.1.i513 = phi i64 [ %i.0.i.lcssa602, %while.body5.i.lr.ph ], [ %dec.i211, %while.cond2.i ] + %i.1.i513 = phi i64 [ %i.0.i.lcssa606, %while.body5.i.lr.ph ], [ %dec.i211, %while.cond2.i ] %add.ptr6.i = getelementptr inbounds nuw i8, ptr %s.addr.0, i64 %i.1.i513 %call8.i = tail call fastcc ptr @match(ptr noundef nonnull %ms, ptr noundef %add.ptr6.i, ptr noundef nonnull %add.ptr7.i) %tobool9.not.i = icmp eq ptr %call8.i, null @@ -45109,8 +45104,8 @@ land.rhs.i233.lr.ph: ; preds = %cond.true95 land.rhs.i233: ; preds = %land.rhs.i233.lr.ph, %while.body.i237 %i.0.i217499 = phi i64 [ 0, %land.rhs.i233.lr.ph ], [ %inc.i238, %while.body.i237 ] %add.ptr.i218500 = getelementptr inbounds nuw i8, ptr %add.ptr96, i64 %i.0.i217499 - %74 = load i8, ptr %add.ptr.i218500, align 1 - %conv.i234 = zext i8 %74 to i32 + %75 = load i8, ptr %add.ptr.i218500, align 1 + %conv.i234 = zext i8 %75 to i32 switch i8 %2, label %sw.default.i347 [ i8 46, label %while.body.i237 i8 37, label %sw.bb1.i343 @@ -45118,37 +45113,38 @@ land.rhs.i233: ; preds = %land.rhs.i233.lr.ph ] sw.bb1.i343: ; preds = %land.rhs.i233 - %75 = load i8, ptr %incdec.ptr.i164413, align 1 - %conv2.i345 = zext i8 %75 to i32 + %76 = load i8, ptr %incdec.ptr.i164413, align 1 + %conv2.i345 = zext i8 %76 to i32 %call.i346 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i234, i32 noundef %conv2.i345) - br label %singlematch.exit351 + %77 = icmp eq i32 %call.i346, 0 + br i1 %77, label %while.end.i221, label %while.body.i237 sw.bb3.i304: ; preds = %land.rhs.i233 - %76 = load i8, ptr %incdec.ptr.i164413, align 1 - %cmp.i.i307 = icmp eq i8 %76, 94 + %78 = load i8, ptr %incdec.ptr.i164413, align 1 + %cmp.i.i307 = icmp eq i8 %78, 94 %spec.select.i.i308 = select i1 %cmp.i.i307, ptr %incdec.ptr.i164413, ptr %p.addr.0 %not.cmp.i.i309 = xor i1 %cmp.i.i307, true %incdec.ptr220.i.i310 = getelementptr inbounds nuw i8, ptr %spec.select.i.i308, i64 1 %cmp321.i.i311 = icmp ult ptr %incdec.ptr220.i.i310, %add.ptr4.i305 - br i1 %cmp321.i.i311, label %while.body.i.i317, label %matchbracketclass.exit.i312 + br i1 %cmp321.i.i311, label %while.body.i.i317, label %singlematch.exit351 while.body.i.i317: ; preds = %sw.bb3.i304, %if.end39.i.i327 %incdec.ptr223.i.i318 = phi ptr [ %incdec.ptr2.i.i329, %if.end39.i.i327 ], [ %incdec.ptr220.i.i310, %sw.bb3.i304 ] %p.addr.122.i.i319 = phi ptr [ %p.addr.2.i.i328, %if.end39.i.i327 ], [ %spec.select.i.i308, %sw.bb3.i304 ] - %77 = load i8, ptr %incdec.ptr223.i.i318, align 1 - %cmp6.i.i320 = icmp eq i8 %77, 37 + %79 = load i8, ptr %incdec.ptr223.i.i318, align 1 + %cmp6.i.i320 = icmp eq i8 %79, 37 %incdec.ptr9.i.i321 = getelementptr inbounds nuw i8, ptr %p.addr.122.i.i319, i64 2 - %78 = load i8, ptr %incdec.ptr9.i.i321, align 1 + %80 = load i8, ptr %incdec.ptr9.i.i321, align 1 br i1 %cmp6.i.i320, label %if.then8.i.i339, label %if.else.i.i322 if.then8.i.i339: ; preds = %while.body.i.i317 - %conv10.i.i340 = zext i8 %78 to i32 + %conv10.i.i340 = zext i8 %80 to i32 %call.i.i341 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i234, i32 noundef %conv10.i.i340) %tobool.not.i.i342 = icmp eq i32 %call.i.i341, 0 - br i1 %tobool.not.i.i342, label %if.end39.i.i327, label %matchbracketclass.exit.i312 + br i1 %tobool.not.i.i342, label %if.end39.i.i327, label %matchbracketclass.exit.i312.loopexit if.else.i.i322: ; preds = %while.body.i.i317 - %cmp15.i.i323 = icmp eq i8 %78, 45 + %cmp15.i.i323 = icmp eq i8 %80, 45 br i1 %cmp15.i.i323, label %land.lhs.true.i.i331, label %if.else32.i.i324 land.lhs.true.i.i331: ; preds = %if.else.i.i322 @@ -45157,52 +45153,48 @@ land.lhs.true.i.i331: ; preds = %if.else.i.i322 br i1 %cmp18.i.i333, label %if.then20.i.i334, label %if.else32.i.i324 if.then20.i.i334: ; preds = %land.lhs.true.i.i331 - %cmp24.not.i.i336 = icmp ult i8 %74, %77 + %cmp24.not.i.i336 = icmp ult i8 %75, %79 br i1 %cmp24.not.i.i336, label %if.end39.i.i327, label %land.lhs.true26.i.i337 land.lhs.true26.i.i337: ; preds = %if.then20.i.i334 - %79 = load i8, ptr %add.ptr17.i.i332, align 1 - %cmp28.not.i.i338 = icmp ult i8 %79, %74 - br i1 %cmp28.not.i.i338, label %if.end39.i.i327, label %matchbracketclass.exit.i312 + %81 = load i8, ptr %add.ptr17.i.i332, align 1 + %cmp28.not.i.i338 = icmp ult i8 %81, %75 + br i1 %cmp28.not.i.i338, label %if.end39.i.i327, label %matchbracketclass.exit.i312.loopexit if.else32.i.i324: ; preds = %land.lhs.true.i.i331, %if.else.i.i322 - %cmp34.i.i326 = icmp eq i8 %74, %77 - br i1 %cmp34.i.i326, label %matchbracketclass.exit.i312, label %if.end39.i.i327 + %cmp34.i.i326 = icmp eq i8 %75, %79 + br i1 %cmp34.i.i326, label %matchbracketclass.exit.i312.loopexit, label %if.end39.i.i327 if.end39.i.i327: ; preds = %if.else32.i.i324, %land.lhs.true26.i.i337, %if.then20.i.i334, %if.then8.i.i339 %p.addr.2.i.i328 = phi ptr [ %incdec.ptr9.i.i321, %if.then8.i.i339 ], [ %add.ptr17.i.i332, %land.lhs.true26.i.i337 ], [ %add.ptr17.i.i332, %if.then20.i.i334 ], [ %incdec.ptr223.i.i318, %if.else32.i.i324 ] %incdec.ptr2.i.i329 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i328, i64 1 %cmp3.i.i330 = icmp ult ptr %incdec.ptr2.i.i329, %add.ptr4.i305 - br i1 %cmp3.i.i330, label %while.body.i.i317, label %matchbracketclass.exit.i312, !llvm.loop !150 + br i1 %cmp3.i.i330, label %while.body.i.i317, label %matchbracketclass.exit.i312.loopexit, !llvm.loop !150 -matchbracketclass.exit.i312: ; preds = %if.end39.i.i327, %if.else32.i.i324, %land.lhs.true26.i.i337, %if.then8.i.i339, %sw.bb3.i304 - %retval.0.in.i.i313 = phi i1 [ %cmp.i.i307, %sw.bb3.i304 ], [ %cmp.i.i307, %if.end39.i.i327 ], [ %not.cmp.i.i309, %if.else32.i.i324 ], [ %not.cmp.i.i309, %land.lhs.true26.i.i337 ], [ %not.cmp.i.i309, %if.then8.i.i339 ] - %retval.0.i.i314 = zext i1 %retval.0.in.i.i313 to i32 - br label %singlematch.exit351 +matchbracketclass.exit.i312.loopexit: ; preds = %if.then8.i.i339, %land.lhs.true26.i.i337, %if.else32.i.i324, %if.end39.i.i327 + %retval.0.in.i.i313.ph = phi i1 [ %not.cmp.i.i309, %if.then8.i.i339 ], [ %not.cmp.i.i309, %land.lhs.true26.i.i337 ], [ %not.cmp.i.i309, %if.else32.i.i324 ], [ %cmp.i.i307, %if.end39.i.i327 ] + br i1 %retval.0.in.i.i313.ph, label %while.body.i237, label %while.end.i221 sw.default.i347: ; preds = %land.rhs.i233 - %cmp.i349 = icmp eq i8 %74, %2 - %conv7.i350 = zext i1 %cmp.i349 to i32 - br label %singlematch.exit351 + %cmp.i349.not = icmp eq i8 %75, %2 + br i1 %cmp.i349.not, label %while.body.i237, label %while.end.i221 -singlematch.exit351: ; preds = %sw.bb1.i343, %matchbracketclass.exit.i312, %sw.default.i347 - %retval.0.i315 = phi i32 [ %conv7.i350, %sw.default.i347 ], [ %retval.0.i.i314, %matchbracketclass.exit.i312 ], [ %call.i346, %sw.bb1.i343 ] - %tobool.not.i236 = icmp eq i32 %retval.0.i315, 0 - br i1 %tobool.not.i236, label %while.end.i221, label %while.body.i237 +singlematch.exit351: ; preds = %sw.bb3.i304 + br i1 %cmp.i.i307, label %while.body.i237, label %while.end.i221 -while.body.i237: ; preds = %land.rhs.i233, %singlematch.exit351 +while.body.i237: ; preds = %matchbracketclass.exit.i312.loopexit, %sw.bb1.i343, %sw.default.i347, %land.rhs.i233, %singlematch.exit351 %inc.i238 = add nuw nsw i64 %i.0.i217499, 1 %add.ptr.i218 = getelementptr inbounds nuw i8, ptr %add.ptr96, i64 %inc.i238 %cmp.i220 = icmp ult ptr %add.ptr.i218, %57 br i1 %cmp.i220, label %land.rhs.i233, label %while.end.i221, !llvm.loop !151 -while.end.i221: ; preds = %while.body.i237, %singlematch.exit351 - %i.0.i217.lcssa = phi i64 [ %inc.i238, %while.body.i237 ], [ %i.0.i217499, %singlematch.exit351 ] +while.end.i221: ; preds = %while.body.i237, %singlematch.exit351, %sw.default.i347, %sw.bb1.i343, %matchbracketclass.exit.i312.loopexit + %i.0.i217.lcssa = phi i64 [ %inc.i238, %while.body.i237 ], [ %i.0.i217499, %singlematch.exit351 ], [ %i.0.i217499, %sw.default.i347 ], [ %i.0.i217499, %sw.bb1.i343 ], [ %i.0.i217499, %matchbracketclass.exit.i312.loopexit ] %cmp3.i224503 = icmp sgt i64 %i.0.i217.lcssa, -1 br i1 %cmp3.i224503, label %while.body5.i226.lr.ph, label %return while.body5.i226.lr.ph: ; preds = %cond.true95, %while.end.i221 - %i.0.i217.lcssa605 = phi i64 [ %i.0.i217.lcssa, %while.end.i221 ], [ 0, %cond.true95 ] + %i.0.i217.lcssa609 = phi i64 [ %i.0.i217.lcssa, %while.end.i221 ], [ 0, %cond.true95 ] %add.ptr7.i228 = getelementptr inbounds nuw i8, ptr %retval.0.i181, i64 1 br label %while.body5.i226 @@ -45212,7 +45204,7 @@ while.cond2.i222: ; preds = %while.body5.i226 br i1 %cmp3.i224, label %while.body5.i226, label %return, !llvm.loop !152 while.body5.i226: ; preds = %while.body5.i226.lr.ph, %while.cond2.i222 - %i.1.i223504 = phi i64 [ %i.0.i217.lcssa605, %while.body5.i226.lr.ph ], [ %dec.i232, %while.cond2.i222 ] + %i.1.i223504 = phi i64 [ %i.0.i217.lcssa609, %while.body5.i226.lr.ph ], [ %dec.i232, %while.cond2.i222 ] %add.ptr6.i227 = getelementptr inbounds nuw i8, ptr %add.ptr96, i64 %i.1.i223504 %call8.i229 = tail call fastcc ptr @match(ptr noundef nonnull %ms, ptr noundef nonnull %add.ptr6.i227, ptr noundef nonnull %add.ptr7.i228) %tobool9.not.i230 = icmp eq ptr %call8.i229, null @@ -45220,52 +45212,53 @@ while.body5.i226: ; preds = %while.body5.i226.lr if.else.i244: ; preds = %if.else.i244.lr.ph, %if.then3.i %s.addr.0.i495 = phi ptr [ %s.addr.0, %if.else.i244.lr.ph ], [ %incdec.ptr.i249, %if.then3.i ] - %80 = load ptr, ptr %src_end74, align 8 - %cmp1.i = icmp ult ptr %s.addr.0.i495, %80 + %82 = load ptr, ptr %src_end74, align 8 + %cmp1.i = icmp ult ptr %s.addr.0.i495, %82 br i1 %cmp1.i, label %land.lhs.true.i246, label %return land.lhs.true.i246: ; preds = %if.else.i244 - %81 = load i8, ptr %s.addr.0.i495, align 1 - %conv.i247 = zext i8 %81 to i32 - %82 = load i8, ptr %p.addr.0, align 1 - switch i8 %82, label %sw.default.i395 [ + %83 = load i8, ptr %s.addr.0.i495, align 1 + %conv.i247 = zext i8 %83 to i32 + %84 = load i8, ptr %p.addr.0, align 1 + switch i8 %84, label %sw.default.i395 [ i8 46, label %if.then3.i i8 37, label %sw.bb1.i391 i8 91, label %sw.bb3.i352 ] sw.bb1.i391: ; preds = %land.lhs.true.i246 - %83 = load i8, ptr %incdec.ptr.i164413, align 1 - %conv2.i393 = zext i8 %83 to i32 + %85 = load i8, ptr %incdec.ptr.i164413, align 1 + %conv2.i393 = zext i8 %85 to i32 %call.i394 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i247, i32 noundef %conv2.i393) - br label %singlematch.exit399 + %86 = icmp eq i32 %call.i394, 0 + br i1 %86, label %return, label %if.then3.i sw.bb3.i352: ; preds = %land.lhs.true.i246 - %84 = load i8, ptr %incdec.ptr.i164413, align 1 - %cmp.i.i355 = icmp eq i8 %84, 94 + %87 = load i8, ptr %incdec.ptr.i164413, align 1 + %cmp.i.i355 = icmp eq i8 %87, 94 %spec.select.i.i356 = select i1 %cmp.i.i355, ptr %incdec.ptr.i164413, ptr %p.addr.0 %not.cmp.i.i357 = xor i1 %cmp.i.i355, true %incdec.ptr220.i.i358 = getelementptr inbounds nuw i8, ptr %spec.select.i.i356, i64 1 %cmp321.i.i359 = icmp ult ptr %incdec.ptr220.i.i358, %add.ptr4.i353 - br i1 %cmp321.i.i359, label %while.body.i.i365, label %matchbracketclass.exit.i360 + br i1 %cmp321.i.i359, label %while.body.i.i365, label %singlematch.exit399 while.body.i.i365: ; preds = %sw.bb3.i352, %if.end39.i.i375 %incdec.ptr223.i.i366 = phi ptr [ %incdec.ptr2.i.i377, %if.end39.i.i375 ], [ %incdec.ptr220.i.i358, %sw.bb3.i352 ] %p.addr.122.i.i367 = phi ptr [ %p.addr.2.i.i376, %if.end39.i.i375 ], [ %spec.select.i.i356, %sw.bb3.i352 ] - %85 = load i8, ptr %incdec.ptr223.i.i366, align 1 - %cmp6.i.i368 = icmp eq i8 %85, 37 + %88 = load i8, ptr %incdec.ptr223.i.i366, align 1 + %cmp6.i.i368 = icmp eq i8 %88, 37 %incdec.ptr9.i.i369 = getelementptr inbounds nuw i8, ptr %p.addr.122.i.i367, i64 2 - %86 = load i8, ptr %incdec.ptr9.i.i369, align 1 + %89 = load i8, ptr %incdec.ptr9.i.i369, align 1 br i1 %cmp6.i.i368, label %if.then8.i.i387, label %if.else.i.i370 if.then8.i.i387: ; preds = %while.body.i.i365 - %conv10.i.i388 = zext i8 %86 to i32 + %conv10.i.i388 = zext i8 %89 to i32 %call.i.i389 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i247, i32 noundef %conv10.i.i388) %tobool.not.i.i390 = icmp eq i32 %call.i.i389, 0 - br i1 %tobool.not.i.i390, label %if.end39.i.i375, label %matchbracketclass.exit.i360 + br i1 %tobool.not.i.i390, label %if.end39.i.i375, label %matchbracketclass.exit.i360.loopexit if.else.i.i370: ; preds = %while.body.i.i365 - %cmp15.i.i371 = icmp eq i8 %86, 45 + %cmp15.i.i371 = icmp eq i8 %89, 45 br i1 %cmp15.i.i371, label %land.lhs.true.i.i379, label %if.else32.i.i372 land.lhs.true.i.i379: ; preds = %if.else.i.i370 @@ -45274,40 +45267,36 @@ land.lhs.true.i.i379: ; preds = %if.else.i.i370 br i1 %cmp18.i.i381, label %if.then20.i.i382, label %if.else32.i.i372 if.then20.i.i382: ; preds = %land.lhs.true.i.i379 - %cmp24.not.i.i384 = icmp ult i8 %81, %85 + %cmp24.not.i.i384 = icmp ult i8 %83, %88 br i1 %cmp24.not.i.i384, label %if.end39.i.i375, label %land.lhs.true26.i.i385 land.lhs.true26.i.i385: ; preds = %if.then20.i.i382 - %87 = load i8, ptr %add.ptr17.i.i380, align 1 - %cmp28.not.i.i386 = icmp ult i8 %87, %81 - br i1 %cmp28.not.i.i386, label %if.end39.i.i375, label %matchbracketclass.exit.i360 + %90 = load i8, ptr %add.ptr17.i.i380, align 1 + %cmp28.not.i.i386 = icmp ult i8 %90, %83 + br i1 %cmp28.not.i.i386, label %if.end39.i.i375, label %matchbracketclass.exit.i360.loopexit if.else32.i.i372: ; preds = %land.lhs.true.i.i379, %if.else.i.i370 - %cmp34.i.i374 = icmp eq i8 %81, %85 - br i1 %cmp34.i.i374, label %matchbracketclass.exit.i360, label %if.end39.i.i375 + %cmp34.i.i374 = icmp eq i8 %83, %88 + br i1 %cmp34.i.i374, label %matchbracketclass.exit.i360.loopexit, label %if.end39.i.i375 if.end39.i.i375: ; preds = %if.else32.i.i372, %land.lhs.true26.i.i385, %if.then20.i.i382, %if.then8.i.i387 %p.addr.2.i.i376 = phi ptr [ %incdec.ptr9.i.i369, %if.then8.i.i387 ], [ %add.ptr17.i.i380, %land.lhs.true26.i.i385 ], [ %add.ptr17.i.i380, %if.then20.i.i382 ], [ %incdec.ptr223.i.i366, %if.else32.i.i372 ] %incdec.ptr2.i.i377 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i376, i64 1 %cmp3.i.i378 = icmp ult ptr %incdec.ptr2.i.i377, %add.ptr4.i353 - br i1 %cmp3.i.i378, label %while.body.i.i365, label %matchbracketclass.exit.i360, !llvm.loop !150 + br i1 %cmp3.i.i378, label %while.body.i.i365, label %matchbracketclass.exit.i360.loopexit, !llvm.loop !150 -matchbracketclass.exit.i360: ; preds = %if.end39.i.i375, %if.else32.i.i372, %land.lhs.true26.i.i385, %if.then8.i.i387, %sw.bb3.i352 - %retval.0.in.i.i361 = phi i1 [ %cmp.i.i355, %sw.bb3.i352 ], [ %cmp.i.i355, %if.end39.i.i375 ], [ %not.cmp.i.i357, %if.else32.i.i372 ], [ %not.cmp.i.i357, %land.lhs.true26.i.i385 ], [ %not.cmp.i.i357, %if.then8.i.i387 ] - %retval.0.i.i362 = zext i1 %retval.0.in.i.i361 to i32 - br label %singlematch.exit399 +matchbracketclass.exit.i360.loopexit: ; preds = %if.then8.i.i387, %land.lhs.true26.i.i385, %if.else32.i.i372, %if.end39.i.i375 + %retval.0.in.i.i361.ph = phi i1 [ %not.cmp.i.i357, %if.then8.i.i387 ], [ %not.cmp.i.i357, %land.lhs.true26.i.i385 ], [ %not.cmp.i.i357, %if.else32.i.i372 ], [ %cmp.i.i355, %if.end39.i.i375 ] + br i1 %retval.0.in.i.i361.ph, label %if.then3.i, label %return sw.default.i395: ; preds = %land.lhs.true.i246 - %cmp.i397 = icmp eq i8 %81, %82 - %conv7.i398 = zext i1 %cmp.i397 to i32 - br label %singlematch.exit399 + %cmp.i397.not = icmp eq i8 %83, %84 + br i1 %cmp.i397.not, label %if.then3.i, label %return -singlematch.exit399: ; preds = %sw.bb1.i391, %matchbracketclass.exit.i360, %sw.default.i395 - %retval.0.i363 = phi i32 [ %conv7.i398, %sw.default.i395 ], [ %retval.0.i.i362, %matchbracketclass.exit.i360 ], [ %call.i394, %sw.bb1.i391 ] - %tobool.not.i248 = icmp eq i32 %retval.0.i363, 0 - br i1 %tobool.not.i248, label %return, label %if.then3.i +singlematch.exit399: ; preds = %sw.bb3.i352 + br i1 %cmp.i.i355, label %if.then3.i, label %return -if.then3.i: ; preds = %land.lhs.true.i246, %singlematch.exit399 +if.then3.i: ; preds = %matchbracketclass.exit.i360.loopexit, %sw.bb1.i391, %sw.default.i395, %land.lhs.true.i246, %singlematch.exit399 %incdec.ptr.i249 = getelementptr inbounds nuw i8, ptr %s.addr.0.i495, i64 1 %call.i241 = tail call fastcc ptr @match(ptr noundef nonnull %ms, ptr noundef nonnull %incdec.ptr.i249, ptr noundef nonnull %add.ptr.i240) %cmp.not.i242 = icmp eq ptr %call.i241, null @@ -45321,8 +45310,8 @@ if.end106: ; preds = %sw.default103 %indvars.iv.next = add i64 %indvars.iv, -1 br label %init -return: ; preds = %cond.end, %land.lhs.true.i157, %check_capture.exit.i, %if.else.i, %if.end.i91, %land.lhs.true, %matchbracketclass.exit, %matchbracketclass.exit152, %sw.default103, %init, %if.end30.i, %if.then3.i, %if.else.i244, %singlematch.exit399, %while.cond2.i222, %while.body5.i226, %while.cond2.i, %while.body5.i, %for.cond.i.preheader, %while.end.i221, %while.end.i, %if.then.i89, %capture_to_close.exit, %if.then9.i76, %if.end.i68, %if.then9.i, %if.end.i, %sw.bb93, %if.then63 - %retval.0 = phi ptr [ %cond69, %if.then63 ], [ null, %sw.bb93 ], [ %call6.i, %if.end.i ], [ null, %if.then9.i ], [ %call6.i74, %if.end.i68 ], [ null, %if.then9.i76 ], [ %call4.i, %capture_to_close.exit ], [ null, %if.then.i89 ], [ null, %while.end.i ], [ null, %while.end.i221 ], [ %call.i241493, %for.cond.i.preheader ], [ null, %while.cond2.i ], [ %call8.i, %while.body5.i ], [ null, %while.cond2.i222 ], [ %call8.i229, %while.body5.i226 ], [ %call.i241, %if.then3.i ], [ null, %if.else.i244 ], [ null, %singlematch.exit399 ], [ null, %if.end30.i ], [ null, %sw.default103 ], [ %s.addr.0, %init ], [ null, %cond.end ], [ null, %land.lhs.true.i157 ], [ null, %check_capture.exit.i ], [ null, %if.else.i ], [ null, %if.end.i91 ], [ %call85, %land.lhs.true ], [ null, %matchbracketclass.exit ], [ null, %matchbracketclass.exit152 ] +return: ; preds = %cond.end, %land.lhs.true.i157, %check_capture.exit.i, %if.else.i, %if.end.i91, %land.lhs.true, %matchbracketclass.exit, %matchbracketclass.exit152, %sw.default103, %init, %if.end30.i, %if.then3.i, %if.else.i244, %singlematch.exit399, %sw.default.i395, %sw.bb1.i391, %matchbracketclass.exit.i360.loopexit, %while.cond2.i222, %while.body5.i226, %while.cond2.i, %while.body5.i, %for.cond.i.preheader, %while.end.i221, %while.end.i, %if.then.i89, %capture_to_close.exit, %if.then9.i76, %if.end.i68, %if.then9.i, %if.end.i, %sw.bb93, %if.then63 + %retval.0 = phi ptr [ %cond69, %if.then63 ], [ null, %sw.bb93 ], [ %call6.i, %if.end.i ], [ null, %if.then9.i ], [ %call6.i74, %if.end.i68 ], [ null, %if.then9.i76 ], [ %call4.i, %capture_to_close.exit ], [ null, %if.then.i89 ], [ null, %while.end.i ], [ null, %while.end.i221 ], [ %call.i241493, %for.cond.i.preheader ], [ null, %while.cond2.i ], [ %call8.i, %while.body5.i ], [ null, %while.cond2.i222 ], [ %call8.i229, %while.body5.i226 ], [ null, %matchbracketclass.exit.i360.loopexit ], [ null, %sw.bb1.i391 ], [ null, %sw.default.i395 ], [ %call.i241, %if.then3.i ], [ null, %if.else.i244 ], [ null, %singlematch.exit399 ], [ null, %if.end30.i ], [ null, %sw.default103 ], [ %s.addr.0, %init ], [ null, %cond.end ], [ null, %land.lhs.true.i157 ], [ null, %check_capture.exit.i ], [ null, %if.else.i ], [ null, %if.end.i91 ], [ %call85, %land.lhs.true ], [ null, %matchbracketclass.exit ], [ null, %matchbracketclass.exit152 ] ret ptr %retval.0 } diff --git a/bench/minetest/optimized/reflowscan.cpp.ll b/bench/minetest/optimized/reflowscan.cpp.ll index fd6befeed0d..f9e3761cdfc 100644 --- a/bench/minetest/optimized/reflowscan.cpp.ll +++ b/bench/minetest/optimized/reflowscan.cpp.ll @@ -353,12 +353,11 @@ _ZNK14NodeDefManager3getERK7MapNode.exit: ; preds = %cond.false.i.i, %la %cond-lvalue.i.i = phi ptr [ %add.ptr.i14.i.i, %cond.false.i.i ], [ %add.ptr.i.i.i, %land.lhs.true.i.i ] %liquid_type.i = getelementptr inbounds nuw i8, ptr %cond-lvalue.i.i, i64 3089 %24 = load i8, ptr %liquid_type.i, align 1, !tbaa !69 - %cmp.i240 = icmp ne i8 %24, 0 - %frombool13 = zext i1 %cmp.i240 to i8 + %cmp.i240.not = icmp eq i8 %24, 0 br label %if.end14 if.end14: ; preds = %land.lhs.true.i214, %_ZNK14NodeDefManager3getERK7MapNode.exit, %_ZN10ReflowScan11lookupBlockEiii.exit236 - %was_liquid.0 = phi i8 [ %frombool13, %_ZNK14NodeDefManager3getERK7MapNode.exit ], [ 0, %_ZN10ReflowScan11lookupBlockEiii.exit236 ], [ 0, %land.lhs.true.i214 ] + %was_liquid.0 = phi i1 [ %cmp.i240.not, %_ZNK14NodeDefManager3getERK7MapNode.exit ], [ true, %_ZN10ReflowScan11lookupBlockEiii.exit236 ], [ true, %land.lhs.true.i214 ] %was_ignore.0 = phi i1 [ %cmp, %_ZNK14NodeDefManager3getERK7MapNode.exit ], [ true, %_ZN10ReflowScan11lookupBlockEiii.exit236 ], [ true, %land.lhs.true.i214 ] %conv18 = zext i32 %rem to i64 %conv19 = zext i32 %rem4 to i64 @@ -428,9 +427,9 @@ _ZN10ReflowScan11lookupBlockEiii.exit275: ; preds = %land.lhs.true.i252 for.body: ; preds = %if.end79, %if.end14 %indvars.iv = phi i64 [ 15, %if.end14 ], [ %indvars.iv.next, %if.end79 ] - %conv15487 = phi i32 [ 15, %if.end14 ], [ %65, %if.end79 ] + %conv15487 = phi i32 [ 15, %if.end14 ], [ %64, %if.end79 ] %was_ignore.1486 = phi i1 [ %was_ignore.0, %if.end14 ], [ %cmp25, %if.end79 ] - %was_liquid.1485 = phi i8 [ %was_liquid.0, %if.end14 ], [ %frombool28, %if.end79 ] + %was_liquid.1485 = phi i1 [ %was_liquid.0, %if.end14 ], [ %65, %if.end79 ] %was_checked.0484 = phi i8 [ 0, %if.end14 ], [ %was_checked.1, %if.end79 ] %was_pushed.0483 = phi i8 [ 0, %if.end14 ], [ %was_pushed.1, %if.end79 ] %34 = load ptr, ptr %data.i276, align 8, !tbaa !23 @@ -469,10 +468,8 @@ _ZNK14NodeDefManager3getERK7MapNode.exit299: ; preds = %cond.false.i.i292, %liquid_type.i300 = getelementptr inbounds nuw i8, ptr %cond-lvalue.i.i294, i64 3089 %39 = load i8, ptr %liquid_type.i300, align 1, !tbaa !69 %cmp.i301 = icmp ne i8 %39, 0 - %frombool28 = zext i1 %cmp.i301 to i8 %or.cond.not481 = or i1 %was_ignore.1486, %cmp25 - %40 = icmp eq i8 %was_liquid.1485, 0 - %cmp36 = xor i1 %40, %cmp.i301 + %cmp36 = xor i1 %was_liquid.1485, %cmp.i301 %or.cond473 = select i1 %or.cond.not481, i1 true, i1 %cmp36 br i1 %or.cond473, label %if.end79, label %if.else38 @@ -500,15 +497,15 @@ _ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit: ; preds = %lor.lhs.false br i1 %call7.i, label %if.then46, label %if.end79 if.then46: ; preds = %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit, %lor.lhs.false3.i, %lor.lhs.false.i, %lor.lhs.false43, %if.then40 - %41 = load ptr, ptr %m_liquid_queue65, align 8, !tbaa !13 + %40 = load ptr, ptr %m_liquid_queue65, align 8, !tbaa !13 call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %ref.tmp) #15 - %42 = load i16, ptr %m_rel_block_pos67, align 2, !tbaa !20 - %add.i304 = add i16 %42, %conv69 - %43 = load i16, ptr %Y.i327, align 8, !tbaa !21 - %44 = trunc i64 %indvars.iv to i16 - %add8.i306 = add i16 %43, %44 - %45 = load i16, ptr %Z.i330, align 2, !tbaa !22 - %add13.i = add i16 %45, %conv73 + %41 = load i16, ptr %m_rel_block_pos67, align 2, !tbaa !20 + %add.i304 = add i16 %41, %conv69 + %42 = load i16, ptr %Y.i327, align 8, !tbaa !21 + %43 = trunc i64 %indvars.iv to i16 + %add8.i306 = add i16 %42, %43 + %44 = load i16, ptr %Z.i330, align 2, !tbaa !22 + %add13.i = add i16 %44, %conv73 %retval.sroa.3.0.insert.ext.i = zext i16 %add13.i to i48 %retval.sroa.3.0.insert.shift.i = shl nuw i48 %retval.sroa.3.0.insert.ext.i, 32 %retval.sroa.2.0.insert.ext.i = zext i16 %add8.i306 to i48 @@ -517,30 +514,30 @@ if.then46: ; preds = %_ZN10ReflowScan28is %retval.sroa.0.0.insert.ext.i = zext i16 %add.i304 to i48 %retval.sroa.0.0.insert.insert.i = or disjoint i48 %retval.sroa.2.0.insert.insert.i, %retval.sroa.0.0.insert.ext.i store i48 %retval.sroa.0.0.insert.insert.i, ptr %ref.tmp, align 8 - %call.i.i = call { ptr, i8 } @_ZNSt8_Rb_treeIN3irr4core8vector3dIsEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %41, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp) - %46 = extractvalue { ptr, i8 } %call.i.i, 1 - %47 = and i8 %46, 1 - %tobool.not.i308.not = icmp eq i8 %47, 0 + %call.i.i = call { ptr, i8 } @_ZNSt8_Rb_treeIN3irr4core8vector3dIsEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp) + %45 = extractvalue { ptr, i8 } %call.i.i, 1 + %46 = and i8 %45, 1 + %tobool.not.i308.not = icmp eq i8 %46, 0 br i1 %tobool.not.i308.not, label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit, label %if.then.i309 if.then.i309: ; preds = %if.then46 - %_M_finish.i.i.i310 = getelementptr inbounds nuw i8, ptr %41, i64 96 - %48 = load ptr, ptr %_M_finish.i.i.i310, align 8, !tbaa !98 - %_M_last.i.i.i = getelementptr inbounds nuw i8, ptr %41, i64 112 - %49 = load ptr, ptr %_M_last.i.i.i, align 8, !tbaa !101 - %add.ptr.i.i.i311 = getelementptr inbounds i8, ptr %49, i64 -6 - %cmp.not.i.i.i = icmp eq ptr %48, %add.ptr.i.i.i311 + %_M_finish.i.i.i310 = getelementptr inbounds nuw i8, ptr %40, i64 96 + %47 = load ptr, ptr %_M_finish.i.i.i310, align 8, !tbaa !98 + %_M_last.i.i.i = getelementptr inbounds nuw i8, ptr %40, i64 112 + %48 = load ptr, ptr %_M_last.i.i.i, align 8, !tbaa !101 + %add.ptr.i.i.i311 = getelementptr inbounds i8, ptr %48, i64 -6 + %cmp.not.i.i.i = icmp eq ptr %47, %add.ptr.i.i.i311 br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then.i309 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %48, ptr noundef nonnull align 8 dereferenceable(6) %ref.tmp, i64 6, i1 false), !tbaa.struct !14 - %50 = load ptr, ptr %_M_finish.i.i.i310, align 8, !tbaa !98 - %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %50, i64 6 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %47, ptr noundef nonnull align 8 dereferenceable(6) %ref.tmp, i64 6, i1 false), !tbaa.struct !14 + %49 = load ptr, ptr %_M_finish.i.i.i310, align 8, !tbaa !98 + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %49, i64 6 store ptr %incdec.ptr.i.i.i, ptr %_M_finish.i.i.i310, align 8, !tbaa !98 br label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit if.else.i.i.i: ; preds = %if.then.i309 - %m_queue.i = getelementptr inbounds nuw i8, ptr %41, i64 48 + %m_queue.i = getelementptr inbounds nuw i8, ptr %40, i64 48 call void @_ZNSt5dequeIN3irr4core8vector3dIsEESaIS3_EE16_M_push_back_auxIJRKS3_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %m_queue.i, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp) br label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit @@ -549,19 +546,19 @@ _ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit: ; preds = %if.el br label %if.end79 if.else55: ; preds = %if.else38 - %51 = and i8 %was_pushed.0483, 1 - %tobool56.not = icmp eq i8 %51, 0 + %50 = and i8 %was_pushed.0483, 1 + %tobool56.not = icmp eq i8 %50, 0 br i1 %tobool56.not, label %land.lhs.true, label %if.end79 land.lhs.true: ; preds = %if.else55 %floodable = getelementptr inbounds nuw i8, ptr %cond-lvalue.i.i294, i64 3174 - %52 = load i8, ptr %floodable, align 2, !tbaa !102, !range !103, !noundef !104 - %tobool57.not = icmp eq i8 %52, 0 + %51 = load i8, ptr %floodable, align 2, !tbaa !102, !range !103, !noundef !104 + %tobool57.not = icmp eq i8 %51, 0 br i1 %tobool57.not, label %lor.lhs.false58, label %if.then64 lor.lhs.false58: ; preds = %land.lhs.true - %53 = and i8 %was_checked.0484, 1 - %tobool59.not = icmp eq i8 %53, 0 + %52 = and i8 %was_checked.0484, 1 + %tobool59.not = icmp eq i8 %52, 0 br i1 %tobool59.not, label %land.lhs.true60, label %if.end79 land.lhs.true60: ; preds = %lor.lhs.false58 @@ -582,16 +579,16 @@ _ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit323: ; preds = %lor.lhs.fa br i1 %call7.i322, label %if.then64, label %if.end79 if.then64: ; preds = %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit323, %lor.lhs.false3.i317, %lor.lhs.false.i314, %land.lhs.true60, %land.lhs.true - %54 = load ptr, ptr %m_liquid_queue65, align 8, !tbaa !13 + %53 = load ptr, ptr %m_liquid_queue65, align 8, !tbaa !13 call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %ref.tmp66) #15 - %55 = load i16, ptr %m_rel_block_pos67, align 2, !tbaa !20 - %add.i326 = add i16 %55, %conv69 - %56 = load i16, ptr %Y.i327, align 8, !tbaa !21 - %57 = trunc i64 %indvars.iv to i16 - %58 = add i16 %57, 1 - %add8.i329 = add i16 %58, %56 - %59 = load i16, ptr %Z.i330, align 2, !tbaa !22 - %add13.i332 = add i16 %59, %conv73 + %54 = load i16, ptr %m_rel_block_pos67, align 2, !tbaa !20 + %add.i326 = add i16 %54, %conv69 + %55 = load i16, ptr %Y.i327, align 8, !tbaa !21 + %56 = trunc i64 %indvars.iv to i16 + %57 = add i16 %56, 1 + %add8.i329 = add i16 %57, %55 + %58 = load i16, ptr %Z.i330, align 2, !tbaa !22 + %add13.i332 = add i16 %58, %conv73 %retval.sroa.3.0.insert.ext.i333 = zext i16 %add13.i332 to i48 %retval.sroa.3.0.insert.shift.i334 = shl nuw i48 %retval.sroa.3.0.insert.ext.i333, 32 %retval.sroa.2.0.insert.ext.i335 = zext i16 %add8.i329 to i48 @@ -600,30 +597,30 @@ if.then64: ; preds = %_ZN10ReflowScan28is %retval.sroa.0.0.insert.ext.i338 = zext i16 %add.i326 to i48 %retval.sroa.0.0.insert.insert.i339 = or disjoint i48 %retval.sroa.2.0.insert.insert.i337, %retval.sroa.0.0.insert.ext.i338 store i48 %retval.sroa.0.0.insert.insert.i339, ptr %ref.tmp66, align 8 - %call.i.i340 = call { ptr, i8 } @_ZNSt8_Rb_treeIN3irr4core8vector3dIsEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %54, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp66) - %60 = extractvalue { ptr, i8 } %call.i.i340, 1 - %61 = and i8 %60, 1 - %tobool.not.i341.not = icmp eq i8 %61, 0 + %call.i.i340 = call { ptr, i8 } @_ZNSt8_Rb_treeIN3irr4core8vector3dIsEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_(ptr noundef nonnull align 8 dereferenceable(48) %53, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp66) + %59 = extractvalue { ptr, i8 } %call.i.i340, 1 + %60 = and i8 %59, 1 + %tobool.not.i341.not = icmp eq i8 %60, 0 br i1 %tobool.not.i341.not, label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit351, label %if.then.i342 if.then.i342: ; preds = %if.then64 - %_M_finish.i.i.i343 = getelementptr inbounds nuw i8, ptr %54, i64 96 - %62 = load ptr, ptr %_M_finish.i.i.i343, align 8, !tbaa !98 - %_M_last.i.i.i344 = getelementptr inbounds nuw i8, ptr %54, i64 112 - %63 = load ptr, ptr %_M_last.i.i.i344, align 8, !tbaa !101 - %add.ptr.i.i.i345 = getelementptr inbounds i8, ptr %63, i64 -6 - %cmp.not.i.i.i346 = icmp eq ptr %62, %add.ptr.i.i.i345 + %_M_finish.i.i.i343 = getelementptr inbounds nuw i8, ptr %53, i64 96 + %61 = load ptr, ptr %_M_finish.i.i.i343, align 8, !tbaa !98 + %_M_last.i.i.i344 = getelementptr inbounds nuw i8, ptr %53, i64 112 + %62 = load ptr, ptr %_M_last.i.i.i344, align 8, !tbaa !101 + %add.ptr.i.i.i345 = getelementptr inbounds i8, ptr %62, i64 -6 + %cmp.not.i.i.i346 = icmp eq ptr %61, %add.ptr.i.i.i345 br i1 %cmp.not.i.i.i346, label %if.else.i.i.i349, label %if.then.i.i.i347 if.then.i.i.i347: ; preds = %if.then.i342 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %62, ptr noundef nonnull align 8 dereferenceable(6) %ref.tmp66, i64 6, i1 false), !tbaa.struct !14 - %64 = load ptr, ptr %_M_finish.i.i.i343, align 8, !tbaa !98 - %incdec.ptr.i.i.i348 = getelementptr inbounds nuw i8, ptr %64, i64 6 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %61, ptr noundef nonnull align 8 dereferenceable(6) %ref.tmp66, i64 6, i1 false), !tbaa.struct !14 + %63 = load ptr, ptr %_M_finish.i.i.i343, align 8, !tbaa !98 + %incdec.ptr.i.i.i348 = getelementptr inbounds nuw i8, ptr %63, i64 6 store ptr %incdec.ptr.i.i.i348, ptr %_M_finish.i.i.i343, align 8, !tbaa !98 br label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit351 if.else.i.i.i349: ; preds = %if.then.i342 - %m_queue.i350 = getelementptr inbounds nuw i8, ptr %54, i64 48 + %m_queue.i350 = getelementptr inbounds nuw i8, ptr %53, i64 48 call void @_ZNSt5dequeIN3irr4core8vector3dIsEESaIS3_EE16_M_push_back_auxIJRKS3_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %m_queue.i350, ptr noundef nonnull align 2 dereferenceable(6) %ref.tmp66) br label %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit351 @@ -635,8 +632,9 @@ if.end79: ; preds = %_ZN11UniqueQueueIN3 %was_pushed.1 = phi i8 [ %was_pushed.0483, %if.else55 ], [ %was_pushed.0483, %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit351 ], [ %was_pushed.0483, %lor.lhs.false58 ], [ %was_pushed.0483, %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit323 ], [ 0, %_ZNK14NodeDefManager3getERK7MapNode.exit299 ], [ 1, %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit ], [ 0, %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit ] %was_checked.1 = phi i8 [ %was_checked.0484, %if.else55 ], [ %was_checked.0484, %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit351 ], [ %was_checked.0484, %lor.lhs.false58 ], [ %was_checked.0484, %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit323 ], [ 0, %_ZNK14NodeDefManager3getERK7MapNode.exit299 ], [ 1, %_ZN11UniqueQueueIN3irr4core8vector3dIsEEE9push_backERKS3_.exit ], [ 1, %_ZN10ReflowScan28isLiquidHorizontallyFlowableEiii.exit ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %65 = trunc i64 %indvars.iv.next to i32 + %64 = trunc i64 %indvars.iv.next to i32 %cmp16.not = icmp eq i64 %indvars.iv, 0 + %65 = xor i1 %cmp.i301, true br i1 %cmp16.not, label %for.cond.cleanup, label %for.body, !llvm.loop !105 if.then86: ; preds = %_ZN10ReflowScan11lookupBlockEiii.exit275, %for.cond.cleanup diff --git a/bench/miniaudio/optimized/unity.c.ll b/bench/miniaudio/optimized/unity.c.ll index 7ca99806c49..845c73916e8 100644 --- a/bench/miniaudio/optimized/unity.c.ll +++ b/bench/miniaudio/optimized/unity.c.ll @@ -59855,7 +59855,7 @@ if.end26.i.i: ; preds = %if.else.i.i, %if.th ma_dr_flac__seek_to_first_frame.exit: ; preds = %while.body.i.i, %if.then.i.i, %if.then11.i.i, %if.else.i.i, %if.end26.i.i %retval.0.i.i = phi i32 [ 1, %if.end26.i.i ], [ 0, %if.then.i.i ], [ 0, %if.then11.i.i ], [ 0, %if.else.i.i ], [ 0, %while.body.i.i ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(168) %currentFLACFrame.i65, i8 0, i64 168, i1 false) - br i1 %ret.known.tr136, label %57, label %return.thread + br i1 %ret.known.tr136, label %58, label %return.thread if.else: ; preds = %if.end6 %6 = load i64, ptr %totalPCMFrameCount, align 8 @@ -59874,7 +59874,7 @@ if.then21: ; preds = %if.then17 %sub24 = sub nuw i32 %7, %conv store i32 %sub24, ptr %pcmFramesRemaining34, align 8 store i64 %spec.select, ptr %currentPCMFrame, align 8 - br i1 %ret.known.tr136, label %57, label %return.thread + br i1 %ret.known.tr136, label %58, label %return.thread if.else27: ; preds = %if.else %sub29 = sub nuw i64 %0, %spec.select @@ -59890,7 +59890,7 @@ if.then38: ; preds = %if.else27 %add = add i32 %9, %conv30 store i32 %add, ptr %pcmFramesRemaining34, align 8 store i64 %spec.select, ptr %currentPCMFrame, align 8 - br i1 %ret.known.tr136, label %57, label %return.thread + br i1 %ret.known.tr136, label %58, label %return.thread if.end43: ; preds = %if.else27, %if.then17 %10 = load i32, ptr %container, align 8 @@ -60199,15 +60199,7 @@ for.cond52.backedge.i: ; preds = %if.else96.i, %if.th if.then81.i: ; preds = %if.then76.i %cmp83.i = icmp eq i64 %spec.select, %runningPCMFrameCount.0.ph117.i - br i1 %cmp83.i, label %if.then76, label %if.end86.i - -if.end86.i: ; preds = %if.then81.i - %sub82.i = sub i64 %spec.select, %runningPCMFrameCount.0.ph117.i - store i64 %runningPCMFrameCount.0.ph117.i, ptr %currentPCMFrame, align 8 - %call88.i = tail call fastcc i64 @ma_dr_flac__seek_forward_by_pcm_frames(ptr noundef nonnull %pFlac, i64 noundef %sub82.i) - %cmp89.i = icmp eq i64 %call88.i, %sub82.i - %conv90.i = zext i1 %cmp89.i to i32 - br label %if.end74 + br i1 %cmp83.i, label %if.then76, label %if.end74 if.else96.i: ; preds = %if.end72.i %call.i.i66 = tail call fastcc i32 @ma_dr_flac__seek_flac_frame(ptr noundef nonnull %pFlac) @@ -60259,37 +60251,40 @@ land.lhs.true65: ; preds = %if.then61.land.lhs. if.then71: ; preds = %land.lhs.true65 %call72 = tail call fastcc i32 @ma_dr_flac__seek_to_pcm_frame__brute_force(ptr noundef %pFlac, i64 noundef %spec.select) - br label %if.end74 + %57 = icmp eq i32 %call72, 0 + br i1 %57, label %if.else78, label %if.then76 -if.end74: ; preds = %if.end86.i, %if.then71 - %wasSuccessful.0 = phi i32 [ %call72, %if.then71 ], [ %conv90.i, %if.end86.i ] - %tobool75.not = icmp eq i32 %wasSuccessful.0, 0 - br i1 %tobool75.not, label %if.else78, label %if.then76 +if.end74: ; preds = %if.then81.i + %sub82.i = sub i64 %spec.select, %runningPCMFrameCount.0.ph117.i + store i64 %runningPCMFrameCount.0.ph117.i, ptr %currentPCMFrame, align 8 + %call88.i = tail call fastcc i64 @ma_dr_flac__seek_forward_by_pcm_frames(ptr noundef nonnull %pFlac, i64 noundef %sub82.i) + %cmp89.i.not = icmp eq i64 %call88.i, %sub82.i + br i1 %cmp89.i.not, label %if.then76, label %if.else78 -if.then76: ; preds = %if.then81.i, %if.then49, %if.then61, %if.end74, %if.then70.i +if.then76: ; preds = %if.then81.i, %if.then49, %if.then61, %if.end74, %if.then71, %if.then70.i store i64 %spec.select, ptr %currentPCMFrame, align 8 - br i1 %ret.known.tr136, label %57, label %return.thread + br i1 %ret.known.tr136, label %58, label %return.thread if.else78.sink.split: ; preds = %if.then2.i.i, %if.end29.i.i.i %add31.i.i.i.sink = phi i64 [ %add31.i.i.i, %if.end29.i.i.i ], [ %12, %if.then2.i.i ] store i64 %add31.i.i.i.sink, ptr %currentBytePos.i, align 8 br label %if.else78 -if.else78: ; preds = %while.body.i.i76, %while.body.i.i74.i, %for.cond52.outer.loopexit.i, %while.body.i.i.i, %for.cond52.backedge.i, %if.then76.i, %if.else96.i, %if.else78.sink.split, %for.cond52.preheader.i, %while.end.i.i66.i, %if.else.i59.i, %if.then2.i82.i, %if.else.i.i54, %if.then11.i.i73, %if.then.i.i67, %while.end.i.i.i, %if.else.i50.i, %if.then2.i.i, %if.then66.i, %if.end47.i, %land.lhs.true65, %if.end74 +if.else78: ; preds = %while.body.i.i76, %while.body.i.i74.i, %for.cond52.outer.loopexit.i, %while.body.i.i.i, %for.cond52.backedge.i, %if.then76.i, %if.else96.i, %if.else78.sink.split, %if.then71, %for.cond52.preheader.i, %while.end.i.i66.i, %if.else.i59.i, %if.then2.i82.i, %if.else.i.i54, %if.then11.i.i73, %if.then.i.i67, %while.end.i.i.i, %if.else.i50.i, %if.then2.i.i, %if.then66.i, %if.end47.i, %land.lhs.true65, %if.end74 %call79 = tail call i32 @ma_dr_flac_seek_to_pcm_frame(ptr noundef nonnull %pFlac, i64 noundef %0) %cmp80 = icmp eq i32 %call79, 0 br i1 %cmp80, label %if.end, label %return return: ; preds = %if.end, %if.end3, %if.else78 %retval.0 = phi i32 [ 1, %if.end ], [ 0, %if.end3 ], [ 0, %if.else78 ] - br i1 %ret.known.tr136, label %57, label %return.thread + br i1 %ret.known.tr136, label %58, label %return.thread -57: ; preds = %if.then76, %if.then38, %if.then21, %ma_dr_flac__seek_to_first_frame.exit, %return +58: ; preds = %if.then76, %if.then38, %if.then21, %ma_dr_flac__seek_to_first_frame.exit, %return br label %return.thread -return.thread: ; preds = %entry, %if.then76, %if.then38, %if.then21, %ma_dr_flac__seek_to_first_frame.exit, %return, %57 - %58 = phi i32 [ 0, %57 ], [ %retval.0, %return ], [ %retval.0.i.i, %ma_dr_flac__seek_to_first_frame.exit ], [ 1, %if.then21 ], [ 1, %if.then38 ], [ 1, %if.then76 ], [ 0, %entry ] - ret i32 %58 +return.thread: ; preds = %entry, %if.then76, %if.then38, %if.then21, %ma_dr_flac__seek_to_first_frame.exit, %return, %58 + %59 = phi i32 [ 0, %58 ], [ %retval.0, %return ], [ %retval.0.i.i, %ma_dr_flac__seek_to_first_frame.exit ], [ 1, %if.then21 ], [ 1, %if.then38 ], [ 1, %if.then76 ], [ 0, %entry ] + ret i32 %59 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable diff --git a/bench/mitsuba3/optimized/mesh.cpp.ll b/bench/mitsuba3/optimized/mesh.cpp.ll index e5d78d830d7..67be059eb8b 100644 --- a/bench/mitsuba3/optimized/mesh.cpp.ll +++ b/bench/mitsuba3/optimized/mesh.cpp.ll @@ -9332,7 +9332,7 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %11 = getelementptr inbounds nuw i8, ptr %0, i64 64 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(49) %0, i8 0, i64 49, i1 false) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %11, i8 0, i64 64, i1 false) - br label %401 + br label %400 12: ; preds = %7 %13 = getelementptr inbounds nuw i8, ptr %1, i64 576 @@ -9346,7 +9346,7 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %18 = getelementptr inbounds nuw i8, ptr %0, i64 64 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(49) %0, i8 0, i64 49, i1 false) tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %18, i8 0, i64 64, i1 false) - br label %401 + br label %400 19: ; preds = %12 %20 = getelementptr inbounds nuw i8, ptr %1, i64 568 @@ -9474,8 +9474,8 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %116 = fmul contract <4 x float> %115, %115 %shift = shufflevector <4 x float> %116, <4 x float> poison, <4 x i32> %117 = fadd contract <4 x float> %116, %shift - %shift2280 = shufflevector <4 x float> %116, <4 x float> poison, <4 x i32> - %118 = fadd contract <4 x float> %shift2280, %117 + %shift2281 = shufflevector <4 x float> %116, <4 x float> poison, <4 x i32> + %118 = fadd contract <4 x float> %shift2281, %117 %119 = extractelement <4 x float> %118, i64 0 %120 = tail call contract noundef float @llvm.sqrt.f32(float %119) %121 = fdiv contract float 1.000000e+00, %120 @@ -9525,10 +9525,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %151 = fmul contract <4 x float> %148, %150 %152 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %146, <4 x float> %147, <4 x float> %151) %153 = fmul contract <4 x float> %152, %152 - %shift2281 = shufflevector <4 x float> %153, <4 x float> poison, <4 x i32> - %154 = fadd contract <4 x float> %153, %shift2281 - %shift2282 = shufflevector <4 x float> %153, <4 x float> poison, <4 x i32> - %155 = fadd contract <4 x float> %shift2282, %154 + %shift2282 = shufflevector <4 x float> %153, <4 x float> poison, <4 x i32> + %154 = fadd contract <4 x float> %153, %shift2282 + %shift2283 = shufflevector <4 x float> %153, <4 x float> poison, <4 x i32> + %155 = fadd contract <4 x float> %shift2283, %154 %156 = extractelement <4 x float> %155, i64 0 %157 = tail call contract noundef float @llvm.sqrt.f32(float %156) %158 = fdiv contract float 1.000000e+00, %157 @@ -9578,10 +9578,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %188 = fmul contract <4 x float> %185, %187 %189 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %183, <4 x float> %184, <4 x float> %188) %190 = fmul contract <4 x float> %189, %189 - %shift2283 = shufflevector <4 x float> %190, <4 x float> poison, <4 x i32> - %191 = fadd contract <4 x float> %190, %shift2283 - %shift2284 = shufflevector <4 x float> %190, <4 x float> poison, <4 x i32> - %192 = fadd contract <4 x float> %shift2284, %191 + %shift2284 = shufflevector <4 x float> %190, <4 x float> poison, <4 x i32> + %191 = fadd contract <4 x float> %190, %shift2284 + %shift2285 = shufflevector <4 x float> %190, <4 x float> poison, <4 x i32> + %192 = fadd contract <4 x float> %shift2285, %191 %193 = extractelement <4 x float> %192, i64 0 %194 = tail call contract noundef float @llvm.sqrt.f32(float %193) %195 = fdiv contract float 1.000000e+00, %194 @@ -9598,10 +9598,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %206 = fmul contract <4 x float> %203, %205 %207 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %201, <4 x float> %202, <4 x float> %206) %208 = fmul contract <4 x float> %207, %207 - %shift2285 = shufflevector <4 x float> %208, <4 x float> poison, <4 x i32> - %209 = fadd contract <4 x float> %208, %shift2285 - %shift2286 = shufflevector <4 x float> %208, <4 x float> poison, <4 x i32> - %210 = fadd contract <4 x float> %shift2286, %209 + %shift2286 = shufflevector <4 x float> %208, <4 x float> poison, <4 x i32> + %209 = fadd contract <4 x float> %208, %shift2286 + %shift2287 = shufflevector <4 x float> %208, <4 x float> poison, <4 x i32> + %210 = fadd contract <4 x float> %shift2287, %209 %211 = extractelement <4 x float> %210, i64 0 %212 = tail call contract noundef float @llvm.sqrt.f32(float %211) %213 = fdiv contract float 1.000000e+00, %212 @@ -9611,10 +9611,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %217 = load <4 x float>, ptr %2, align 16 %218 = fsub contract <4 x float> %33, %217 %219 = fmul contract <4 x float> %218, %218 - %shift2287 = shufflevector <4 x float> %219, <4 x float> poison, <4 x i32> - %220 = fadd contract <4 x float> %219, %shift2287 - %shift2288 = shufflevector <4 x float> %219, <4 x float> poison, <4 x i32> - %221 = fadd contract <4 x float> %shift2288, %220 + %shift2288 = shufflevector <4 x float> %219, <4 x float> poison, <4 x i32> + %220 = fadd contract <4 x float> %219, %shift2288 + %shift2289 = shufflevector <4 x float> %219, <4 x float> poison, <4 x i32> + %221 = fadd contract <4 x float> %shift2289, %220 %222 = extractelement <4 x float> %221, i64 0 %223 = tail call contract noundef float @llvm.sqrt.f32(float %222) %224 = fdiv contract float 1.000000e+00, %223 @@ -9623,10 +9623,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %227 = fmul contract <4 x float> %218, %226 %228 = fsub contract <4 x float> %38, %217 %229 = fmul contract <4 x float> %228, %228 - %shift2289 = shufflevector <4 x float> %229, <4 x float> poison, <4 x i32> - %230 = fadd contract <4 x float> %229, %shift2289 - %shift2290 = shufflevector <4 x float> %229, <4 x float> poison, <4 x i32> - %231 = fadd contract <4 x float> %shift2290, %230 + %shift2290 = shufflevector <4 x float> %229, <4 x float> poison, <4 x i32> + %230 = fadd contract <4 x float> %229, %shift2290 + %shift2291 = shufflevector <4 x float> %229, <4 x float> poison, <4 x i32> + %231 = fadd contract <4 x float> %shift2291, %230 %232 = extractelement <4 x float> %231, i64 0 %233 = tail call contract noundef float @llvm.sqrt.f32(float %232) %234 = fdiv contract float 1.000000e+00, %233 @@ -9635,10 +9635,10 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E %237 = fmul contract <4 x float> %228, %236 %238 = fsub contract <4 x float> %43, %217 %239 = fmul contract <4 x float> %238, %238 - %shift2291 = shufflevector <4 x float> %239, <4 x float> poison, <4 x i32> - %240 = fadd contract <4 x float> %239, %shift2291 - %shift2292 = shufflevector <4 x float> %239, <4 x float> poison, <4 x i32> - %241 = fadd contract <4 x float> %shift2292, %240 + %shift2292 = shufflevector <4 x float> %239, <4 x float> poison, <4 x i32> + %240 = fadd contract <4 x float> %239, %shift2292 + %shift2293 = shufflevector <4 x float> %239, <4 x float> poison, <4 x i32> + %241 = fadd contract <4 x float> %shift2293, %240 %242 = extractelement <4 x float> %241, i64 0 %243 = tail call contract noundef float @llvm.sqrt.f32(float %242) %244 = fdiv contract float 1.000000e+00, %243 @@ -9692,7 +9692,7 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(33) %278, i8 0, i64 33, i1 false) %279 = getelementptr inbounds nuw i8, ptr %0, i64 80 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %279, i8 0, i64 48, i1 false) - br i1 %.not2279, label %337, label %280 + br i1 %.not2279, label %336, label %280 280: ; preds = %19 %281 = tail call contract noundef <4 x float> @llvm.x86.sse.min.ps(<4 x float> splat (float 1.000000e+00), <4 x float> %.sroa.0.2) @@ -9765,109 +9765,107 @@ define weak_odr void @_ZNK7mitsuba4MeshIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4E 332: ; preds = %280 %333 = and i1 %323, %326 - %334 = fcmp contract ogt float %.sroa.0.4.vec.extract2199, 0.000000e+00 - %or.cond1839 = select i1 %333, i1 %334, i1 false - br i1 %326, label %thread-pre-split, label %335 - -335: ; preds = %332 - %336 = fcmp contract ogt float %.sroa.0.8.vec.extract2208, 0.000000e+00 + %334 = fcmp contract ule float %.sroa.0.4.vec.extract2199, 0.000000e+00 + %not. = xor i1 %333, true + %or.cond1839 = select i1 %not., i1 true, i1 %334 + %335 = fcmp contract ule float %.sroa.0.8.vec.extract2208, 0.000000e+00 + %spec.select2280 = select i1 %326, i1 %or.cond1839, i1 %335 br label %thread-pre-split -337: ; preds = %19 +336: ; preds = %19 %.sroa.0.0.vec.extract2193 = extractelement <4 x float> %.sroa.0.2, i64 0 - %338 = fcmp contract olt float %.sroa.0.0.vec.extract2193, 0.000000e+00 - %. = select contract i1 %338, float 1.000000e+00, float 0.000000e+00 + %337 = fcmp contract olt float %.sroa.0.0.vec.extract2193, 0.000000e+00 + %. = select contract i1 %337, float 1.000000e+00, float 0.000000e+00 %.sroa.02212.0.vec.insert2238 = insertelement <4 x float> , float %., i64 0 %.sroa.0.4.vec.extract = extractelement <4 x float> %.sroa.0.2, i64 1 - %339 = fcmp contract olt float %.sroa.0.4.vec.extract, 0.000000e+00 - %340 = select contract i1 %339, float 1.000000e+00, float 0.000000e+00 - %.sroa.02212.4.vec.insert = insertelement <4 x float> %.sroa.02212.0.vec.insert2238, float %340, i64 1 + %338 = fcmp contract olt float %.sroa.0.4.vec.extract, 0.000000e+00 + %339 = select contract i1 %338, float 1.000000e+00, float 0.000000e+00 + %.sroa.02212.4.vec.insert = insertelement <4 x float> %.sroa.02212.0.vec.insert2238, float %339, i64 1 %.sroa.0.8.vec.extract = extractelement <4 x float> %.sroa.0.2, i64 2 - %341 = fcmp contract olt float %.sroa.0.8.vec.extract, 0.000000e+00 - %342 = select contract i1 %341, float 1.000000e+00, float 0.000000e+00 - %.sroa.02212.8.vec.insert = insertelement <4 x float> %.sroa.02212.4.vec.insert, float %342, i64 2 - %343 = fadd contract float %., %340 - %344 = fadd contract float %342, %343 - %345 = fcmp contract oeq float %344, 0.000000e+00 - %346 = select i1 %345, i8 7, i8 0 - %347 = bitcast i8 %346 to <8 x i1> - %348 = shufflevector <8 x i1> %347, <8 x i1> poison, <4 x i32> - %349 = select contract <4 x i1> %348, <4 x float> , <4 x float> %.sroa.02212.8.vec.insert - %350 = fdiv contract float 1.000000e+00, %344 - %351 = select i1 %345, float 0x3FD5555560000000, float %350 - %352 = insertelement <4 x float> poison, float %351, i64 0 - %353 = shufflevector <4 x float> %352, <4 x float> poison, <4 x i32> zeroinitializer - %354 = fmul contract <4 x float> %353, %349 + %340 = fcmp contract olt float %.sroa.0.8.vec.extract, 0.000000e+00 + %341 = select contract i1 %340, float 1.000000e+00, float 0.000000e+00 + %.sroa.02212.8.vec.insert = insertelement <4 x float> %.sroa.02212.4.vec.insert, float %341, i64 2 + %342 = fadd contract float %., %339 + %343 = fadd contract float %341, %342 + %344 = fcmp contract une float %343, 0.000000e+00 + %345 = select i1 %344, i8 0, i8 7 + %346 = bitcast i8 %345 to <8 x i1> + %347 = shufflevector <8 x i1> %346, <8 x i1> poison, <4 x i32> + %348 = select contract <4 x i1> %347, <4 x float> , <4 x float> %.sroa.02212.8.vec.insert + %349 = fdiv contract float 1.000000e+00, %343 + %350 = select i1 %344, float %349, float 0x3FD5555560000000 + %351 = insertelement <4 x float> poison, float %350, i64 0 + %352 = shufflevector <4 x float> %351, <4 x float> poison, <4 x i32> zeroinitializer + %353 = fmul contract <4 x float> %352, %348 store i32 %22, ptr %275, align 16 - %.sroa.02212.0.vec.extract2242 = extractelement <4 x float> %354, i64 0 - %355 = fcmp contract oge float %5, %.sroa.02212.0.vec.extract2242 - %.1840 = zext i1 %355 to i32 - %.sroa.02212.4.vec.extract = extractelement <4 x float> %354, i64 1 - %356 = fadd contract float %.sroa.02212.0.vec.extract2242, %.sroa.02212.4.vec.extract - %357 = fcmp contract ult float %5, %356 - %358 = select i1 %357, i32 %.1840, i32 2 - store i32 %358, ptr %276, align 4 + %.sroa.02212.0.vec.extract2242 = extractelement <4 x float> %353, i64 0 + %354 = fcmp contract oge float %5, %.sroa.02212.0.vec.extract2242 + %.1840 = zext i1 %354 to i32 + %.sroa.02212.4.vec.extract = extractelement <4 x float> %353, i64 1 + %355 = fadd contract float %.sroa.02212.0.vec.extract2242, %.sroa.02212.4.vec.extract + %356 = fcmp contract ult float %5, %355 + %357 = select i1 %356, i32 %.1840, i32 2 + store i32 %357, ptr %276, align 4 br label %thread-pre-split -thread-pre-split: ; preds = %335, %280, %332, %337 - %.sroa.02212.4.vec.extract2265.pre-phi = phi float [ %.sroa.02212.4.vec.extract, %337 ], [ %.sroa.02212.4.vec.extract2251, %332 ], [ %.sroa.02212.4.vec.extract2251, %280 ], [ %.sroa.02212.4.vec.extract2251, %335 ] - %.sroa.02212.0.vec.extract2232.pre-phi = phi float [ %.sroa.02212.0.vec.extract2242, %337 ], [ %.sroa.02212.0.vec.extract2224, %332 ], [ %.sroa.02212.0.vec.extract2224, %280 ], [ %.sroa.02212.0.vec.extract2224, %335 ] - %359 = phi i32 [ %358, %337 ], [ %324, %332 ], [ 0, %280 ], [ 2, %335 ] - %.sroa.02212.0 = phi <4 x float> [ %354, %337 ], [ %322, %332 ], [ %322, %280 ], [ %322, %335 ] - %.02189.in = phi i1 [ %345, %337 ], [ %or.cond1839, %332 ], [ true, %280 ], [ %336, %335 ] - %360 = icmp eq i32 %359, 0 - %361 = fdiv contract float %5, %.sroa.02212.0.vec.extract2232.pre-phi - %362 = select contract i1 %360, float %361, float %5 - %363 = icmp eq i32 %359, 1 - %364 = fsub contract float %362, %.sroa.02212.0.vec.extract2232.pre-phi - %365 = fdiv contract float %364, %.sroa.02212.4.vec.extract2265.pre-phi - %366 = select contract i1 %363, float %365, float %362 - %367 = icmp eq i32 %359, 2 - %368 = fsub contract float %362, %.sroa.02212.4.vec.extract2265.pre-phi - %369 = fsub contract float %368, %.sroa.02212.0.vec.extract2232.pre-phi +thread-pre-split: ; preds = %280, %332, %336 + %.sroa.02212.4.vec.extract2265.pre-phi = phi float [ %.sroa.02212.4.vec.extract, %336 ], [ %.sroa.02212.4.vec.extract2251, %332 ], [ %.sroa.02212.4.vec.extract2251, %280 ] + %.sroa.02212.0.vec.extract2232.pre-phi = phi float [ %.sroa.02212.0.vec.extract2242, %336 ], [ %.sroa.02212.0.vec.extract2224, %332 ], [ %.sroa.02212.0.vec.extract2224, %280 ] + %358 = phi i32 [ %357, %336 ], [ %327, %332 ], [ 0, %280 ] + %.sroa.02212.0 = phi <4 x float> [ %353, %336 ], [ %322, %332 ], [ %322, %280 ] + %.02189 = phi i1 [ %344, %336 ], [ %spec.select2280, %332 ], [ false, %280 ] + %359 = icmp eq i32 %358, 0 + %360 = fdiv contract float %5, %.sroa.02212.0.vec.extract2232.pre-phi + %361 = select contract i1 %359, float %360, float %5 + %362 = icmp eq i32 %358, 1 + %363 = fsub contract float %361, %.sroa.02212.0.vec.extract2232.pre-phi + %364 = fdiv contract float %363, %.sroa.02212.4.vec.extract2265.pre-phi + %365 = select contract i1 %362, float %364, float %361 + %366 = icmp eq i32 %358, 2 + %367 = fsub contract float %361, %.sroa.02212.4.vec.extract2265.pre-phi + %368 = fsub contract float %367, %.sroa.02212.0.vec.extract2232.pre-phi %.sroa.02212.8.vec.extract2274 = extractelement <4 x float> %.sroa.02212.0, i64 2 - %370 = fdiv contract float %369, %.sroa.02212.8.vec.extract2274 - %371 = select contract i1 %367, float %370, float %366 - %372 = insertelement <4 x float> poison, float %371, i64 0 - %373 = shufflevector <4 x float> %372, <4 x float> poison, <4 x i32> zeroinitializer - %374 = fneg contract <4 x float> %38 - %375 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %374, <4 x float> %373, <4 x float> %38) - %376 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %43, <4 x float> %373, <4 x float> %375) - %377 = fneg contract <4 x float> %33 - %378 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %377, <4 x float> %373, <4 x float> %33) - %379 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %38, <4 x float> %373, <4 x float> %378) - %380 = select i1 %363, i8 7, i8 0 - %381 = bitcast i8 %380 to <8 x i1> - %382 = shufflevector <8 x i1> %381, <8 x i1> poison, <4 x i32> - %383 = select contract <4 x i1> %382, <4 x float> %376, <4 x float> %379 - %384 = fneg contract <4 x float> %43 - %385 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %384, <4 x float> %373, <4 x float> %43) - %386 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %33, <4 x float> %373, <4 x float> %385) - %387 = select i1 %367, i8 7, i8 0 - %388 = bitcast i8 %387 to <8 x i1> - %389 = shufflevector <8 x i1> %388, <8 x i1> poison, <4 x i32> - %390 = select contract <4 x i1> %389, <4 x float> %386, <4 x float> %383 - store <4 x float> %390, ptr %0, align 16 - %391 = fsub contract <4 x float> %390, %217 - %392 = fmul contract <4 x float> %391, %391 - %shift2293 = shufflevector <4 x float> %392, <4 x float> poison, <4 x i32> - %393 = fadd contract <4 x float> %392, %shift2293 - %shift2294 = shufflevector <4 x float> %392, <4 x float> poison, <4 x i32> - %394 = fadd contract <4 x float> %shift2294, %393 - %395 = extractelement <4 x float> %394, i64 0 - %396 = tail call contract noundef float @llvm.sqrt.f32(float %395) - %397 = fdiv contract float 1.000000e+00, %396 - %398 = insertelement <4 x float> poison, float %397, i64 0 - %399 = shufflevector <4 x float> %398, <4 x float> poison, <4 x i32> zeroinitializer - %400 = fmul contract <4 x float> %391, %399 - store <4 x float> %400, ptr %274, align 16 + %369 = fdiv contract float %368, %.sroa.02212.8.vec.extract2274 + %370 = select contract i1 %366, float %369, float %365 + %371 = insertelement <4 x float> poison, float %370, i64 0 + %372 = shufflevector <4 x float> %371, <4 x float> poison, <4 x i32> zeroinitializer + %373 = fneg contract <4 x float> %38 + %374 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %373, <4 x float> %372, <4 x float> %38) + %375 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %43, <4 x float> %372, <4 x float> %374) + %376 = fneg contract <4 x float> %33 + %377 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %376, <4 x float> %372, <4 x float> %33) + %378 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %38, <4 x float> %372, <4 x float> %377) + %379 = select i1 %362, i8 7, i8 0 + %380 = bitcast i8 %379 to <8 x i1> + %381 = shufflevector <8 x i1> %380, <8 x i1> poison, <4 x i32> + %382 = select contract <4 x i1> %381, <4 x float> %375, <4 x float> %378 + %383 = fneg contract <4 x float> %43 + %384 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %383, <4 x float> %372, <4 x float> %43) + %385 = tail call contract noundef <4 x float> @llvm.fma.v4f32(<4 x float> %33, <4 x float> %372, <4 x float> %384) + %386 = select i1 %366, i8 7, i8 0 + %387 = bitcast i8 %386 to <8 x i1> + %388 = shufflevector <8 x i1> %387, <8 x i1> poison, <4 x i32> + %389 = select contract <4 x i1> %388, <4 x float> %385, <4 x float> %382 + store <4 x float> %389, ptr %0, align 16 + %390 = fsub contract <4 x float> %389, %217 + %391 = fmul contract <4 x float> %390, %390 + %shift2294 = shufflevector <4 x float> %391, <4 x float> poison, <4 x i32> + %392 = fadd contract <4 x float> %391, %shift2294 + %shift2295 = shufflevector <4 x float> %391, <4 x float> poison, <4 x i32> + %393 = fadd contract <4 x float> %shift2295, %392 + %394 = extractelement <4 x float> %393, i64 0 + %395 = tail call contract noundef float @llvm.sqrt.f32(float %394) + %396 = fdiv contract float 1.000000e+00, %395 + %397 = insertelement <4 x float> poison, float %396, i64 0 + %398 = shufflevector <4 x float> %397, <4 x float> poison, <4 x i32> zeroinitializer + %399 = fmul contract <4 x float> %390, %398 + store <4 x float> %399, ptr %274, align 16 store ptr %1, ptr %272, align 16 - %.not.not = xor i1 %.02189.in, true - %.1841 = zext i1 %.not.not to i32 + %.1841 = zext i1 %.02189 to i32 store i32 %.1841, ptr %273, align 4 - br label %401 + br label %400 -401: ; preds = %thread-pre-split, %16, %9 +400: ; preds = %thread-pre-split, %16, %9 ret void } diff --git a/bench/nuklear/optimized/unity.c.ll b/bench/nuklear/optimized/unity.c.ll index 0e08b4e174f..18c84b0adee 100644 --- a/bench/nuklear/optimized/unity.c.ll +++ b/bench/nuklear/optimized/unity.c.ll @@ -843,8 +843,8 @@ while.body: ; preds = %while.body.preheade %score.079 = phi i32 [ 0, %while.body.preheader ], [ %score.5, %if.end94 ] %pattern_iter.078 = phi ptr [ %pattern, %while.body.preheader ], [ %pattern_iter.2, %if.end94 ] %prev_matched.075 = phi i32 [ 0, %while.body.preheader ], [ %prev_matched.1, %if.end94 ] - %prev_lower.074 = phi i32 [ 0, %while.body.preheader ], [ %lor.ext.i69, %if.end94 ] - %prev_separator.073 = phi i32 [ 1, %while.body.preheader ], [ %lor.ext, %if.end94 ] + %prev_lower.074 = phi i1 [ true, %while.body.preheader ], [ %or.cond.i68, %if.end94 ] + %prev_separator.073 = phi i1 [ false, %while.body.preheader ], [ %.not, %if.end94 ] %best_letter_score.072 = phi i32 [ 0, %while.body.preheader ], [ %best_letter_score.3, %if.end94 ] %best_letter.071 = phi ptr [ null, %while.body.preheader ], [ %best_letter.3, %if.end94 ] %0 = load i8, ptr %pattern_iter.078, align 1 @@ -869,9 +869,9 @@ land.rhs: ; preds = %while.body br label %land.end land.end: ; preds = %land.rhs, %while.body - %cond.fr85 = phi i1 [ false, %while.body ], [ %4, %land.rhs ] + %cond.fr84 = phi i1 [ false, %while.body ], [ %4, %land.rhs ] %tobool11.not = icmp eq ptr %best_letter.071, null - br i1 %tobool11.not, label %.thread97, label %land.rhs27 + br i1 %tobool11.not, label %.thread96, label %land.rhs27 land.rhs27: ; preds = %land.end %5 = load i8, ptr %best_letter.071, align 1 @@ -899,25 +899,25 @@ land.rhs34: ; preds = %land.rhs27 %cond.i66 = select i1 %or.cond.i64, i32 %sub.i65, i32 %conv %cmp39 = icmp eq i32 %cond.i63, %cond.i66 %cmp39.fr = freeze i1 %cmp39 - %10 = or i1 %cond.fr85, %cmp39.fr - br i1 %10, label %11, label %.thread97 + %10 = or i1 %cond.fr84, %cmp39.fr + br i1 %10, label %11, label %.thread96 land.end41: ; preds = %land.rhs27 - br i1 %cond.fr85, label %11, label %.thread97 + br i1 %cond.fr84, label %11, label %.thread96 11: ; preds = %land.rhs34, %land.end41 - br label %.thread97 + br label %.thread96 -.thread97: ; preds = %land.rhs34, %land.end41, %land.end, %11 +.thread96: ; preds = %land.rhs34, %land.end41, %land.end, %11 %12 = phi i32 [ 0, %11 ], [ %best_letter_score.072, %land.end ], [ %best_letter_score.072, %land.end41 ], [ %best_letter_score.072, %land.rhs34 ] %13 = phi i1 [ %cmp17, %11 ], [ false, %land.end ], [ %cmp17, %land.end41 ], [ %cmp17, %land.rhs34 ] %14 = phi ptr [ null, %11 ], [ null, %land.end ], [ %best_letter.071, %land.end41 ], [ %best_letter.071, %land.rhs34 ] %15 = phi i32 [ %best_letter_score.072, %11 ], [ 0, %land.end ], [ 0, %land.end41 ], [ 0, %land.rhs34 ] %score.1 = add nsw i32 %15, %score.079 - %or.cond3 = select i1 %cond.fr85, i1 true, i1 %13 + %or.cond3 = select i1 %cond.fr84, i1 true, i1 %13 br i1 %or.cond3, label %if.then51, label %if.else -if.then51: ; preds = %.thread97 +if.then51: ; preds = %.thread96 %cmp52 = icmp eq ptr %pattern_iter.078, %pattern br i1 %cmp52, label %if.then54, label %if.end63 @@ -932,17 +932,15 @@ if.end63: ; preds = %if.then54, %if.then %score.2 = phi i32 [ %add62, %if.then54 ], [ %score.1, %if.then51 ] %tobool64.not = icmp eq i32 %prev_matched.075, 0 %spec.select = select i1 %tobool64.not, i32 0, i32 5 - %tobool68.not = icmp eq i32 %prev_separator.073, 0 %add70 = or disjoint i32 %spec.select, 10 - %new_score.1 = select i1 %tobool68.not, i32 %spec.select, i32 %add70 - %tobool72.not = icmp eq i32 %prev_lower.074, 0 + %new_score.1 = select i1 %prev_separator.073, i32 %spec.select, i32 %add70 %conv73 = sext i8 %1 to i32 %18 = add nsw i32 %conv73, -91 %or.cond.i67 = icmp ult i32 %18, -26 %add77 = add nuw nsw i32 %new_score.1, 10 - %19 = select i1 %tobool72.not, i1 true, i1 %or.cond.i67 + %19 = select i1 %prev_lower.074, i1 true, i1 %or.cond.i67 %new_score.2 = select i1 %19, i32 %new_score.1, i32 %add77 - %spec.select49.idx = zext i1 %cond.fr85 to i64 + %spec.select49.idx = zext i1 %cond.fr84 to i64 %spec.select49 = getelementptr inbounds nuw i8, ptr %pattern_iter.078, i64 %spec.select49.idx %cmp82.not = icmp sge i32 %new_score.2, %12 %cmp85.not = icmp ne ptr %14, null @@ -953,7 +951,7 @@ if.end63: ; preds = %if.then54, %if.then %score.3 = add nsw i32 %score.2, %spec.select50 br label %if.end94 -if.else: ; preds = %.thread97 +if.else: ; preds = %.thread96 %add93 = add nsw i32 %score.1, -1 %.pre = sext i8 %1 to i32 br label %if.end94 @@ -965,28 +963,26 @@ if.end94: ; preds = %if.else, %if.end63 %prev_matched.1 = phi i32 [ 0, %if.else ], [ 1, %if.end63 ] %pattern_iter.2 = phi ptr [ %pattern_iter.078, %if.else ], [ %spec.select49, %if.end63 ] %score.5 = phi i32 [ %add93, %if.else ], [ %score.3, %if.end63 ] - %20 = add nsw i32 %conv95.pre-phi, -97 - %or.cond.i68 = icmp ult i32 %20, 26 - %lor.ext.i69 = zext i1 %or.cond.i68 to i32 - %cmp100 = icmp eq i8 %1, 95 - %cmp103 = icmp eq i8 %1, 32 - %21 = or i1 %cmp100, %cmp103 - %lor.ext = zext i1 %21 to i32 + %20 = add nsw i32 %conv95.pre-phi, -123 + %or.cond.i68 = icmp ult i32 %20, -26 + %cmp100 = icmp ne i8 %1, 95 + %cmp103 = icmp ne i8 %1, 32 + %.not = and i1 %cmp100, %cmp103 %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 %while.end.loopexit, label %while.body, !llvm.loop !16 while.end.loopexit: ; preds = %if.end94 - %22 = icmp eq ptr %best_letter.3, null - %23 = select i1 %22, i32 0, i32 %best_letter_score.3 - %24 = add nsw i32 %score.5, %23 + %21 = icmp eq ptr %best_letter.3, null + %22 = select i1 %21, i32 0, i32 %best_letter_score.3 + %23 = add nsw i32 %score.5, %22 br label %while.end while.end: ; preds = %while.end.loopexit, %while.cond.preheader %pattern_iter.0.lcssa = phi ptr [ %pattern, %while.cond.preheader ], [ %pattern_iter.2, %while.end.loopexit ] - %spec.select51 = phi i32 [ 0, %while.cond.preheader ], [ %24, %while.end.loopexit ] - %25 = load i8, ptr %pattern_iter.0.lcssa, align 1 - %cmp110.not = icmp eq i8 %25, 0 + %spec.select51 = phi i32 [ 0, %while.cond.preheader ], [ %23, %while.end.loopexit ] + %24 = load i8, ptr %pattern_iter.0.lcssa, align 1 + %cmp110.not = icmp eq i8 %24, 0 br i1 %cmp110.not, label %if.end113, label %return if.end113: ; preds = %while.end diff --git a/bench/ocio/optimized/FileFormatICC.cpp.ll b/bench/ocio/optimized/FileFormatICC.cpp.ll index a5a3a999367..3d36358d148 100644 --- a/bench/ocio/optimized/FileFormatICC.cpp.ll +++ b/bench/ocio/optimized/FileFormatICC.cpp.ll @@ -689,7 +689,7 @@ if.end: ; preds = %_ZN9SampleICC5Read8 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !8 for.end: ; preds = %if.end, %for.body, %_ZN9SampleICC5Read8ERSiPvi.exit.i, %entry - %i.0.lcssa = phi i32 [ 0, %entry ], [ %i.08, %_ZN9SampleICC5Read8ERSiPvi.exit.i ], [ %i.08, %for.body ], [ %num, %if.end ] + %i.0.lcssa = phi i32 [ 0, %entry ], [ %num, %if.end ], [ %i.08, %for.body ], [ %i.08, %_ZN9SampleICC5Read8ERSiPvi.exit.i ] ret i32 %i.0.lcssa } @@ -1469,8 +1469,8 @@ if.end133: ; preds = %_ZN9SampleICC5Read8 %conv134 = zext i32 %37 to i64 call void @_ZNSt6vectorIN9SampleICC13IccTagElementESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %mTags, i64 noundef %conv134) %38 = load i32, ptr %count, align 4 - %cmp135356.not = icmp eq i32 %38, 0 - br i1 %cmp135356.not, label %for.end, label %for.body + %cmp135374.not = icmp eq i32 %38, 0 + br i1 %cmp135374.not, label %for.end, label %for.body for.cond: ; preds = %_ZN9SampleICC5Read8ERSiPvi.exit.i312 %arrayidx1.i.i323 = getelementptr inbounds nuw i8, ptr %size153, i64 3 @@ -6670,7 +6670,7 @@ _ZN9SampleICC5Read8ERSiPvi.exit.i60: ; preds = %for.body br i1 %call6.i.i66, label %for.cond, label %return return: ; preds = %for.cond, %for.body, %_ZN9SampleICC5Read8ERSiPvi.exit.i60, %_ZN9SampleICC5Read8ERSiPvi.exit.i38, %_ZN9SampleICC5Read8ERSiPvi.exit.i19, %_ZN9SampleICC5Read8ERSiPvi.exit.i, %lor.lhs.false11, %lor.lhs.false, %if.end7, %if.end24, %if.then27, %if.end5, %if.end, %entry - %retval.0 = phi i1 [ false, %entry ], [ false, %if.end ], [ false, %if.end5 ], [ false, %if.then27 ], [ true, %if.end24 ], [ false, %if.end7 ], [ false, %lor.lhs.false ], [ false, %lor.lhs.false11 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i19 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i38 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i60 ], [ true, %for.cond ], [ false, %for.body ] + %retval.0 = phi i1 [ false, %entry ], [ false, %if.end ], [ false, %if.end5 ], [ false, %if.then27 ], [ true, %if.end24 ], [ false, %if.end7 ], [ false, %lor.lhs.false ], [ false, %lor.lhs.false11 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i19 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i38 ], [ false, %_ZN9SampleICC5Read8ERSiPvi.exit.i60 ], [ false, %for.body ], [ true, %for.cond ] ret i1 %retval.0 } @@ -7346,14 +7346,14 @@ if.end21: ; preds = %for.body %vbase.offset.i.i75 = load i64, ptr %vbase.offset.ptr.i.i74, align 8 %add.ptr.i.i76 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset.i.i75 %call.i.i7792 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr.i.i76) - to label %call.i.i77.noexc unwind label %lpad.loopexit227 + to label %call.i.i77.noexc unwind label %lpad.loopexit231 call.i.i77.noexc: ; preds = %if.end21 br i1 %call.i.i7792, label %_ZN9SampleICC5Read8ERSiPvi.exit.i79, label %cleanup134 _ZN9SampleICC5Read8ERSiPvi.exit.i79: ; preds = %call.i.i77.noexc %call1.i.i8093 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %istream, ptr noundef nonnull %nLanguageCode, i64 noundef 2) - to label %call1.i.i80.noexc unwind label %lpad.loopexit227 + to label %call1.i.i80.noexc unwind label %lpad.loopexit231 call1.i.i80.noexc: ; preds = %_ZN9SampleICC5Read8ERSiPvi.exit.i79 %vtable2.i.i81 = load ptr, ptr %istream, align 8 @@ -7361,7 +7361,7 @@ call1.i.i80.noexc: ; preds = %_ZN9SampleICC5Read8 %vbase.offset4.i.i83 = load i64, ptr %vbase.offset.ptr3.i.i82, align 8 %add.ptr5.i.i84 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset4.i.i83 %call6.i.i8594 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr5.i.i84) - to label %call6.i.i85.noexc unwind label %lpad.loopexit227 + to label %call6.i.i85.noexc unwind label %lpad.loopexit231 call6.i.i85.noexc: ; preds = %call1.i.i80.noexc br i1 %call6.i.i8594, label %lor.lhs.false24, label %cleanup134 @@ -7376,14 +7376,14 @@ lor.lhs.false24: ; preds = %call6.i.i85.noexc %vbase.offset.i.i97 = load i64, ptr %vbase.offset.ptr.i.i96, align 8 %add.ptr.i.i98 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset.i.i97 %call.i.i99116 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr.i.i98) - to label %call.i.i99.noexc unwind label %lpad.loopexit227 + to label %call.i.i99.noexc unwind label %lpad.loopexit231 call.i.i99.noexc: ; preds = %lor.lhs.false24 br i1 %call.i.i99116, label %_ZN9SampleICC5Read8ERSiPvi.exit.i101, label %cleanup134 _ZN9SampleICC5Read8ERSiPvi.exit.i101: ; preds = %call.i.i99.noexc %call1.i.i102117 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %istream, ptr noundef nonnull %nRegionCode, i64 noundef 2) - to label %call1.i.i102.noexc unwind label %lpad.loopexit227 + to label %call1.i.i102.noexc unwind label %lpad.loopexit231 call1.i.i102.noexc: ; preds = %_ZN9SampleICC5Read8ERSiPvi.exit.i101 %vtable2.i.i103 = load ptr, ptr %istream, align 8 @@ -7391,7 +7391,7 @@ call1.i.i102.noexc: ; preds = %_ZN9SampleICC5Read8 %vbase.offset4.i.i105 = load i64, ptr %vbase.offset.ptr3.i.i104, align 8 %add.ptr5.i.i106 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset4.i.i105 %call6.i.i107118 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr5.i.i106) - to label %call6.i.i107.noexc unwind label %lpad.loopexit227 + to label %call6.i.i107.noexc unwind label %lpad.loopexit231 call6.i.i107.noexc: ; preds = %call1.i.i102.noexc br i1 %call6.i.i107118, label %lor.lhs.false28, label %cleanup134 @@ -7406,14 +7406,14 @@ lor.lhs.false28: ; preds = %call6.i.i107.noexc %vbase.offset.i.i122 = load i64, ptr %vbase.offset.ptr.i.i121, align 8 %add.ptr.i.i123 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset.i.i122 %call.i.i124143 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr.i.i123) - to label %call.i.i124.noexc unwind label %lpad.loopexit227 + to label %call.i.i124.noexc unwind label %lpad.loopexit231 call.i.i124.noexc: ; preds = %lor.lhs.false28 br i1 %call.i.i124143, label %_ZN9SampleICC5Read8ERSiPvi.exit.i126, label %cleanup134 _ZN9SampleICC5Read8ERSiPvi.exit.i126: ; preds = %call.i.i124.noexc %call1.i.i127144 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %istream, ptr noundef nonnull %nLength, i64 noundef 4) - to label %call1.i.i127.noexc unwind label %lpad.loopexit227 + to label %call1.i.i127.noexc unwind label %lpad.loopexit231 call1.i.i127.noexc: ; preds = %_ZN9SampleICC5Read8ERSiPvi.exit.i126 %vtable2.i.i128 = load ptr, ptr %istream, align 8 @@ -7421,7 +7421,7 @@ call1.i.i127.noexc: ; preds = %_ZN9SampleICC5Read8 %vbase.offset4.i.i130 = load i64, ptr %vbase.offset.ptr3.i.i129, align 8 %add.ptr5.i.i131 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset4.i.i130 %call6.i.i132145 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr5.i.i131) - to label %call6.i.i132.noexc unwind label %lpad.loopexit227 + to label %call6.i.i132.noexc unwind label %lpad.loopexit231 call6.i.i132.noexc: ; preds = %call1.i.i127.noexc br i1 %call6.i.i132145, label %lor.lhs.false32, label %cleanup134 @@ -7440,14 +7440,14 @@ lor.lhs.false32: ; preds = %call6.i.i132.noexc %vbase.offset.i.i149 = load i64, ptr %vbase.offset.ptr.i.i148, align 8 %add.ptr.i.i150 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset.i.i149 %call.i.i151170 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr.i.i150) - to label %call.i.i151.noexc unwind label %lpad.loopexit227 + to label %call.i.i151.noexc unwind label %lpad.loopexit231 call.i.i151.noexc: ; preds = %lor.lhs.false32 br i1 %call.i.i151170, label %_ZN9SampleICC5Read8ERSiPvi.exit.i153, label %cleanup134 _ZN9SampleICC5Read8ERSiPvi.exit.i153: ; preds = %call.i.i151.noexc %call1.i.i154171 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %istream, ptr noundef nonnull %nOffset, i64 noundef 4) - to label %call1.i.i154.noexc unwind label %lpad.loopexit227 + to label %call1.i.i154.noexc unwind label %lpad.loopexit231 call1.i.i154.noexc: ; preds = %_ZN9SampleICC5Read8ERSiPvi.exit.i153 %vtable2.i.i155 = load ptr, ptr %istream, align 8 @@ -7455,18 +7455,18 @@ call1.i.i154.noexc: ; preds = %_ZN9SampleICC5Read8 %vbase.offset4.i.i157 = load i64, ptr %vbase.offset.ptr3.i.i156, align 8 %add.ptr5.i.i158 = getelementptr inbounds i8, ptr %istream, i64 %vbase.offset4.i.i157 %call6.i.i159172 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %add.ptr5.i.i158) - to label %call6.i.i159.noexc unwind label %lpad.loopexit227 + to label %call6.i.i159.noexc unwind label %lpad.loopexit231 call6.i.i159.noexc: ; preds = %call1.i.i154.noexc br i1 %call6.i.i159172, label %if.end37, label %cleanup134 -lpad.loopexit227: ; preds = %if.end21, %_ZN9SampleICC5Read8ERSiPvi.exit.i79, %call1.i.i80.noexc, %lor.lhs.false24, %_ZN9SampleICC5Read8ERSiPvi.exit.i101, %call1.i.i102.noexc, %lor.lhs.false28, %_ZN9SampleICC5Read8ERSiPvi.exit.i126, %call1.i.i127.noexc, %lor.lhs.false32, %_ZN9SampleICC5Read8ERSiPvi.exit.i153, %call1.i.i154.noexc - %lpad.loopexit229 = landingpad { ptr, i32 } +lpad.loopexit231: ; preds = %if.end21, %_ZN9SampleICC5Read8ERSiPvi.exit.i79, %call1.i.i80.noexc, %lor.lhs.false24, %_ZN9SampleICC5Read8ERSiPvi.exit.i101, %call1.i.i102.noexc, %lor.lhs.false28, %_ZN9SampleICC5Read8ERSiPvi.exit.i126, %call1.i.i127.noexc, %lor.lhs.false32, %_ZN9SampleICC5Read8ERSiPvi.exit.i153, %call1.i.i154.noexc + %lpad.loopexit233 = landingpad { ptr, i32 } cleanup br label %ehcleanup135 -lpad.loopexit.split-lp228: ; preds = %if.then110.invoke - %lpad.loopexit.split-lp230 = landingpad { ptr, i32 } +lpad.loopexit.split-lp232: ; preds = %if.then110.invoke + %lpad.loopexit.split-lp234 = landingpad { ptr, i32 } cleanup br label %ehcleanup135 @@ -7571,8 +7571,8 @@ if.else: ; preds = %invoke.cont50 invoke.cont58: ; preds = %if.else call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp56) #30 - %cmp61237.not = icmp eq ptr %unicodeStr.sroa.12.1, %unicodeStr.sroa.0.1 - br i1 %cmp61237.not, label %for.end, label %for.body62.preheader + %cmp61246.not = icmp eq ptr %unicodeStr.sroa.12.1, %unicodeStr.sroa.0.1 + br i1 %cmp61246.not, label %for.end, label %for.body62.preheader for.body62.preheader: ; preds = %invoke.cont58 %sub.ptr.lhs.cast.i = ptrtoint ptr %unicodeStr.sroa.12.1 to i64 @@ -7583,16 +7583,16 @@ for.body62.preheader: ; preds = %invoke.cont58 br label %for.body62 for.body62: ; preds = %for.body62.preheader, %invoke.cont66 - %idx.0238 = phi i64 [ %inc, %invoke.cont66 ], [ 0, %for.body62.preheader ] - %add.ptr.i = getelementptr inbounds i16, ptr %unicodeStr.sroa.0.1, i64 %idx.0238 + %idx.0247 = phi i64 [ %inc, %invoke.cont66 ], [ 0, %for.body62.preheader ] + %add.ptr.i = getelementptr inbounds i16, ptr %unicodeStr.sroa.0.1, i64 %idx.0247 %35 = load i16, ptr %add.ptr.i, align 2 - %call67 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %str, i64 noundef %idx.0238) + %call67 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %str, i64 noundef %idx.0247) to label %invoke.cont66 unwind label %lpad65.loopexit invoke.cont66: ; preds = %for.body62 %conv64 = trunc i16 %35 to i8 store i8 %conv64, ptr %call67, align 1 - %inc = add nuw i64 %idx.0238, 1 + %inc = add nuw i64 %idx.0247, 1 %exitcond.not = icmp eq i64 %inc, %umax br i1 %exitcond.not, label %for.end, label %for.body62, !llvm.loop !45 @@ -7706,7 +7706,7 @@ if.then108: ; preds = %for.end105 if.then110.invoke: ; preds = %if.else120, %if.else114, %if.then108 %39 = phi ptr [ %foundCountryUSA, %if.then108 ], [ %foundContryUK, %if.else114 ], [ %foundFirstEntry.foundLanguageEN, %if.else120 ] %40 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %mText, ptr noundef nonnull align 8 dereferenceable(32) %39) - to label %cleanup134 unwind label %lpad.loopexit.split-lp228 + to label %cleanup134 unwind label %lpad.loopexit.split-lp232 if.else114: ; preds = %if.then108 %call115 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %foundContryUK) #30 @@ -7717,16 +7717,16 @@ if.else120: ; preds = %if.else114 %foundFirstEntry.foundLanguageEN = select i1 %call121, ptr %foundFirstEntry, ptr %foundLanguageEN br label %if.then110.invoke -cleanup134: ; preds = %call.i.i151.noexc, %call.i.i124.noexc, %call.i.i99.noexc, %call.i.i77.noexc, %if.end37, %for.body, %_ZNSt6vectorItSaItEED2Ev.exit, %call6.i.i85.noexc, %call6.i.i107.noexc, %call6.i.i132.noexc, %call6.i.i159.noexc, %if.then110.invoke, %for.end105 - %retval.2 = phi i1 [ true, %for.end105 ], [ true, %if.then110.invoke ], [ false, %call6.i.i159.noexc ], [ false, %call6.i.i132.noexc ], [ false, %call6.i.i107.noexc ], [ false, %call6.i.i85.noexc ], [ false, %_ZNSt6vectorItSaItEED2Ev.exit ], [ false, %for.body ], [ false, %if.end37 ], [ false, %call.i.i77.noexc ], [ false, %call.i.i99.noexc ], [ false, %call.i.i124.noexc ], [ false, %call.i.i151.noexc ] +cleanup134: ; preds = %call6.i.i159.noexc, %call6.i.i132.noexc, %call6.i.i107.noexc, %call6.i.i85.noexc, %call.i.i151.noexc, %call.i.i124.noexc, %call.i.i99.noexc, %call.i.i77.noexc, %if.end37, %for.body, %_ZNSt6vectorItSaItEED2Ev.exit, %if.then110.invoke, %for.end105 + %retval.2 = phi i1 [ true, %for.end105 ], [ true, %if.then110.invoke ], [ false, %_ZNSt6vectorItSaItEED2Ev.exit ], [ false, %for.body ], [ false, %if.end37 ], [ false, %call.i.i77.noexc ], [ false, %call.i.i99.noexc ], [ false, %call.i.i124.noexc ], [ false, %call.i.i151.noexc ], [ false, %call6.i.i85.noexc ], [ false, %call6.i.i107.noexc ], [ false, %call6.i.i132.noexc ], [ false, %call6.i.i159.noexc ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundFirstEntry) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundLanguageEN) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundContryUK) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundCountryUSA) #30 br label %return -ehcleanup135: ; preds = %lpad.loopexit227, %lpad.loopexit.split-lp228, %if.then.i.i.i202, %ehcleanup, %lpad46 - %.pn23 = phi { ptr, i32 } [ %33, %lpad46 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i202 ], [ %lpad.loopexit229, %lpad.loopexit227 ], [ %lpad.loopexit.split-lp230, %lpad.loopexit.split-lp228 ] +ehcleanup135: ; preds = %lpad.loopexit231, %lpad.loopexit.split-lp232, %if.then.i.i.i202, %ehcleanup, %lpad46 + %.pn23 = phi { ptr, i32 } [ %33, %lpad46 ], [ %.pn, %ehcleanup ], [ %.pn, %if.then.i.i.i202 ], [ %lpad.loopexit233, %lpad.loopexit231 ], [ %lpad.loopexit.split-lp234, %lpad.loopexit.split-lp232 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundFirstEntry) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundLanguageEN) #30 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %foundContryUK) #30 diff --git a/bench/openjdk/optimized/OGLBlitLoops.ll b/bench/openjdk/optimized/OGLBlitLoops.ll index 558fadc0552..1ee400262ae 100644 --- a/bench/openjdk/optimized/OGLBlitLoops.ll +++ b/bench/openjdk/optimized/OGLBlitLoops.ll @@ -52,7 +52,7 @@ define hidden void @OGLBlitLoops_IsoBlit(ptr nocapture noundef readnone %0, ptr %or.cond9 = or i1 %28, %or.cond7 %29 = icmp eq ptr %1, null %or.cond11 = or i1 %29, %or.cond9 - br i1 %or.cond11, label %148, label %30 + br i1 %or.cond11, label %155, label %30 30: ; preds = %16 store i32 %8, ptr %17, align 8 @@ -70,13 +70,13 @@ define hidden void @OGLBlitLoops_IsoBlit(ptr nocapture noundef readnone %0, ptr %38 = load i32, ptr %32, align 8 %39 = load i32, ptr %17, align 8 %40 = icmp sgt i32 %38, %39 - br i1 %40, label %41, label %148 + br i1 %40, label %41, label %155 41: ; preds = %30 %42 = load i32, ptr %33, align 4 %43 = load i32, ptr %31, align 4 %44 = icmp sgt i32 %42, %43 - br i1 %44, label %45, label %148 + br i1 %44, label %45, label %155 45: ; preds = %41 %.not = icmp eq i32 %39, %8 @@ -240,60 +240,67 @@ OGLBlitTextureToSurface.exit: ; preds = %113, %116 call void %129(double noundef %.0108, double noundef %.0111) #6 %130 = load ptr, ptr @j2d_glEnd, align 8 call void %130() #6 - br label %148 + br label %155 131: ; preds = %73 %.not129 = icmp eq i8 %4, 0 - br i1 %.not129, label %132, label %.thread + br i1 %.not129, label %132, label %.critedge 132: ; preds = %131 %133 = getelementptr inbounds nuw i8, ptr %1, i64 8 %134 = load i32, ptr %133, align 8 %135 = lshr i32 %134, 24 %136 = and i32 %135, 3 - switch i32 %136, label %.thread135 [ + switch i32 %136, label %.critedge134 [ i32 2, label %137 i32 1, label %145 ] -.thread135: ; preds = %132 - call void @OGLRenderQueue_CheckPreviousOp(i32 noundef -1) #6 - br label %147 - 137: ; preds = %132 %138 = sub nsw i32 %.0106, %.0104 %139 = fsub double %.0110, %.0108 %140 = fptosi double %139 to i32 %.not130 = icmp eq i32 %138, %140 - br i1 %.not130, label %141, label %.thread + br i1 %.not130, label %141, label %.critedge 141: ; preds = %137 %142 = sub nsw i32 %.0107, %.0105 %143 = fsub double %.0111, %.0109 %144 = fptosi double %143 to i32 %.not131 = icmp eq i32 %142, %144 - br i1 %.not131, label %145, label %.thread + br i1 %.not131, label %149, label %.critedge + +145: ; preds = %132 + %146 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %147 = load float, ptr %146, align 8 + %148 = fcmp oeq float %147, 1.000000e+00 + call void @OGLRenderQueue_CheckPreviousOp(i32 noundef -1) #6 + br i1 %148, label %154, label %153 -.thread: ; preds = %131, %141, %137 +149: ; preds = %141 + %150 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %151 = load float, ptr %150, align 8 + %152 = fcmp oeq float %151, 1.000000e+00 call void @OGLRenderQueue_CheckPreviousOp(i32 noundef -1) #6 - br label %146 + br i1 %152, label %154, label %153 -145: ; preds = %132, %141 - %.0.in.in.in = getelementptr inbounds nuw i8, ptr %1, i64 16 - %.0.in.in = load float, ptr %.0.in.in.in, align 8 - %.0.in = fcmp oeq float %.0.in.in, 1.000000e+00 +.critedge: ; preds = %137, %141, %131 call void @OGLRenderQueue_CheckPreviousOp(i32 noundef -1) #6 - br i1 %.0.in, label %147, label %146 + br label %153 -146: ; preds = %.thread, %145 +153: ; preds = %145, %.critedge, %149 call fastcc void @OGLBlitToSurfaceViaTexture(ptr noundef nonnull %1, ptr noundef %17, ptr noundef null, ptr noundef nonnull %18, i8 noundef zeroext 0, i32 noundef %5, i32 noundef %.0104, i32 noundef %.0105, i32 noundef %.0106, i32 noundef %.0107, double noundef %.0108, double noundef %.0109, double noundef %.0110, double noundef %.0111) - br label %148 + br label %155 + +.critedge134: ; preds = %132 + call void @OGLRenderQueue_CheckPreviousOp(i32 noundef -1) #6 + br label %154 -147: ; preds = %.thread135, %145 +154: ; preds = %145, %.critedge134, %149 call fastcc void @OGLBlitSurfaceToSurface(ptr noundef nonnull %1, ptr noundef nonnull %18, i32 noundef %.0104, i32 noundef %.0105, i32 noundef %.0106, i32 noundef %.0107, double noundef %.0108, double noundef %.0109, double noundef %.0110, double noundef %.0111) - br label %148 + br label %155 -148: ; preds = %OGLBlitTextureToSurface.exit, %147, %146, %16, %41, %30 +155: ; preds = %OGLBlitTextureToSurface.exit, %154, %153, %16, %41, %30 ret void } diff --git a/bench/openjdk/optimized/cmsio1.ll b/bench/openjdk/optimized/cmsio1.ll index bc3ea59ff8f..934825f199c 100644 --- a/bench/openjdk/optimized/cmsio1.ll +++ b/bench/openjdk/optimized/cmsio1.ll @@ -1046,92 +1046,82 @@ define hidden i32 @cmsIsCLUT(ptr noundef %0, i32 noundef %1, i32 noundef %2) loc br label %cmsIsIntentSupported.exit17 10: ; preds = %3 - switch i32 %2, label %39 [ - i32 0, label %41 + switch i32 %2, label %35 [ + i32 0, label %37 i32 1, label %11 i32 2, label %12 ] 11: ; preds = %10 - br label %41 + br label %37 12: ; preds = %10 %13 = tail call i32 @cmsGetDeviceClass(ptr noundef %0) #4 %14 = icmp eq i32 %13, 1818848875 - br i1 %14, label %15, label %19 + br i1 %14, label %15, label %17 15: ; preds = %12 %16 = tail call i32 @cmsGetHeaderRenderingIntent(ptr noundef %0) #4 - %17 = icmp eq i32 %16, %1 - %18 = zext i1 %17 to i32 - br label %cmsIsCLUT.exit - -19: ; preds = %12 - %20 = icmp ugt i32 %1, 3 - br i1 %20, label %cmsIsIntentSupported.exit, label %21 - -21: ; preds = %19 - %22 = zext nneg i32 %1 to i64 - %23 = getelementptr inbounds nuw i32, ptr @Device2PCS16, i64 %22 - %24 = load i32, ptr %23, align 4 - %25 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef %24) #4 - br label %cmsIsCLUT.exit - -cmsIsCLUT.exit: ; preds = %15, %21 - %.013.i = phi i32 [ %18, %15 ], [ %25, %21 ] - %.not.i = icmp eq i32 %.013.i, 0 - br i1 %.not.i, label %cmsIsIntentSupported.exit, label %cmsIsIntentSupported.exit.thread - -cmsIsIntentSupported.exit: ; preds = %19, %cmsIsCLUT.exit - %26 = tail call i32 @cmsIsMatrixShaper(ptr noundef %0) - %.not = icmp eq i32 %26, 0 + %.not26 = icmp eq i32 %16, %1 + br i1 %.not26, label %cmsIsIntentSupported.exit.thread, label %cmsIsIntentSupported.exit + +17: ; preds = %12 + %18 = icmp ugt i32 %1, 3 + br i1 %18, label %cmsIsIntentSupported.exit, label %cmsIsCLUT.exit + +cmsIsCLUT.exit: ; preds = %17 + %19 = zext nneg i32 %1 to i64 + %20 = getelementptr inbounds nuw i32, ptr @Device2PCS16, i64 %19 + %21 = load i32, ptr %20, align 4 + %22 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef %21) #4 + %23 = icmp eq i32 %22, 0 + br i1 %23, label %cmsIsIntentSupported.exit, label %cmsIsIntentSupported.exit.thread + +cmsIsIntentSupported.exit: ; preds = %15, %17, %cmsIsCLUT.exit + %24 = tail call i32 @cmsIsMatrixShaper(ptr noundef %0) + %.not = icmp eq i32 %24, 0 br i1 %.not, label %cmsIsIntentSupported.exit17, label %cmsIsIntentSupported.exit.thread -cmsIsIntentSupported.exit.thread: ; preds = %cmsIsCLUT.exit, %cmsIsIntentSupported.exit - %27 = tail call i32 @cmsGetDeviceClass(ptr noundef %0) #4 - %28 = icmp eq i32 %27, 1818848875 - br i1 %28, label %29, label %33 - -29: ; preds = %cmsIsIntentSupported.exit.thread - %30 = tail call i32 @cmsGetHeaderRenderingIntent(ptr noundef %0) #4 - %31 = icmp eq i32 %30, 1 - %32 = zext i1 %31 to i32 - br label %cmsIsCLUT.exit21 - -33: ; preds = %cmsIsIntentSupported.exit.thread - %34 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef 1110589745) #4 - br label %cmsIsCLUT.exit21 - -cmsIsCLUT.exit21: ; preds = %29, %33 - %.013.i20 = phi i32 [ %32, %29 ], [ %34, %33 ] - %.not.i15 = icmp eq i32 %.013.i20, 0 - br i1 %.not.i15, label %35, label %cmsIsIntentSupported.exit17 - -35: ; preds = %cmsIsCLUT.exit21 - %36 = tail call i32 @cmsIsMatrixShaper(ptr noundef %0) - %37 = icmp ne i32 %36, 0 - %38 = zext i1 %37 to i32 +cmsIsIntentSupported.exit.thread: ; preds = %15, %cmsIsCLUT.exit, %cmsIsIntentSupported.exit + %25 = tail call i32 @cmsGetDeviceClass(ptr noundef %0) #4 + %26 = icmp eq i32 %25, 1818848875 + br i1 %26, label %27, label %cmsIsCLUT.exit21 + +27: ; preds = %cmsIsIntentSupported.exit.thread + %28 = tail call i32 @cmsGetHeaderRenderingIntent(ptr noundef %0) #4 + %.not27 = icmp eq i32 %28, 1 + br i1 %.not27, label %cmsIsIntentSupported.exit17, label %31 + +cmsIsCLUT.exit21: ; preds = %cmsIsIntentSupported.exit.thread + %29 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef 1110589745) #4 + %30 = icmp eq i32 %29, 0 + br i1 %30, label %31, label %cmsIsIntentSupported.exit17 + +31: ; preds = %27, %cmsIsCLUT.exit21 + %32 = tail call i32 @cmsIsMatrixShaper(ptr noundef %0) + %33 = icmp ne i32 %32, 0 + %34 = zext i1 %33 to i32 br label %cmsIsIntentSupported.exit17 -39: ; preds = %10 - %40 = tail call ptr @cmsGetProfileContextID(ptr noundef %0) #4 - tail call void (ptr, i32, ptr, ...) @cmsSignalError(ptr noundef %40, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef %2) #4 +35: ; preds = %10 + %36 = tail call ptr @cmsGetProfileContextID(ptr noundef %0) #4 + tail call void (ptr, i32, ptr, ...) @cmsSignalError(ptr noundef %36, i32 noundef 2, ptr noundef nonnull @.str, i32 noundef %2) #4 br label %cmsIsIntentSupported.exit17 -41: ; preds = %10, %11 +37: ; preds = %10, %11 %.0 = phi ptr [ @PCS2Device16, %11 ], [ @Device2PCS16, %10 ] - %42 = icmp ugt i32 %1, 3 - br i1 %42, label %cmsIsIntentSupported.exit17, label %43 - -43: ; preds = %41 - %44 = zext nneg i32 %1 to i64 - %45 = getelementptr inbounds nuw i32, ptr %.0, i64 %44 - %46 = load i32, ptr %45, align 4 - %47 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef %46) #4 + %38 = icmp ugt i32 %1, 3 + br i1 %38, label %cmsIsIntentSupported.exit17, label %39 + +39: ; preds = %37 + %40 = zext nneg i32 %1 to i64 + %41 = getelementptr inbounds nuw i32, ptr %.0, i64 %40 + %42 = load i32, ptr %41, align 4 + %43 = tail call i32 @cmsIsTag(ptr noundef %0, i32 noundef %42) #4 br label %cmsIsIntentSupported.exit17 -cmsIsIntentSupported.exit17: ; preds = %35, %cmsIsCLUT.exit21, %41, %cmsIsIntentSupported.exit, %43, %39, %6 - %.013 = phi i32 [ %9, %6 ], [ 0, %39 ], [ %47, %43 ], [ 0, %cmsIsIntentSupported.exit ], [ 0, %41 ], [ %38, %35 ], [ 1, %cmsIsCLUT.exit21 ] +cmsIsIntentSupported.exit17: ; preds = %27, %31, %cmsIsCLUT.exit21, %37, %cmsIsIntentSupported.exit, %39, %35, %6 + %.013 = phi i32 [ %9, %6 ], [ 0, %35 ], [ %43, %39 ], [ 0, %cmsIsIntentSupported.exit ], [ 0, %37 ], [ %34, %31 ], [ 1, %cmsIsCLUT.exit21 ], [ 1, %27 ] ret i32 %.013 } diff --git a/bench/openmpi/optimized/pmix_mca_base_var.ll b/bench/openmpi/optimized/pmix_mca_base_var.ll index 6c2e02a0585..d85c36d8a0e 100644 --- a/bench/openmpi/optimized/pmix_mca_base_var.ll +++ b/bench/openmpi/optimized/pmix_mca_base_var.ll @@ -2433,8 +2433,8 @@ pmix_obj_new_tma.exit: ; preds = %.lr.ph.i.i, %41, %4 %54 = add i64 %53, 1 %55 = tail call noalias ptr @malloc(i64 noundef %54) #32 %56 = load i8, ptr %0, align 1 - %.not135241 = icmp eq i8 %56, 0 - br i1 %.not135241, label %._crit_edge, label %.lr.ph + %.not135242 = icmp eq i8 %56, 0 + br i1 %.not135242, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %pmix_obj_new_tma.exit, %.lr.ph %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %pmix_obj_new_tma.exit ] @@ -2890,7 +2890,7 @@ pmix_obj_run_destructors.exit185: ; preds = %.lr.ph.i182, %232 %257 = zext nneg i32 %219 to i64 %258 = inttoptr i64 %257 to ptr %259 = tail call i32 @pmix_hash_table_set_value_ptr(ptr noundef nonnull @pmix_mca_base_var_index_hash, ptr noundef %255, i64 noundef %256, ptr noundef %258) #25 - br label %308 + br label %307 260: ; preds = %29 %261 = load i8, ptr @pmix_mca_base_var_initialized, align 1 @@ -2930,7 +2930,7 @@ pmix_pointer_array_get_item.exit.i: ; preds = %260 %281 = getelementptr inbounds nuw i8, ptr %275, i64 168 %282 = load ptr, ptr %281, align 8 %.not.i190 = icmp eq ptr %1, null - br i1 %.not.i190, label %287, label %sub_0.i + br i1 %.not.i190, label %compare_strings.exit, label %sub_0.i sub_0.i: ; preds = %280 %283 = load i8, ptr %1, align 1 @@ -2943,108 +2943,103 @@ sub_0.i: ; preds = %280 %286 = icmp eq i8 %285, 0 br i1 %286, label %compare_strings.exit.thread, label %.tail.thread.i -287: ; preds = %280 - %288 = icmp ne ptr %282, null - %spec.select.i = zext i1 %288 to i32 - br label %compare_strings.exit - .tail.thread.i: ; preds = %.tail.i, %sub_0.i %.not16.i = icmp eq ptr %282, null - br i1 %.not16.i, label %compare_strings.exit.thread233, label %289 - -289: ; preds = %.tail.thread.i - %290 = call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %1, ptr noundef nonnull readonly dereferenceable(1) %282) #30 - br label %compare_strings.exit - -compare_strings.exit: ; preds = %287, %289 - %.0.i191 = phi i32 [ %290, %289 ], [ %spec.select.i, %287 ] - %.not131 = icmp eq i32 %.0.i191, 0 - br i1 %.not131, label %compare_strings.exit.thread, label %compare_strings.exit.thread233 - -compare_strings.exit.thread: ; preds = %.tail.i, %compare_strings.exit - %291 = getelementptr inbounds nuw i8, ptr %275, i64 176 - %292 = load ptr, ptr %291, align 8 - %293 = call fastcc i32 @compare_strings(ptr noundef %2, ptr noundef %292) - %.not132 = icmp eq i32 %293, 0 - br i1 %.not132, label %294, label %compare_strings.exit.thread233 - -294: ; preds = %compare_strings.exit.thread - %295 = getelementptr inbounds nuw i8, ptr %268, i64 136 - %296 = load ptr, ptr %295, align 8 - %297 = call fastcc i32 @compare_strings(ptr noundef %3, ptr noundef %296) - %.not133 = icmp eq i32 %297, 0 - br i1 %.not133, label %305, label %compare_strings.exit.thread233 - -compare_strings.exit.thread233: ; preds = %.tail.thread.i, %294, %compare_strings.exit.thread, %compare_strings.exit - %298 = getelementptr inbounds nuw i8, ptr %268, i64 144 - %299 = load ptr, ptr %298, align 8 - %300 = getelementptr inbounds nuw i8, ptr %275, i64 176 - %301 = load ptr, ptr %300, align 8 - %302 = getelementptr inbounds nuw i8, ptr %268, i64 136 - %303 = load ptr, ptr %302, align 8 - %304 = call i32 (ptr, ptr, i32, ...) @pmix_show_help(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.72, i32 noundef 1, ptr noundef %299, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %282, ptr noundef %301, ptr noundef %303) #25 + br i1 %.not16.i, label %compare_strings.exit.thread233, label %287 + +287: ; preds = %.tail.thread.i + %288 = call i32 @strcmp(ptr noundef nonnull readonly dereferenceable(1) %1, ptr noundef nonnull readonly dereferenceable(1) %282) #30 + %289 = icmp eq i32 %288, 0 + br i1 %289, label %compare_strings.exit.thread, label %compare_strings.exit.thread233 + +compare_strings.exit: ; preds = %280 + %.not241 = icmp eq ptr %282, null + br i1 %.not241, label %compare_strings.exit.thread, label %compare_strings.exit.thread233 + +compare_strings.exit.thread: ; preds = %287, %.tail.i, %compare_strings.exit + %290 = getelementptr inbounds nuw i8, ptr %275, i64 176 + %291 = load ptr, ptr %290, align 8 + %292 = call fastcc i32 @compare_strings(ptr noundef %2, ptr noundef %291) + %.not132 = icmp eq i32 %292, 0 + br i1 %.not132, label %293, label %compare_strings.exit.thread233 + +293: ; preds = %compare_strings.exit.thread + %294 = getelementptr inbounds nuw i8, ptr %268, i64 136 + %295 = load ptr, ptr %294, align 8 + %296 = call fastcc i32 @compare_strings(ptr noundef %3, ptr noundef %295) + %.not133 = icmp eq i32 %296, 0 + br i1 %.not133, label %304, label %compare_strings.exit.thread233 + +compare_strings.exit.thread233: ; preds = %287, %.tail.thread.i, %293, %compare_strings.exit.thread, %compare_strings.exit + %297 = getelementptr inbounds nuw i8, ptr %268, i64 144 + %298 = load ptr, ptr %297, align 8 + %299 = getelementptr inbounds nuw i8, ptr %275, i64 176 + %300 = load ptr, ptr %299, align 8 + %301 = getelementptr inbounds nuw i8, ptr %268, i64 136 + %302 = load ptr, ptr %301, align 8 + %303 = call i32 (ptr, ptr, i32, ...) @pmix_show_help(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.72, i32 noundef 1, ptr noundef %298, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %282, ptr noundef %300, ptr noundef %302) #25 br label %pmix_pointer_array_get_item.exit.thread -305: ; preds = %294 - %306 = getelementptr inbounds nuw i8, ptr %268, i64 128 - %307 = load i32, ptr %306, align 8 - %.not134 = icmp eq i32 %307, %5 - br i1 %.not134, label %308, label %pmix_pointer_array_get_item.exit.thread +304: ; preds = %293 + %305 = getelementptr inbounds nuw i8, ptr %268, i64 128 + %306 = load i32, ptr %305, align 8 + %.not134 = icmp eq i32 %306, %5 + br i1 %.not134, label %307, label %pmix_pointer_array_get_item.exit.thread -308: ; preds = %305, %251 - %.0222 = phi ptr [ %37, %251 ], [ %268, %305 ] +307: ; preds = %304, %251 + %.0222 = phi ptr [ %37, %251 ], [ %268, %304 ] %.not140 = icmp eq ptr %.0112, null - br i1 %.not140, label %309, label %316 - -309: ; preds = %308 - %310 = getelementptr inbounds nuw i8, ptr %.0222, i64 368 - store ptr %8, ptr %310, align 8 - %311 = add i32 %5, -5 - %or.cond = icmp ult i32 %311, 2 - br i1 %or.cond, label %312, label %pmix_value_array_append_item.exit - -312: ; preds = %309 - %313 = load ptr, ptr %8, align 8 - %.not141 = icmp eq ptr %313, null - br i1 %.not141, label %pmix_value_array_append_item.exit, label %314 - -314: ; preds = %312 - %315 = call noalias ptr @strdup(ptr noundef nonnull %313) #25 - store ptr %315, ptr %8, align 8 + br i1 %.not140, label %308, label %315 + +308: ; preds = %307 + %309 = getelementptr inbounds nuw i8, ptr %.0222, i64 368 + store ptr %8, ptr %309, align 8 + %310 = add i32 %5, -5 + %or.cond = icmp ult i32 %310, 2 + br i1 %or.cond, label %311, label %pmix_value_array_append_item.exit + +311: ; preds = %308 + %312 = load ptr, ptr %8, align 8 + %.not141 = icmp eq ptr %312, null + br i1 %.not141, label %pmix_value_array_append_item.exit, label %313 + +313: ; preds = %311 + %314 = call noalias ptr @strdup(ptr noundef nonnull %312) #25 + store ptr %314, ptr %8, align 8 br label %pmix_value_array_append_item.exit -316: ; preds = %308 - %317 = getelementptr inbounds nuw i8, ptr %.0112, i64 168 - %318 = getelementptr inbounds nuw i8, ptr %.0112, i64 304 - %319 = load i64, ptr %318, align 8 - %320 = add i64 %319, 1 - %321 = call i32 @pmix_value_array_set_size(ptr noundef nonnull %317, i64 noundef %320) #25 - %.not12.i.i = icmp eq i32 %321, 0 - br i1 %.not12.i.i, label %322, label %pmix_value_array_append_item.exit - -322: ; preds = %316 - %323 = getelementptr inbounds nuw i8, ptr %.0112, i64 288 - %324 = load ptr, ptr %323, align 8 - %325 = getelementptr inbounds nuw i8, ptr %.0112, i64 296 - %326 = load i64, ptr %325, align 8 - %327 = mul i64 %326, %319 - %328 = getelementptr inbounds i8, ptr %324, i64 %327 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %328, ptr nonnull readonly align 4 %12, i64 %326, i1 false) +315: ; preds = %307 + %316 = getelementptr inbounds nuw i8, ptr %.0112, i64 168 + %317 = getelementptr inbounds nuw i8, ptr %.0112, i64 304 + %318 = load i64, ptr %317, align 8 + %319 = add i64 %318, 1 + %320 = call i32 @pmix_value_array_set_size(ptr noundef nonnull %316, i64 noundef %319) #25 + %.not12.i.i = icmp eq i32 %320, 0 + br i1 %.not12.i.i, label %321, label %pmix_value_array_append_item.exit + +321: ; preds = %315 + %322 = getelementptr inbounds nuw i8, ptr %.0112, i64 288 + %323 = load ptr, ptr %322, align 8 + %324 = getelementptr inbounds nuw i8, ptr %.0112, i64 296 + %325 = load i64, ptr %324, align 8 + %326 = mul i64 %325, %318 + %327 = getelementptr inbounds i8, ptr %323, i64 %326 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %327, ptr nonnull readonly align 4 %12, i64 %325, i1 false) br label %pmix_value_array_append_item.exit -pmix_value_array_append_item.exit: ; preds = %322, %316, %312, %314, %309 - %329 = getelementptr inbounds nuw i8, ptr %.0222, i64 320 - %330 = load i32, ptr %329, align 8 - %331 = or i32 %330, 65536 - store i32 %331, ptr %329, align 8 - %332 = call fastcc i32 @var_set_initial(ptr noundef nonnull %.0222, ptr noundef %.0112) - %.not142 = icmp eq i32 %332, 0 +pmix_value_array_append_item.exit: ; preds = %321, %315, %311, %313, %308 + %328 = getelementptr inbounds nuw i8, ptr %.0222, i64 320 + %329 = load i32, ptr %328, align 8 + %330 = or i32 %329, 65536 + store i32 %330, ptr %328, align 8 + %331 = call fastcc i32 @var_set_initial(ptr noundef nonnull %.0222, ptr noundef %.0112) + %.not142 = icmp eq i32 %331, 0 %.0..0..0.221 = load i32, ptr %12, align 4 - %spec.select = select i1 %.not142, i32 %.0..0..0.221, i32 %332 + %spec.select = select i1 %.not142, i32 %.0..0..0.221, i32 %331 br label %pmix_pointer_array_get_item.exit.thread -pmix_pointer_array_get_item.exit.thread: ; preds = %pmix_pointer_array_get_item.exit.i, %260, %17, %243, %245, %215, %217, %158, %160, %101, %103, %pmix_value_array_append_item.exit, %305, %270, %226, %198, %141, %84, %32, %27, %pmix_pointer_array_get_item.exit, %15, %compare_strings.exit.thread233 - %.0111 = phi i32 [ -1, %compare_strings.exit.thread233 ], [ -27, %15 ], [ -46, %pmix_pointer_array_get_item.exit ], [ %28, %27 ], [ %33, %32 ], [ -29, %84 ], [ -1, %141 ], [ -1, %198 ], [ -1, %226 ], [ -1, %270 ], [ -65, %305 ], [ %spec.select, %pmix_value_array_append_item.exit ], [ -29, %103 ], [ -29, %101 ], [ -1, %160 ], [ -1, %158 ], [ -1, %217 ], [ -1, %215 ], [ -1, %245 ], [ -1, %243 ], [ -46, %17 ], [ -1, %260 ], [ -1, %pmix_pointer_array_get_item.exit.i ] +pmix_pointer_array_get_item.exit.thread: ; preds = %pmix_pointer_array_get_item.exit.i, %260, %17, %243, %245, %215, %217, %158, %160, %101, %103, %pmix_value_array_append_item.exit, %304, %270, %226, %198, %141, %84, %32, %27, %pmix_pointer_array_get_item.exit, %15, %compare_strings.exit.thread233 + %.0111 = phi i32 [ -1, %compare_strings.exit.thread233 ], [ -27, %15 ], [ -46, %pmix_pointer_array_get_item.exit ], [ %28, %27 ], [ %33, %32 ], [ -29, %84 ], [ -1, %141 ], [ -1, %198 ], [ -1, %226 ], [ -1, %270 ], [ -65, %304 ], [ %spec.select, %pmix_value_array_append_item.exit ], [ -29, %103 ], [ -29, %101 ], [ -1, %160 ], [ -1, %158 ], [ -1, %217 ], [ -1, %215 ], [ -1, %245 ], [ -1, %243 ], [ -46, %17 ], [ -1, %260 ], [ -1, %pmix_pointer_array_get_item.exit.i ] ret i32 %.0111 } diff --git a/bench/openssl/optimized/libcrypto-lib-cms_kari.ll b/bench/openssl/optimized/libcrypto-lib-cms_kari.ll index 3cd24e2ca51..a972a2c7c19 100644 --- a/bench/openssl/optimized/libcrypto-lib-cms_kari.ll +++ b/bench/openssl/optimized/libcrypto-lib-cms_kari.ll @@ -895,14 +895,7 @@ if.end: ; preds = %entry %call.i = tail call ptr @EVP_CIPHER_CTX_get0_cipher(ptr noundef %.val) #5 store ptr %call.i, ptr %kekcipher.i, align 8 %cmp.not.i = icmp eq ptr %call.i, null - br i1 %cmp.not.i, label %if.end7.i, label %if.then.i - -if.then.i: ; preds = %if.end - %call3.i = tail call ptr @EVP_CIPHER_CTX_get0_cipher(ptr noundef %.val) #5 - %call4.i = tail call i32 @EVP_CIPHER_get_mode(ptr noundef %call3.i) #5 - %cmp5.not.i = icmp eq i32 %call4.i, 65538 - %..i = zext i1 %cmp5.not.i to i32 - br label %cms_wrap_init.exit + br i1 %cmp.not.i, label %if.end7.i, label %cms_wrap_init.exit if.end7.i: ; preds = %if.end %cmp8.i = icmp eq ptr %3, null @@ -961,30 +954,33 @@ enc.i: ; preds = %if.else34.i, %if.el if.end46.i: ; preds = %enc.i %call47.i = call i32 @EVP_EncryptInit_ex(ptr noundef %.val, ptr noundef nonnull %call43.i, ptr noundef null, ptr noundef null, ptr noundef null) #5 call void @EVP_CIPHER_free(ptr noundef nonnull %call43.i) #5 - br label %cms_wrap_init.exit + %8 = icmp eq i32 %call47.i, 0 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %kekcipher.i) + br i1 %8, label %return, label %if.end3 cms_wrap_init.exit.thread: ; preds = %if.end7.i, %if.then14.i, %if.then21.i, %enc.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %kekcipher.i) br label %return -cms_wrap_init.exit: ; preds = %if.then.i, %if.end46.i - %retval.0.i = phi i32 [ %call47.i, %if.end46.i ], [ %..i, %if.then.i ] +cms_wrap_init.exit: ; preds = %if.end + %call3.i = tail call ptr @EVP_CIPHER_CTX_get0_cipher(ptr noundef %.val) #5 + %call4.i = tail call i32 @EVP_CIPHER_get_mode(ptr noundef %call3.i) #5 + %cmp5.not.i.not = icmp eq i32 %call4.i, 65538 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %kekcipher.i) - %tobool.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool.not, label %return, label %if.end3 + br i1 %cmp5.not.i.not, label %if.end3, label %return -if.end3: ; preds = %cms_wrap_init.exit +if.end3: ; preds = %if.end46.i, %cms_wrap_init.exit %originator = getelementptr inbounds nuw i8, ptr %1, i64 8 - %8 = load ptr, ptr %originator, align 8 - %9 = load i32, ptr %8, align 8 - %cmp5 = icmp eq i32 %9, -1 + %9 = load ptr, ptr %originator, align 8 + %10 = load i32, ptr %9, align 8 + %cmp5 = icmp eq i32 %10, -1 br i1 %cmp5, label %if.then6, label %if.end16 if.then6: ; preds = %if.end3 - store i32 2, ptr %8, align 8 + store i32 2, ptr %9, align 8 %call9 = call ptr @CMS_OriginatorPublicKey_it() #5 %call10 = call ptr @ASN1_item_new(ptr noundef %call9) #5 - %d11 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %d11 = getelementptr inbounds nuw i8, ptr %9, i64 8 store ptr %call10, ptr %d11, align 8 %tobool13.not = icmp eq ptr %call10, null br i1 %tobool13.not, label %return, label %if.end16 @@ -1008,34 +1004,34 @@ for.body.lr.ph: ; preds = %for.cond.preheader for.body: ; preds = %for.body.lr.ph, %if.end33 %i.021 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %if.end33 ] %call25 = call ptr @OPENSSL_sk_value(ptr noundef %2, i32 noundef %i.021) #5 - %10 = load ptr, ptr %pctx, align 8 + %11 = load ptr, ptr %pctx, align 8 %pkey = getelementptr inbounds nuw i8, ptr %call25, i64 16 - %11 = load ptr, ptr %pkey, align 8 - %call26 = call i32 @EVP_PKEY_derive_set_peer(ptr noundef %10, ptr noundef %11) #5 + %12 = load ptr, ptr %pkey, align 8 + %call26 = call i32 @EVP_PKEY_derive_set_peer(ptr noundef %11, ptr noundef %12) #5 %cmp27 = icmp slt i32 %call26, 1 br i1 %cmp27, label %return, label %if.end29 if.end29: ; preds = %for.body - %12 = load ptr, ptr %key, align 8 - %13 = load i64, ptr %keylen, align 8 - %call30 = call fastcc i32 @cms_kek_cipher(ptr noundef %enckey, ptr noundef %enckeylen, ptr noundef %12, i64 noundef %13, ptr noundef nonnull %1, i32 noundef 1) + %13 = load ptr, ptr %key, align 8 + %14 = load i64, ptr %keylen, align 8 + %call30 = call fastcc i32 @cms_kek_cipher(ptr noundef %enckey, ptr noundef %enckeylen, ptr noundef %13, i64 noundef %14, ptr noundef nonnull %1, i32 noundef 1) %tobool31.not = icmp eq i32 %call30, 0 br i1 %tobool31.not, label %return, label %if.end33 if.end33: ; preds = %if.end29 %encryptedKey = getelementptr inbounds nuw i8, ptr %call25, i64 8 - %14 = load ptr, ptr %encryptedKey, align 8 - %15 = load ptr, ptr %enckey, align 8 - %16 = load i64, ptr %enckeylen, align 8 - %conv = trunc i64 %16 to i32 - call void @ASN1_STRING_set0(ptr noundef %14, ptr noundef %15, i32 noundef %conv) #5 + %15 = load ptr, ptr %encryptedKey, align 8 + %16 = load ptr, ptr %enckey, align 8 + %17 = load i64, ptr %enckeylen, align 8 + %conv = trunc i64 %17 to i32 + call void @ASN1_STRING_set0(ptr noundef %15, ptr noundef %16, i32 noundef %conv) #5 %inc = add nuw nsw i32 %i.021, 1 %call22 = call i32 @OPENSSL_sk_num(ptr noundef %2) #5 %cmp23 = icmp slt i32 %inc, %call22 br i1 %cmp23, label %for.body, label %return, !llvm.loop !4 -return: ; preds = %for.body, %if.end29, %if.end33, %for.cond.preheader, %cms_wrap_init.exit.thread, %if.end16, %if.then6, %cms_wrap_init.exit, %if.then - %retval.0 = phi i32 [ 0, %if.then ], [ 0, %cms_wrap_init.exit ], [ 0, %if.then6 ], [ 0, %if.end16 ], [ 0, %cms_wrap_init.exit.thread ], [ 1, %for.cond.preheader ], [ 0, %for.body ], [ 0, %if.end29 ], [ 1, %if.end33 ] +return: ; preds = %for.body, %if.end29, %if.end33, %if.end46.i, %for.cond.preheader, %cms_wrap_init.exit.thread, %if.end16, %if.then6, %cms_wrap_init.exit, %if.then + %retval.0 = phi i32 [ 0, %if.then ], [ 0, %cms_wrap_init.exit ], [ 0, %if.then6 ], [ 0, %if.end16 ], [ 0, %cms_wrap_init.exit.thread ], [ 1, %for.cond.preheader ], [ 0, %if.end46.i ], [ 0, %for.body ], [ 0, %if.end29 ], [ 1, %if.end33 ] ret i32 %retval.0 } diff --git a/bench/openssl/optimized/libcrypto-lib-encoder_pkey.ll b/bench/openssl/optimized/libcrypto-lib-encoder_pkey.ll index 05d7573f9ce..877915e83b7 100644 --- a/bench/openssl/optimized/libcrypto-lib-encoder_pkey.ll +++ b/bench/openssl/optimized/libcrypto-lib-encoder_pkey.ll @@ -447,74 +447,70 @@ for.body.lr.ph: ; preds = %if.then4 %does_selection = getelementptr inbounds nuw i8, ptr %encoder, i64 96 %ctx = getelementptr inbounds nuw i8, ptr %arg, i64 40 %import_object = getelementptr inbounds nuw i8, ptr %encoder, i64 112 + %wide.trip.count = zext nneg i32 %call7 to i64 br label %for.body for.body: ; preds = %for.body.backedge, %for.body.lr.ph - %i.024 = phi i32 [ 0, %for.body.lr.ph ], [ %i.024.be, %for.body.backedge ] + %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.be, %for.body.backedge ] %bf.load11 = load i8, ptr %flag_find_same_provider, align 8 %bf.clear12 = and i8 %bf.load11, 1 %tobool14.not = icmp eq i8 %bf.clear12, 0 - br i1 %tobool14.not, label %if.else, label %if.then15 + br i1 %tobool14.not, label %if.end22, label %if.then15 if.then15: ; preds = %for.body %5 = load ptr, ptr %id_names, align 8 - %idxprom = zext nneg i32 %i.024 to i64 - %arrayidx = getelementptr inbounds nuw i32, ptr %5, i64 %idxprom + %arrayidx = getelementptr inbounds nuw i32, ptr %5, i64 %indvars.iv %6 = load i32, ptr %arrayidx, align 4 %7 = load i32, ptr %id, align 8 - %cmp16 = icmp eq i32 %6, %7 - %conv17 = zext i1 %cmp16 to i32 - br label %if.end22 + %cmp16.not = icmp eq i32 %6, %7 + br i1 %cmp16.not, label %lor.lhs.false, label %for.inc -if.else: ; preds = %for.body +if.end22: ; preds = %for.body %8 = load ptr, ptr %arg, align 8 - %call20 = tail call ptr @OPENSSL_sk_value(ptr noundef %8, i32 noundef %i.024) #5 + %9 = trunc nuw nsw i64 %indvars.iv to i32 + %call20 = tail call ptr @OPENSSL_sk_value(ptr noundef %8, i32 noundef %9) #5 %call21 = tail call i32 @OSSL_ENCODER_is_a(ptr noundef %encoder, ptr noundef %call20) #5 - br label %if.end22 + %10 = icmp eq i32 %call21, 0 + br i1 %10, label %for.inc, label %lor.lhs.false -if.end22: ; preds = %if.else, %if.then15 - %match.0 = phi i32 [ %conv17, %if.then15 ], [ %call21, %if.else ] - %tobool23.not = icmp eq i32 %match.0, 0 - br i1 %tobool23.not, label %for.inc, label %lor.lhs.false - -lor.lhs.false: ; preds = %if.end22 - %9 = load ptr, ptr %does_selection, align 8 - %cmp24.not = icmp eq ptr %9, null +lor.lhs.false: ; preds = %if.then15, %if.end22 + %11 = load ptr, ptr %does_selection, align 8 + %cmp24.not = icmp eq ptr %11, null br i1 %cmp24.not, label %lor.lhs.false29, label %land.lhs.true land.lhs.true: ; preds = %lor.lhs.false - %10 = load ptr, ptr %ctx, align 8 - %11 = load i32, ptr %10, align 8 - %call27 = tail call i32 %9(ptr noundef %call5, i32 noundef %11) #5 + %12 = load ptr, ptr %ctx, align 8 + %13 = load i32, ptr %12, align 8 + %call27 = tail call i32 %11(ptr noundef %call5, i32 noundef %13) #5 %tobool28.not = icmp eq i32 %call27, 0 br i1 %tobool28.not, label %for.inc, label %lor.lhs.false29 lor.lhs.false29: ; preds = %land.lhs.true, %lor.lhs.false - %12 = load ptr, ptr %keymgmt_prov, align 8 - %cmp31.not = icmp eq ptr %12, %call + %14 = load ptr, ptr %keymgmt_prov, align 8 + %cmp31.not = icmp eq ptr %14, %call br i1 %cmp31.not, label %if.end37, label %land.lhs.true33 land.lhs.true33: ; preds = %lor.lhs.false29 - %13 = load ptr, ptr %import_object, align 8 - %cmp34 = icmp eq ptr %13, null + %15 = load ptr, ptr %import_object, align 8 + %cmp34 = icmp eq ptr %15, null br i1 %cmp34, label %for.inc, label %if.end37 if.end37: ; preds = %land.lhs.true33, %lor.lhs.false29 - %14 = load ptr, ptr %ctx, align 8 - %call39 = tail call i32 @OSSL_ENCODER_CTX_add_encoder(ptr noundef %14, ptr noundef nonnull %encoder) #5 - %tobool40.not = icmp eq i32 %call39, 0 - %inc = add nuw nsw i32 %i.024, 1 - %cmp8 = icmp slt i32 %inc, %call7 - %or.cond = select i1 %tobool40.not, i1 %cmp8, i1 false - br i1 %or.cond, label %for.body.backedge, label %if.end43 - -for.inc: ; preds = %if.end22, %land.lhs.true, %land.lhs.true33 - %inc.old = add nuw nsw i32 %i.024, 1 - %cmp8.old = icmp slt i32 %inc.old, %call7 - br i1 %cmp8.old, label %for.body.backedge, label %if.end43 + %16 = load ptr, ptr %ctx, align 8 + %call39 = tail call i32 @OSSL_ENCODER_CTX_add_encoder(ptr noundef %16, ptr noundef nonnull %encoder) #5 + %tobool40.not = icmp ne i32 %call39, 0 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %or.cond = select i1 %tobool40.not, i1 true, i1 %exitcond.not + br i1 %or.cond, label %if.end43, label %for.body.backedge + +for.inc: ; preds = %if.then15, %if.end22, %land.lhs.true, %land.lhs.true33 + %indvars.iv.next.old = add nuw nsw i64 %indvars.iv, 1 + %exitcond.not.old = icmp eq i64 %indvars.iv.next.old, %wide.trip.count + br i1 %exitcond.not.old, label %if.end43, label %for.body.backedge for.body.backedge: ; preds = %for.inc, %if.end37 - %i.024.be = phi i32 [ %inc.old, %for.inc ], [ %inc, %if.end37 ] + %indvars.iv.be = phi i64 [ %indvars.iv.next.old, %for.inc ], [ %indvars.iv.next, %if.end37 ] br label %for.body, !llvm.loop !6 if.end43: ; preds = %if.end37, %for.inc, %if.then4, %if.end diff --git a/bench/openssl/optimized/libdefault-lib-cipher_aes_wrp.ll b/bench/openssl/optimized/libdefault-lib-cipher_aes_wrp.ll index 8652970ded1..a7556666c9f 100644 --- a/bench/openssl/optimized/libdefault-lib-cipher_aes_wrp.ll +++ b/bench/openssl/optimized/libdefault-lib-cipher_aes_wrp.ll @@ -780,34 +780,20 @@ if.end22: ; preds = %if.then18 %bf.load23 = load i8, ptr %enc1, align 4 %3 = and i8 %bf.load23, 64 %cmp26 = icmp eq i8 %3, 0 - br i1 %cmp26, label %if.then27, label %if.else33 - -if.then27: ; preds = %if.end22 - %bf.lshr30 = lshr i8 %bf.load23, 1 - %bf.clear31 = and i8 %bf.lshr30, 1 - %bf.cast32 = zext nneg i8 %bf.clear31 to i32 - br label %if.end40 - -if.else33: ; preds = %if.end22 %4 = and i8 %bf.load23, 2 - %tobool39.not = icmp eq i8 %4, 0 - %lnot.ext = zext i1 %tobool39.not to i32 - br label %if.end40 - -if.end40: ; preds = %if.else33, %if.then27 - %use_forward_transform.0 = phi i32 [ %bf.cast32, %if.then27 ], [ %lnot.ext, %if.else33 ] - %tobool41.not = icmp eq i32 %use_forward_transform.0, 0 + %tobool39.not = icmp ne i8 %4, 0 + %use_forward_transform.0 = xor i1 %cmp26, %tobool39.not %keylen.tr = trunc i64 %keylen to i32 %conv46 = shl i32 %keylen.tr, 3 %ks47 = getelementptr inbounds nuw i8, ptr %vctx, i64 192 %block49 = getelementptr inbounds nuw i8, ptr %vctx, i64 48 - br i1 %tobool41.not, label %if.else44, label %if.then42 + br i1 %use_forward_transform.0, label %if.else44, label %if.then42 -if.then42: ; preds = %if.end40 +if.then42: ; preds = %if.end22 %call43 = tail call i32 @AES_set_encrypt_key(ptr noundef nonnull %key, i32 noundef %conv46, ptr noundef nonnull %ks47) #3 br label %if.end51.sink.split -if.else44: ; preds = %if.end40 +if.else44: ; preds = %if.end22 %call48 = tail call i32 @AES_set_decrypt_key(ptr noundef nonnull %key, i32 noundef %conv46, ptr noundef nonnull %ks47) #3 br label %if.end51.sink.split diff --git a/bench/openssl/optimized/libdefault-lib-dsa_kmgmt.ll b/bench/openssl/optimized/libdefault-lib-dsa_kmgmt.ll index 33509f9f403..4b50138df1e 100644 --- a/bench/openssl/optimized/libdefault-lib-dsa_kmgmt.ll +++ b/bench/openssl/optimized/libdefault-lib-dsa_kmgmt.ll @@ -1013,8 +1013,7 @@ if.end7: ; preds = %if.end3 if.end15: ; preds = %if.end7 %call12 = tail call ptr @ossl_dsa_get0_params(ptr noundef nonnull %keydata) #6 %call13 = tail call i32 @ossl_ffc_params_todata(ptr noundef %call12, ptr noundef nonnull %call4, ptr noundef null) #6 - %tobool14 = icmp ne i32 %call13, 0 - %land.ext = zext i1 %tobool14 to i32 + %tobool14.not = icmp eq i32 %call13, 0 %and16 = and i32 %selection, 3 %cmp17.not = icmp eq i32 %and16, 0 br i1 %cmp17.not, label %if.end27, label %if.then18 @@ -1025,7 +1024,7 @@ if.end15.thread: ; preds = %if.end7 br i1 %cmp17.not17, label %lor.lhs.false29, label %if.end.i if.then18: ; preds = %if.end15 - br i1 %tobool14, label %if.end.i, label %err + br i1 %tobool14.not, label %err, label %if.end.i if.end.i: ; preds = %if.end15.thread, %if.then18 %and19 = and i32 %selection, 1 @@ -1043,33 +1042,32 @@ if.end.i: ; preds = %if.end15.thread, %i land.lhs.true2.i: ; preds = %if.end.i %call.i = call i32 @ossl_param_build_set_bn(ptr noundef nonnull %call4, ptr noundef null, ptr noundef nonnull @.str.21, ptr noundef nonnull %0) #6 %tobool3.not.i = icmp eq i32 %call.i, 0 - br i1 %tobool3.not.i, label %dsa_key_todata.exit, label %if.end5.i + br i1 %tobool3.not.i, label %dsa_key_todata.exit.thread, label %if.end5.i if.end5.i: ; preds = %land.lhs.true2.i, %if.end.i %1 = load ptr, ptr %pub.i, align 8 %cmp6.not.i = icmp eq ptr %1, null - br i1 %cmp6.not.i, label %if.end11.i, label %land.lhs.true7.i + br i1 %cmp6.not.i, label %dsa_key_todata.exit, label %land.lhs.true7.i land.lhs.true7.i: ; preds = %if.end5.i %call8.i = call i32 @ossl_param_build_set_bn(ptr noundef nonnull %call4, ptr noundef null, ptr noundef nonnull @.str.22, ptr noundef nonnull %1) #6 %tobool9.not.i = icmp eq i32 %call8.i, 0 - br i1 %tobool9.not.i, label %dsa_key_todata.exit, label %if.end11.i + br i1 %tobool9.not.i, label %dsa_key_todata.exit.thread, label %dsa_key_todata.exit -if.end11.i: ; preds = %land.lhs.true7.i, %if.end5.i - br label %dsa_key_todata.exit +dsa_key_todata.exit.thread: ; preds = %land.lhs.true2.i, %land.lhs.true7.i + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %priv.i) + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %pub.i) + br label %err -dsa_key_todata.exit: ; preds = %land.lhs.true2.i, %land.lhs.true7.i, %if.end11.i - %retval.0.i = phi i32 [ 1, %if.end11.i ], [ 0, %land.lhs.true2.i ], [ 0, %land.lhs.true7.i ] +dsa_key_todata.exit: ; preds = %if.end5.i, %land.lhs.true7.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %priv.i) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %pub.i) - br label %if.end27 + br label %lor.lhs.false29 -if.end27: ; preds = %dsa_key_todata.exit, %if.end15 - %ok.1 = phi i32 [ %land.ext, %if.end15 ], [ %retval.0.i, %dsa_key_todata.exit ] - %tobool28.not = icmp eq i32 %ok.1, 0 - br i1 %tobool28.not, label %err, label %lor.lhs.false29 +if.end27: ; preds = %if.end15 + br i1 %tobool14.not, label %err, label %lor.lhs.false29 -lor.lhs.false29: ; preds = %if.end15.thread, %if.end27 +lor.lhs.false29: ; preds = %dsa_key_todata.exit, %if.end15.thread, %if.end27 %call30 = call ptr @OSSL_PARAM_BLD_to_param(ptr noundef nonnull %call4) #6 %cmp31 = icmp eq ptr %call30, null br i1 %cmp31, label %err, label %if.end33 @@ -1079,8 +1077,8 @@ if.end33: ; preds = %lor.lhs.false29 call void @OSSL_PARAM_free(ptr noundef nonnull %call30) #6 br label %err -err: ; preds = %if.then18, %if.end27, %lor.lhs.false29, %if.end33 - %ok.2 = phi i32 [ %call34, %if.end33 ], [ 0, %lor.lhs.false29 ], [ 0, %if.end27 ], [ 0, %if.then18 ] +err: ; preds = %dsa_key_todata.exit.thread, %if.then18, %if.end27, %lor.lhs.false29, %if.end33 + %ok.2 = phi i32 [ %call34, %if.end33 ], [ 0, %lor.lhs.false29 ], [ 0, %if.end27 ], [ 0, %if.then18 ], [ 0, %dsa_key_todata.exit.thread ] call void @OSSL_PARAM_BLD_free(ptr noundef nonnull %call4) #6 br label %return diff --git a/bench/openssl/optimized/libssl-lib-s3_lib.ll b/bench/openssl/optimized/libssl-lib-s3_lib.ll index 56a78274012..0dfdf380bdf 100644 --- a/bench/openssl/optimized/libssl-lib-s3_lib.ll +++ b/bench/openssl/optimized/libssl-lib-s3_lib.ll @@ -2542,27 +2542,27 @@ land.lhs.true195: ; preds = %if.then179 if.end200: ; preds = %land.lhs.true195, %if.then179 %and201 = and i64 %mask_k.0, %conv191 - %tobool202 = icmp ne i64 %and201, 0 + %tobool202 = icmp eq i64 %and201, 0 %and204 = and i64 %mask_a.0, %conv192 - %tobool205 = icmp ne i64 %and204, 0 - %34 = select i1 %tobool202, i1 %tobool205, i1 false + %tobool205 = icmp eq i64 %and204, 0 + %.not = select i1 %tobool202, i1 true, i1 %tobool205 %and207 = and i64 %conv191, 4 - %tobool208.not = icmp ne i64 %and207, 0 - %brmerge.not = select i1 %tobool208.not, i1 %34, i1 false - br i1 %brmerge.not, label %land.rhs211, label %if.end217 + %tobool208.not = icmp eq i64 %and207, 0 + br i1 %tobool208.not, label %if.end217, label %if.then209 -land.rhs211: ; preds = %if.end200 +if.then209: ; preds = %if.end200 + br i1 %.not, label %for.inc270, label %land.rhs211 + +land.rhs211: ; preds = %if.then209 %id = getelementptr inbounds nuw i8, ptr %call105, i64 24 - %35 = load i32, ptr %id, align 8 - %conv212 = zext i32 %35 to i64 + %34 = load i32, ptr %id, align 8 + %conv212 = zext i32 %34 to i64 %call213 = tail call i32 @tls1_check_ec_tmp_key(ptr noundef nonnull %s, i64 noundef %conv212) #19 %tobool214.not = icmp eq i32 %call213, 0 br i1 %tobool214.not, label %for.inc270, label %if.end221 if.end217: ; preds = %if.end200 - %not.tobool208.not = xor i1 %tobool208.not, true - %narrow = select i1 %not.tobool208.not, i1 %34, i1 false - br i1 %narrow, label %if.end221, label %for.inc270 + br i1 %.not, label %for.inc270, label %if.end221 if.end221: ; preds = %land.rhs211, %land.lhs.true167, %if.end217 %alg_k.2 = phi i64 [ %conv191, %if.end217 ], [ %alg_k.0135, %land.lhs.true167 ], [ %conv191, %land.rhs211 ] @@ -2573,8 +2573,8 @@ if.end221: ; preds = %land.rhs211, %land. if.then227: ; preds = %if.end221 %strength_bits = getelementptr inbounds nuw i8, ptr %call105, i64 68 - %36 = load i32, ptr %strength_bits, align 4 - %call228 = tail call i32 @ssl_security(ptr noundef nonnull %s, i32 noundef 65538, i32 noundef %36, i32 noundef 0, ptr noundef nonnull %call105) #19 + %35 = load i32, ptr %strength_bits, align 4 + %call228 = tail call i32 @ssl_security(ptr noundef nonnull %s, i32 noundef 65538, i32 noundef %35, i32 noundef 0, ptr noundef nonnull %call105) #19 %tobool229.not = icmp eq i32 %call228, 0 br i1 %tobool229.not, label %for.inc270, label %if.end231 @@ -2587,8 +2587,8 @@ if.end231: ; preds = %if.then227 br i1 %or.cond110, label %if.end247, label %land.lhs.true237 land.lhs.true237: ; preds = %if.end231 - %37 = load i8, ptr %is_probably_safari, align 4 - %tobool240.not = icmp eq i8 %37, 0 + %36 = load i8, ptr %is_probably_safari, align 4 + %tobool240.not = icmp eq i8 %36, 0 br i1 %tobool240.not, label %if.end247, label %if.then241 if.then241: ; preds = %land.lhs.true237 @@ -2604,10 +2604,10 @@ if.end247: ; preds = %land.lhs.true237, % br i1 %tobool248.not, label %for.end272, label %if.then249 if.then249: ; preds = %if.end247 - %38 = load ptr, ptr %ctx, align 8 + %37 = load ptr, ptr %ctx, align 8 %algorithm2 = getelementptr inbounds nuw i8, ptr %call268, i64 64 - %39 = load i32, ptr %algorithm2, align 8 - %call254 = tail call ptr @ssl_md(ptr noundef %38, i32 noundef %39) #19 + %38 = load i32, ptr %algorithm2, align 8 + %call254 = tail call ptr @ssl_md(ptr noundef %37, i32 noundef %38) #19 %cmp255.not = icmp eq ptr %call254, null br i1 %cmp255.not, label %if.end261, label %land.lhs.true257 @@ -2621,10 +2621,10 @@ if.end261: ; preds = %land.lhs.true257, % %spec.select111 = select i1 %cmp262, ptr %call268, ptr %ret.0137 br label %for.inc270 -for.inc270: ; preds = %land.rhs211, %if.end261, %if.end221, %if.then241, %if.then243, %if.then227, %if.end217, %land.lhs.true195, %land.lhs.true127, %lor.lhs.false141, %land.lhs.true112, %lor.lhs.false - %alg_k.1 = phi i64 [ %alg_k.0135, %land.lhs.true127 ], [ %alg_k.0135, %lor.lhs.false141 ], [ %conv191, %land.lhs.true195 ], [ %alg_k.2, %if.then241 ], [ %alg_k.2, %if.then243 ], [ %alg_k.2, %if.then227 ], [ %alg_k.2, %if.end221 ], [ %conv191, %if.end217 ], [ %alg_k.0135, %land.lhs.true112 ], [ %alg_k.0135, %lor.lhs.false ], [ %alg_k.2, %if.end261 ], [ %conv191, %land.rhs211 ] - %alg_a.1 = phi i64 [ %alg_a.0136, %land.lhs.true127 ], [ %alg_a.0136, %lor.lhs.false141 ], [ %conv192, %land.lhs.true195 ], [ %alg_a.2, %if.then241 ], [ %alg_a.2, %if.then243 ], [ %alg_a.2, %if.then227 ], [ %alg_a.2, %if.end221 ], [ %conv192, %if.end217 ], [ %alg_a.0136, %land.lhs.true112 ], [ %alg_a.0136, %lor.lhs.false ], [ %alg_a.2, %if.end261 ], [ %conv192, %land.rhs211 ] - %ret.2 = phi ptr [ %ret.0137, %land.lhs.true127 ], [ %ret.0137, %lor.lhs.false141 ], [ %ret.0137, %land.lhs.true195 ], [ %ret.0137, %if.then241 ], [ %call245, %if.then243 ], [ %ret.0137, %if.then227 ], [ %ret.0137, %if.end221 ], [ %ret.0137, %if.end217 ], [ %ret.0137, %land.lhs.true112 ], [ %ret.0137, %lor.lhs.false ], [ %spec.select111, %if.end261 ], [ %ret.0137, %land.rhs211 ] +for.inc270: ; preds = %land.rhs211, %if.end261, %if.then209, %if.end221, %if.then241, %if.then243, %if.then227, %if.end217, %land.lhs.true195, %land.lhs.true127, %lor.lhs.false141, %land.lhs.true112, %lor.lhs.false + %alg_k.1 = phi i64 [ %alg_k.0135, %land.lhs.true127 ], [ %alg_k.0135, %lor.lhs.false141 ], [ %conv191, %land.lhs.true195 ], [ %alg_k.2, %if.then241 ], [ %alg_k.2, %if.then243 ], [ %alg_k.2, %if.then227 ], [ %alg_k.2, %if.end221 ], [ %conv191, %if.end217 ], [ %alg_k.0135, %land.lhs.true112 ], [ %alg_k.0135, %lor.lhs.false ], [ %alg_k.2, %if.end261 ], [ %conv191, %if.then209 ], [ %conv191, %land.rhs211 ] + %alg_a.1 = phi i64 [ %alg_a.0136, %land.lhs.true127 ], [ %alg_a.0136, %lor.lhs.false141 ], [ %conv192, %land.lhs.true195 ], [ %alg_a.2, %if.then241 ], [ %alg_a.2, %if.then243 ], [ %alg_a.2, %if.then227 ], [ %alg_a.2, %if.end221 ], [ %conv192, %if.end217 ], [ %alg_a.0136, %land.lhs.true112 ], [ %alg_a.0136, %lor.lhs.false ], [ %alg_a.2, %if.end261 ], [ %conv192, %if.then209 ], [ %conv192, %land.rhs211 ] + %ret.2 = phi ptr [ %ret.0137, %land.lhs.true127 ], [ %ret.0137, %lor.lhs.false141 ], [ %ret.0137, %land.lhs.true195 ], [ %ret.0137, %if.then241 ], [ %call245, %if.then243 ], [ %ret.0137, %if.then227 ], [ %ret.0137, %if.end221 ], [ %ret.0137, %if.end217 ], [ %ret.0137, %land.lhs.true112 ], [ %ret.0137, %lor.lhs.false ], [ %spec.select111, %if.end261 ], [ %ret.0137, %if.then209 ], [ %ret.0137, %land.rhs211 ] %inc271 = add nuw nsw i32 %i.3134, 1 %call100 = tail call i32 @OPENSSL_sk_num(ptr noundef %prio.0) #19 %cmp101 = icmp slt i32 %inc271, %call100 @@ -4094,8 +4094,6 @@ if.then9.i: ; preds = %if.then.i land.rhs.i: ; preds = %if.then9.i, %if.then.i %call12.i = call i32 @tls13_generate_handshake_secret(ptr noundef nonnull %s, ptr noundef nonnull %call11, i64 noundef %6) #19 - %tobool13.i = icmp ne i32 %call12.i, 0 - %13 = zext i1 %tobool13.i to i32 br label %if.end28 if.else14.i: ; preds = %land.lhs.true.i, %if.then22 @@ -4105,29 +4103,29 @@ if.else14.i: ; preds = %land.lhs.true.i, %i if.end28.thread: ; preds = %if.end21 %pms24 = getelementptr inbounds nuw i8, ptr %s, i64 824 store ptr %call11, ptr %pms24, align 8 - %14 = load i64, ptr %pmslen, align 8 + %13 = load i64, ptr %pmslen, align 8 %pmslen27 = getelementptr inbounds nuw i8, ptr %s, i64 832 - store i64 %14, ptr %pmslen27, align 8 + store i64 %13, ptr %pmslen27, align 8 br label %if.then30 if.end28: ; preds = %if.else14.i, %land.rhs.i - %rv.1.i = phi i32 [ %call15.i, %if.else14.i ], [ %13, %land.rhs.i ] - %15 = icmp eq i32 %rv.1.i, 0 - br i1 %15, label %err, label %if.then30 + %rv.1.i.in = phi i32 [ %call15.i, %if.else14.i ], [ %call12.i, %land.rhs.i ] + %rv.1.i = icmp eq i32 %rv.1.i.in, 0 + br i1 %rv.1.i, label %err, label %if.then30 if.then30: ; preds = %if.end28.thread, %if.end28 %pms.125 = phi ptr [ null, %if.end28.thread ], [ %call11, %if.end28 ] store ptr %call12, ptr %ctp, align 8 - %16 = load i64, ptr %ctlen, align 8 - store i64 %16, ptr %ctlenp, align 8 + %14 = load i64, ptr %ctlen, align 8 + store i64 %14, ptr %ctlenp, align 8 br label %err err: ; preds = %if.then9.i, %if.end28, %if.then30, %if.then20, %if.then16, %if.then9 %pms.0 = phi ptr [ null, %if.then9 ], [ %call11, %if.then16 ], [ %call11, %if.then20 ], [ %pms.125, %if.then30 ], [ %call11, %if.end28 ], [ %call11, %if.then9.i ] %ct.0 = phi ptr [ null, %if.then9 ], [ %call12, %if.then16 ], [ %call12, %if.then20 ], [ null, %if.then30 ], [ %call12, %if.end28 ], [ %call12, %if.then9.i ] %rv.0 = phi i32 [ 0, %if.then9 ], [ 0, %if.then16 ], [ 0, %if.then20 ], [ 1, %if.then30 ], [ 0, %if.end28 ], [ 0, %if.then9.i ] - %17 = load i64, ptr %pmslen, align 8 - call void @CRYPTO_clear_free(ptr noundef %pms.0, i64 noundef %17, ptr noundef nonnull @.str.2, i32 noundef 5029) #19 + %15 = load i64, ptr %pmslen, align 8 + call void @CRYPTO_clear_free(ptr noundef %pms.0, i64 noundef %15, ptr noundef nonnull @.str.2, i32 noundef 5029) #19 call void @CRYPTO_free(ptr noundef %ct.0, ptr noundef nonnull @.str.2, i32 noundef 5030) #19 call void @EVP_PKEY_CTX_free(ptr noundef %call) #19 br label %return diff --git a/bench/openusd/optimized/mvref_common.c.ll b/bench/openusd/optimized/mvref_common.c.ll index 3e396fd5529..dd65e23a92b 100644 --- a/bench/openusd/optimized/mvref_common.c.ll +++ b/bench/openusd/optimized/mvref_common.c.ll @@ -2524,7 +2524,7 @@ get_relative_dist.exit76: ; preds = %get_relative_dist.e br i1 %exitcond.not, label %.split.us, label %get_relative_dist.exit76, !llvm.loop !40 .split.us: ; preds = %get_relative_dist.exit76, %get_relative_dist.exit76.us.preheader - %.0.i121 = phi i32 [ 0, %get_relative_dist.exit76.us.preheader ], [ %46, %get_relative_dist.exit76 ] + %.0.i126 = phi i32 [ 0, %get_relative_dist.exit76.us.preheader ], [ %46, %get_relative_dist.exit76 ] %58 = getelementptr inbounds nuw i8, ptr %15, i64 72 %59 = load ptr, ptr %58, align 8 %60 = add nsw i32 %22, 1 @@ -2538,43 +2538,43 @@ get_relative_dist.exit76: ; preds = %get_relative_dist.e %65 = icmp sgt i32 %63, 0 %.not.i78 = icmp samesign ult i32 %2, 2 %66 = getelementptr inbounds nuw i8, ptr %0, i64 1124 - %67 = tail call i32 @llvm.abs.i32(i32 %.0.i121, i1 true) - %.fr103 = freeze i32 %67 - %68 = icmp ult i32 %.fr103, 32 + %67 = tail call i32 @llvm.abs.i32(i32 %.0.i126, i1 true) + %.fr108 = freeze i32 %67 + %68 = icmp ult i32 %.fr108, 32 %or.cond = and i1 %65, %68 br i1 %or.cond, label %.preheader.us.us.preheader, label %get_ref_frame_buf.exit.thread .preheader.us.us.preheader: ; preds = %.preheader.lr.ph %69 = icmp eq i32 %2, 2 - %70 = sub nsw i32 0, %.0.i121 - %spec.select = select i1 %69, i32 %70, i32 %.0.i121 + %70 = sub nsw i32 0, %.0.i126 + %spec.select = select i1 %69, i32 %70, i32 %.0.i126 %71 = tail call i32 @llvm.umin.i32(i32 %spec.select, i32 31) %72 = tail call i32 @llvm.smax.i32(i32 %spec.select, i32 -31) %73 = icmp sgt i32 %spec.select, 0 %74 = zext nneg i32 %63 to i64 - %wide.trip.count118 = zext nneg i32 %61 to i64 + %wide.trip.count123 = zext nneg i32 %61 to i64 %. = select i1 %73, i32 %71, i32 %72 br label %.preheader.us.us -.preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.split.us101.us - %indvars.iv115 = phi i64 [ 0, %.preheader.us.us.preheader ], [ %indvars.iv.next116, %._crit_edge.split.us101.us ] - %75 = mul nuw nsw i64 %indvars.iv115, %74 - %76 = trunc nuw nsw i64 %indvars.iv115 to i32 +.preheader.us.us: ; preds = %.preheader.us.us.preheader, %._crit_edge.split.us106.us + %indvars.iv120 = phi i64 [ 0, %.preheader.us.us.preheader ], [ %indvars.iv.next121, %._crit_edge.split.us106.us ] + %75 = mul nuw nsw i64 %indvars.iv120, %74 + %76 = trunc nuw nsw i64 %indvars.iv120 to i32 %77 = and i32 %76, 2147483640 %78 = add nuw nsw i32 %77, 8 %invariant.gep = getelementptr inbounds nuw %struct.MV_REF, ptr %59, i64 %75 br label %79 -79: ; preds = %.preheader.us.us, %get_block_position.exit.thread.us100.us - %indvars.iv111 = phi i64 [ 0, %.preheader.us.us ], [ %indvars.iv.next112, %get_block_position.exit.thread.us100.us ] - %gep = getelementptr inbounds nuw %struct.MV_REF, ptr %invariant.gep, i64 %indvars.iv111 +79: ; preds = %.preheader.us.us, %.thread89.us105.us + %indvars.iv116 = phi i64 [ 0, %.preheader.us.us ], [ %indvars.iv.next117, %.thread89.us105.us ] + %gep = getelementptr inbounds nuw %struct.MV_REF, ptr %invariant.gep, i64 %indvars.iv116 %.sroa.0.0.copyload.us.us = load i16, ptr %gep, align 4 %.sroa.3.0..sroa_idx.us.us = getelementptr inbounds nuw i8, ptr %gep, i64 2 %.sroa.3.0.copyload.us.us = load i16, ptr %.sroa.3.0..sroa_idx.us.us, align 2 %80 = getelementptr inbounds nuw i8, ptr %gep, i64 4 %81 = load i8, ptr %80, align 4 %82 = icmp sgt i8 %81, 0 - br i1 %82, label %83, label %get_block_position.exit.thread.us100.us + br i1 %82, label %83, label %.thread89.us105.us 83: ; preds = %79 %84 = zext nneg i8 %81 to i64 @@ -2584,7 +2584,7 @@ get_relative_dist.exit76: ; preds = %get_relative_dist.e %88 = icmp samesign ult i32 %87, 32 %89 = icmp sgt i32 %86, 0 %or.cond.us.us = and i1 %89, %88 - br i1 %or.cond.us.us, label %90, label %get_block_position.exit.thread.us100.us + br i1 %or.cond.us.us, label %90, label %.thread89.us105.us 90: ; preds = %83 %91 = tail call i32 @llvm.umin.i32(i32 %86, i32 31) @@ -2632,7 +2632,7 @@ get_mv_projection.exit.us.us: ; preds = %114, %111 %120 = tail call i32 @llvm.smax.i32(i32 %119, i32 -16383) %121 = tail call i32 @llvm.smin.i32(i32 range(i32 -131071, 131072) %118, i32 16383) %122 = tail call i32 @llvm.smax.i32(i32 %121, i32 -16383) - %123 = trunc nuw nsw i64 %indvars.iv111 to i32 + %123 = trunc nuw nsw i64 %indvars.iv116 to i32 %124 = and i32 %123, 2147483640 %125 = lshr i32 %120, 6 %126 = sub nsw i32 0, %120 @@ -2653,7 +2653,7 @@ get_mv_projection.exit.us.us: ; preds = %114, %111 %.p49.i.us.us = select i1 %.not.i78, i32 %136, i32 %139 %140 = add i32 %.p49.i.us.us, %123 %141 = icmp slt i32 %138, 0 - br i1 %141, label %get_block_position.exit.thread.us100.us, label %142 + br i1 %141, label %.thread89.us105.us, label %142 142: ; preds = %get_mv_projection.exit.us.us %143 = load i32, ptr %23, align 4 @@ -2661,13 +2661,13 @@ get_mv_projection.exit.us.us: ; preds = %114, %111 %145 = icmp sge i32 %138, %144 %146 = icmp slt i32 %140, 0 %or.cond.i.us.us = select i1 %145, i1 true, i1 %146 - br i1 %or.cond.i.us.us, label %get_block_position.exit.thread.us100.us, label %147 + br i1 %or.cond.i.us.us, label %.thread89.us105.us, label %147 147: ; preds = %142 %148 = load i32, ptr %28, align 8 %149 = ashr i32 %148, 1 %.not42.i.us.us = icmp slt i32 %140, %149 - br i1 %.not42.i.us.us, label %150, label %get_block_position.exit.thread.us100.us + br i1 %.not42.i.us.us, label %150, label %.thread89.us105.us 150: ; preds = %147 %151 = icmp sge i32 %138, %77 @@ -2679,35 +2679,35 @@ get_mv_projection.exit.us.us: ; preds = %114, %111 %154 = add nuw nsw i32 %124, 16 %.not44.i.us.us = icmp samesign ult i32 %140, %154 %or.cond48.i.us.us = select i1 %or.cond47.not53.i.us.us, i1 %.not44.i.us.us, i1 false - br i1 %or.cond48.i.us.us, label %get_block_position.exit.us.us, label %get_block_position.exit.thread.us100.us - -get_block_position.exit.us.us: ; preds = %150 - %155 = load i32, ptr %66, align 4 - %156 = ashr i32 %155, 1 - %157 = mul nsw i32 %156, %138 - %158 = add nsw i32 %157, %140 - %159 = sext i32 %158 to i64 - %160 = getelementptr inbounds %struct.TPL_MV_REF, ptr %5, i64 %159 - store i16 %.sroa.0.0.copyload.us.us, ptr %160, align 4 - %161 = getelementptr inbounds nuw i8, ptr %160, i64 2 - store i16 %.sroa.3.0.copyload.us.us, ptr %161, align 2 - %162 = trunc i32 %86 to i8 - %163 = getelementptr inbounds nuw i8, ptr %160, i64 4 - store i8 %162, ptr %163, align 4 - br label %get_block_position.exit.thread.us100.us - -get_block_position.exit.thread.us100.us: ; preds = %get_block_position.exit.us.us, %150, %147, %142, %get_mv_projection.exit.us.us, %83, %79 - %indvars.iv.next112 = add nuw nsw i64 %indvars.iv111, 1 - %exitcond114.not = icmp eq i64 %indvars.iv.next112, %74 - br i1 %exitcond114.not, label %._crit_edge.split.us101.us, label %79, !llvm.loop !41 - -._crit_edge.split.us101.us: ; preds = %get_block_position.exit.thread.us100.us - %indvars.iv.next116 = add nuw nsw i64 %indvars.iv115, 1 - %exitcond119.not = icmp eq i64 %indvars.iv.next116, %wide.trip.count118 - br i1 %exitcond119.not, label %get_ref_frame_buf.exit.thread, label %.preheader.us.us, !llvm.loop !42 - -get_ref_frame_buf.exit.thread: ; preds = %._crit_edge.split.us101.us, %.preheader.lr.ph, %.split.us, %get_ref_frame_map_idx.exit.i, %20, %25, %17, %17, %get_ref_frame_buf.exit - %.0 = phi i32 [ 0, %get_ref_frame_buf.exit ], [ 0, %17 ], [ 0, %17 ], [ 0, %25 ], [ 0, %20 ], [ 0, %get_ref_frame_map_idx.exit.i ], [ 1, %.split.us ], [ 1, %.preheader.lr.ph ], [ 1, %._crit_edge.split.us101.us ] + br i1 %or.cond48.i.us.us, label %155, label %.thread89.us105.us + +155: ; preds = %150 + %156 = load i32, ptr %66, align 4 + %157 = ashr i32 %156, 1 + %158 = mul nsw i32 %157, %138 + %159 = add nsw i32 %158, %140 + %160 = sext i32 %159 to i64 + %161 = getelementptr inbounds %struct.TPL_MV_REF, ptr %5, i64 %160 + store i16 %.sroa.0.0.copyload.us.us, ptr %161, align 4 + %162 = getelementptr inbounds nuw i8, ptr %161, i64 2 + store i16 %.sroa.3.0.copyload.us.us, ptr %162, align 2 + %163 = trunc i32 %86 to i8 + %164 = getelementptr inbounds nuw i8, ptr %161, i64 4 + store i8 %163, ptr %164, align 4 + br label %.thread89.us105.us + +.thread89.us105.us: ; preds = %155, %150, %147, %142, %get_mv_projection.exit.us.us, %83, %79 + %indvars.iv.next117 = add nuw nsw i64 %indvars.iv116, 1 + %exitcond119.not = icmp eq i64 %indvars.iv.next117, %74 + br i1 %exitcond119.not, label %._crit_edge.split.us106.us, label %79, !llvm.loop !41 + +._crit_edge.split.us106.us: ; preds = %.thread89.us105.us + %indvars.iv.next121 = add nuw nsw i64 %indvars.iv120, 1 + %exitcond124.not = icmp eq i64 %indvars.iv.next121, %wide.trip.count123 + br i1 %exitcond124.not, label %get_ref_frame_buf.exit.thread, label %.preheader.us.us, !llvm.loop !42 + +get_ref_frame_buf.exit.thread: ; preds = %._crit_edge.split.us106.us, %.preheader.lr.ph, %.split.us, %get_ref_frame_map_idx.exit.i, %20, %25, %17, %17, %get_ref_frame_buf.exit + %.0 = phi i32 [ 0, %get_ref_frame_buf.exit ], [ 0, %17 ], [ 0, %17 ], [ 0, %25 ], [ 0, %20 ], [ 0, %get_ref_frame_map_idx.exit.i ], [ 1, %.split.us ], [ 1, %.preheader.lr.ph ], [ 1, %._crit_edge.split.us106.us ] ret i32 %.0 } diff --git a/bench/php/optimized/pcre2_dfa_match.ll b/bench/php/optimized/pcre2_dfa_match.ll index 1794cb02043..8699fcd9ace 100644 --- a/bench/php/optimized/pcre2_dfa_match.ll +++ b/bench/php/optimized/pcre2_dfa_match.ll @@ -728,27 +728,25 @@ define i32 @php_pcre2_dfa_match(ptr noundef %0, ptr noundef %1, i64 noundef %2, %373 = icmp eq i8 %371, %.0553 %374 = select i1 %372, i1 true, i1 %373 %narrow = select i1 %.not629, i1 %374, i1 false - %375 = zext i1 %narrow to i32 - %376 = xor i1 %narrow, true - %or.cond21 = select i1 %376, i1 %299, i1 false - br i1 %or.cond21, label %377, label %387 - -377: ; preds = %370 - %378 = zext i8 %371 to i32 - %379 = lshr i32 %378, 3 - %380 = zext nneg i32 %379 to i64 - %381 = getelementptr inbounds nuw i8, ptr %.0550, i64 %380 - %382 = load i8, ptr %381, align 1 - %383 = zext i8 %382 to i32 - %384 = and i32 %378, 7 - %385 = lshr i32 %383, %384 - %386 = and i32 %385, 1 - br label %387 - -387: ; preds = %370, %377 - %.0537 = phi i32 [ %386, %377 ], [ %375, %370 ] - %.not656 = icmp eq i32 %.0537, 0 - br i1 %.not656, label %.thread700, label %514 + %375 = xor i1 %narrow, true + %or.cond21 = select i1 %375, i1 %299, i1 false + br i1 %or.cond21, label %376, label %387 + +376: ; preds = %370 + %377 = zext i8 %371 to i32 + %378 = lshr i32 %377, 3 + %379 = zext nneg i32 %378 to i64 + %380 = getelementptr inbounds nuw i8, ptr %.0550, i64 %379 + %381 = load i8, ptr %380, align 1 + %382 = zext i8 %381 to i32 + %383 = and i32 %377, 7 + %384 = shl nuw nsw i32 1, %383 + %385 = and i32 %384, %382 + %386 = icmp eq i32 %385, 0 + br i1 %386, label %.thread700, label %514 + +387: ; preds = %370 + br i1 %narrow, label %514, label %.thread700 388: ; preds = %.critedge13 br i1 %.not629, label %389, label %427 @@ -1014,10 +1012,10 @@ define i32 @php_pcre2_dfa_match(ptr noundef %0, ptr noundef %1, i64 noundef %2, %or.cond679 = select i1 %512, i1 true, i1 %.not647 br i1 %or.cond679, label %514, label %.thread700 -514: ; preds = %492, %489, %422, %495, %._crit_edge, %428, %.critedge23, %367, %387 - %.2562 = phi ptr [ %.0560, %387 ], [ %.0560, %367 ], [ %.4564, %422 ], [ %.0560, %.critedge23 ], [ %.0560, %428 ], [ %.0560, %._crit_edge ], [ %.0560, %495 ], [ %.0560, %489 ], [ %.0560, %492 ] - %.2557 = phi ptr [ %.0555, %387 ], [ %.0555, %367 ], [ %.4559, %422 ], [ %.0555, %.critedge23 ], [ %.0555, %428 ], [ %.0555, %._crit_edge ], [ %.0555, %495 ], [ %.0555, %489 ], [ %.0555, %492 ] - %.2545 = phi ptr [ %.0543, %387 ], [ %.0543, %367 ], [ %.3546, %422 ], [ %.6, %.critedge23 ], [ %.0543, %428 ], [ %.8.lcssa, %._crit_edge ], [ %.0543, %495 ], [ %.6, %489 ], [ %spec.select678, %492 ] +514: ; preds = %376, %492, %489, %422, %495, %._crit_edge, %428, %.critedge23, %367, %387 + %.2562 = phi ptr [ %.0560, %387 ], [ %.0560, %367 ], [ %.4564, %422 ], [ %.0560, %.critedge23 ], [ %.0560, %428 ], [ %.0560, %._crit_edge ], [ %.0560, %495 ], [ %.0560, %489 ], [ %.0560, %492 ], [ %.0560, %376 ] + %.2557 = phi ptr [ %.0555, %387 ], [ %.0555, %367 ], [ %.4559, %422 ], [ %.0555, %.critedge23 ], [ %.0555, %428 ], [ %.0555, %._crit_edge ], [ %.0555, %495 ], [ %.0555, %489 ], [ %.0555, %492 ], [ %.0555, %376 ] + %.2545 = phi ptr [ %.0543, %387 ], [ %.0543, %367 ], [ %.3546, %422 ], [ %.6, %.critedge23 ], [ %.0543, %428 ], [ %.8.lcssa, %._crit_edge ], [ %.0543, %495 ], [ %.6, %489 ], [ %spec.select678, %492 ], [ %.0543, %376 ] %515 = load ptr, ptr %148, align 8 %516 = load i32, ptr %155, align 4 %517 = and i32 %516, 48 @@ -1269,8 +1267,8 @@ define i32 @php_pcre2_dfa_match(ptr noundef %0, ptr noundef %1, i64 noundef %2, %.0543.be = phi ptr [ %spec.select694, %632 ], [ %.9, %628 ], [ %.9, %625 ], [ %.9, %620 ] br label %310 -.thread700: ; preds = %368, %519, %.critedge35, %593, %604, %606, %543, %542, %387, %422, %._crit_edge, %582, %585, %586 - %.0533 = phi i32 [ %550, %582 ], [ %550, %586 ], [ %550, %585 ], [ -1, %._crit_edge ], [ -1, %422 ], [ -1, %387 ], [ -1, %542 ], [ -1, %543 ], [ -1, %606 ], [ -1, %604 ], [ -1, %593 ], [ -1, %.critedge35 ], [ -1, %519 ], [ -1, %368 ] +.thread700: ; preds = %368, %519, %.critedge35, %593, %604, %606, %543, %542, %387, %422, %._crit_edge, %376, %582, %585, %586 + %.0533 = phi i32 [ %550, %582 ], [ %550, %586 ], [ %550, %585 ], [ -1, %376 ], [ -1, %._crit_edge ], [ -1, %422 ], [ -1, %387 ], [ -1, %542 ], [ -1, %543 ], [ -1, %606 ], [ -1, %604 ], [ -1, %593 ], [ -1, %.critedge35 ], [ -1, %519 ], [ -1, %368 ] %636 = load ptr, ptr %12, align 16 %.not668772 = icmp eq ptr %636, null br i1 %.not668772, label %.loopexit, label %.lr.ph773 diff --git a/bench/php/optimized/php_http_parser.ll b/bench/php/optimized/php_http_parser.ll index 2b05ccbb35f..85f6764ab3d 100644 --- a/bench/php/optimized/php_http_parser.ll +++ b/bench/php/optimized/php_http_parser.ll @@ -2239,31 +2239,24 @@ define hidden i64 @php_http_parser_execute(ptr noundef %0, ptr nocapture noundef 942: ; preds = %939 %943 = load i16, ptr %49, align 8 %.not.i = icmp eq i16 %943, 0 - br i1 %.not.i, label %948, label %944 + br i1 %.not.i, label %php_http_should_keep_alive.exit, label %944 944: ; preds = %942 %945 = load i16, ptr %50, align 2 %.not4.i = icmp eq i16 %945, 0 - br i1 %.not4.i, label %948, label %946 + br i1 %.not4.i, label %php_http_should_keep_alive.exit, label %946 946: ; preds = %944 %947 = and i8 %.pr, 16 - %.not6.i = icmp eq i8 %947, 0 - %..i = zext i1 %.not6.i to i32 - br label %php_http_should_keep_alive.exit - -948: ; preds = %944, %942 - %949 = lshr i8 %.pr, 3 - %.lobit.i = and i8 %949, 1 - %.7.i = zext nneg i8 %.lobit.i to i32 - br label %php_http_should_keep_alive.exit - -php_http_should_keep_alive.exit: ; preds = %946, %948 - %.0.i = phi i32 [ %..i, %946 ], [ %.7.i, %948 ] - %.not1190 = icmp eq i32 %.0.i, 0 - br i1 %.not1190, label %1042, label %950 - -950: ; preds = %939, %php_http_should_keep_alive.exit + %.not6.i.not = icmp eq i8 %947, 0 + br i1 %.not6.i.not, label %950, label %1042 + +php_http_should_keep_alive.exit: ; preds = %942, %944 + %948 = and i8 %.pr, 8 + %949 = icmp eq i8 %948, 0 + br i1 %949, label %1042, label %950 + +950: ; preds = %946, %939, %php_http_should_keep_alive.exit %951 = load ptr, ptr %43, align 8 %.not1191 = icmp eq ptr %951, null br i1 %.not1191, label %958, label %952 @@ -2454,18 +2447,18 @@ php_http_should_keep_alive.exit: ; preds = %946, %948 .fold.split1323: ; preds = %240, %240 br label %1042 -1042: ; preds = %171, %1017, %858, %856, %847, %838, %729, %727, %718, %709, %700, %691, %240, %.fold.split1323, %1019, %1011, %1011, %1004, %php_http_should_keep_alive.exit, %937, %919, %849, %852, %840, %843, %831, %834, %800, %802, %799, %784, %794, %788, %776, %778, %768, %770, %754, %756, %753, %743, %745, %742, %732, %734, %731, %720, %723, %711, %714, %702, %705, %693, %696, %684, %687, %680, %659, %658, %657, %647, %632, %565, %567, %564, %513, %515, %512, %507, %497, %499, %496, %440, %442, %439, %388, %390, %387, %382, %372, %374, %371, %361, %363, %360, %304, %306, %303, %277, %279, %276, %275, %263, %265, %262, %260, %249, %247, %241, %172, %173, %174, %175, %176, %177, %178, %179, %180, %181, %182, %183, %184, %158, %158, %155, %.fold.split, %145, %126, %111, %66, %78, %67, %67, %103, %104, %105, %108, %123, %140, %156, %157, %238, %248, %251, %252, %623, %624, %625, %626, %629, %644, %648, %883, %1002, %1012, %1036, %1040, %1041, %88, %84, %101, %101, %102, %115, %130, %138, %147, %146, %148, %244, %253, %256, %261, %273, %287, %359, %336, %386, %422, %421, %409, %423, %427, %495, %472, %511, %547, %546, %534, %548, %552, %552, %620, %597, %621, %622, %636, %651, %666, %665, %664, %663, %671, %682, %683, %676, %672, %764, %796, %795, %792, %785, %822, %821, %821, %821, %859, %826, %860, %867, %864, %861, %958, %932, %914, %969, %983, %961, %994, %1022 - %.21025 = phi ptr [ %.010231866, %1040 ], [ %.11024, %1036 ], [ %.010231866, %1022 ], [ %.010231866, %1012 ], [ %.010231866, %1002 ], [ %996, %994 ], [ %972, %983 ], [ %972, %969 ], [ %.010231866, %961 ], [ %.010231866, %883 ], [ %.010231866, %914 ], [ %.010231866, %932 ], [ %.010231866, %958 ], [ %.010231866, %860 ], [ %.010231866, %867 ], [ %.010231866, %864 ], [ %.010231866, %861 ], [ %.010231866, %859 ], [ %.010231866, %822 ], [ %.010231866, %826 ], [ %.010231866, %821 ], [ %.010231866, %821 ], [ %.010231866, %821 ], [ %.010231866, %764 ], [ %.010231866, %795 ], [ %.010231866, %796 ], [ %.010231866, %792 ], [ %.010231866, %785 ], [ %.010231866, %671 ], [ %.010231866, %683 ], [ %.010231866, %682 ], [ %.010231866, %676 ], [ %.010231866, %672 ], [ %.010231866, %666 ], [ %.010231866, %665 ], [ %.010231866, %664 ], [ %.010231866, %663 ], [ %.010231866, %648 ], [ %.010231866, %651 ], [ %.010231866, %644 ], [ %.010231866, %636 ], [ %.010231866, %629 ], [ %.010231866, %626 ], [ %.010231866, %625 ], [ %.010231866, %624 ], [ %.010231866, %623 ], [ %.010231866, %621 ], [ %.010231866, %622 ], [ %.010231866, %548 ], [ %.010231866, %552 ], [ %.010231866, %552 ], [ %.010231866, %620 ], [ %.010231866, %597 ], [ %.010231866, %511 ], [ %.010231866, %547 ], [ %.010231866, %546 ], [ %.010231866, %534 ], [ %.010231866, %423 ], [ %.010231866, %495 ], [ %.010231866, %472 ], [ %.010231866, %427 ], [ %.010231866, %422 ], [ %.010231866, %421 ], [ %.010231866, %409 ], [ %.010231866, %386 ], [ %.010231866, %287 ], [ %.010231866, %359 ], [ %.010231866, %336 ], [ %.010231866, %273 ], [ %.010231866, %253 ], [ %.010231866, %256 ], [ %.010231866, %261 ], [ %.010231866, %252 ], [ %.010231866, %251 ], [ %.010231866, %244 ], [ %.010231866, %248 ], [ %.010231866, %240 ], [ %.010231866, %238 ], [ %.010231866, %158 ], [ %.010231866, %157 ], [ %.010231866, %156 ], [ %.010231866, %147 ], [ %.010231866, %146 ], [ %.010231866, %148 ], [ %.010231866, %138 ], [ %.010231866, %140 ], [ %.010231866, %130 ], [ %.010231866, %123 ], [ %.010231866, %115 ], [ %.010231866, %108 ], [ %.010231866, %105 ], [ %.010231866, %104 ], [ %.010231866, %103 ], [ %.010231866, %101 ], [ %.010231866, %101 ], [ %.010231866, %102 ], [ %.010231866, %84 ], [ %.010231866, %88 ], [ %.010231866, %67 ], [ %.010231866, %1041 ], [ %.010231866, %67 ], [ %.010231866, %78 ], [ %.010231866, %66 ], [ %.010231866, %111 ], [ %.010231866, %126 ], [ %.010231866, %145 ], [ %.010231866, %155 ], [ %.010231866, %.fold.split ], [ %.010231866, %158 ], [ %.010231866, %184 ], [ %.010231866, %183 ], [ %.010231866, %182 ], [ %.010231866, %181 ], [ %.010231866, %180 ], [ %.010231866, %179 ], [ %.010231866, %178 ], [ %.010231866, %177 ], [ %.010231866, %176 ], [ %.010231866, %175 ], [ %.010231866, %174 ], [ %.010231866, %173 ], [ %.010231866, %172 ], [ %.010231866, %241 ], [ %.010231866, %247 ], [ %.010231866, %249 ], [ %.010231866, %260 ], [ %.010231866, %262 ], [ %.010231866, %265 ], [ %.010231866, %263 ], [ %.010231866, %275 ], [ %.010231866, %276 ], [ %.010231866, %279 ], [ %.010231866, %277 ], [ %.010231866, %303 ], [ %.010231866, %306 ], [ %.010231866, %304 ], [ %.010231866, %360 ], [ %.010231866, %363 ], [ %.010231866, %361 ], [ %.010231866, %371 ], [ %.010231866, %374 ], [ %.010231866, %372 ], [ %.010231866, %382 ], [ %.010231866, %387 ], [ %.010231866, %390 ], [ %.010231866, %388 ], [ %.010231866, %439 ], [ %.010231866, %442 ], [ %.010231866, %440 ], [ %.010231866, %496 ], [ %.010231866, %499 ], [ %.010231866, %497 ], [ %.010231866, %507 ], [ %.010231866, %512 ], [ %.010231866, %515 ], [ %.010231866, %513 ], [ %.010231866, %564 ], [ %.010231866, %567 ], [ %.010231866, %565 ], [ %.010231866, %632 ], [ %.010231866, %647 ], [ %.010231866, %657 ], [ %.010231866, %658 ], [ %.010231866, %659 ], [ %.010231866, %680 ], [ %.010231866, %687 ], [ %.010231866, %684 ], [ %.010231866, %691 ], [ %.010231866, %696 ], [ %.010231866, %693 ], [ %.010231866, %700 ], [ %.010231866, %705 ], [ %.010231866, %702 ], [ %.010231866, %709 ], [ %.010231866, %714 ], [ %.010231866, %711 ], [ %.010231866, %718 ], [ %.010231866, %723 ], [ %.010231866, %720 ], [ %.010231866, %727 ], [ %.010231866, %729 ], [ %.010231866, %731 ], [ %.010231866, %734 ], [ %.010231866, %732 ], [ %.010231866, %742 ], [ %.010231866, %745 ], [ %.010231866, %743 ], [ %.010231866, %753 ], [ %.010231866, %756 ], [ %.010231866, %754 ], [ %.010231866, %770 ], [ %.010231866, %768 ], [ %.010231866, %778 ], [ %.010231866, %776 ], [ %.010231866, %788 ], [ %.010231866, %794 ], [ %.010231866, %784 ], [ %.010231866, %799 ], [ %.010231866, %802 ], [ %.010231866, %800 ], [ %.010231866, %834 ], [ %.010231866, %831 ], [ %.010231866, %838 ], [ %.010231866, %843 ], [ %.010231866, %840 ], [ %.010231866, %847 ], [ %.010231866, %852 ], [ %.010231866, %849 ], [ %.010231866, %856 ], [ %.010231866, %858 ], [ %.010231866, %919 ], [ %.010231866, %937 ], [ %.010231866, %php_http_should_keep_alive.exit ], [ %.010231866, %1004 ], [ %.010231866, %1011 ], [ %.010231866, %1011 ], [ %.010231866, %1017 ], [ %.010231866, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.010231866, %171 ] - %.31022 = phi i32 [ 52, %1040 ], [ %spec.select1322, %1036 ], [ 40, %1022 ], [ 47, %1012 ], [ 47, %1002 ], [ 54, %994 ], [ %987, %983 ], [ 53, %969 ], [ 53, %961 ], [ %887, %883 ], [ %918, %914 ], [ %936, %932 ], [ %960, %958 ], [ 40, %860 ], [ 40, %867 ], [ 40, %864 ], [ 40, %861 ], [ 43, %859 ], [ 43, %822 ], [ 43, %826 ], [ 43, %821 ], [ 43, %821 ], [ 43, %821 ], [ 42, %764 ], [ 43, %795 ], [ 43, %796 ], [ 43, %792 ], [ 43, %785 ], [ 41, %671 ], [ 41, %683 ], [ 41, %682 ], [ 41, %676 ], [ 41, %672 ], [ 41, %666 ], [ 41, %665 ], [ 41, %664 ], [ 41, %663 ], [ 40, %648 ], [ 38, %651 ], [ 38, %644 ], [ 36, %636 ], [ 36, %629 ], [ 35, %626 ], [ 34, %625 ], [ 33, %624 ], [ 32, %623 ], [ 30, %621 ], [ 31, %622 ], [ 29, %548 ], [ 29, %552 ], [ 29, %552 ], [ 40, %620 ], [ 39, %597 ], [ 28, %511 ], [ 29, %547 ], [ 40, %546 ], [ 39, %534 ], [ 27, %423 ], [ 40, %495 ], [ 39, %472 ], [ 27, %427 ], [ 28, %422 ], [ 40, %421 ], [ 39, %409 ], [ 26, %386 ], [ 25, %287 ], [ 40, %359 ], [ 39, %336 ], [ 24, %273 ], [ 23, %253 ], [ 23, %256 ], [ 25, %261 ], [ 23, %252 ], [ 22, %251 ], [ 20, %244 ], [ 23, %248 ], [ 19, %240 ], [ %.11020, %238 ], [ 17, %158 ], [ 40, %157 ], [ 40, %156 ], [ 40, %147 ], [ 16, %146 ], [ 14, %148 ], [ 13, %138 ], [ 14, %140 ], [ 12, %130 ], [ 12, %123 ], [ 10, %115 ], [ 10, %108 ], [ 9, %105 ], [ 8, %104 ], [ 7, %103 ], [ 4, %101 ], [ 4, %101 ], [ 5, %102 ], [ 6, %84 ], [ 18, %88 ], [ 2, %67 ], [ 46, %1041 ], [ 2, %67 ], [ 3, %78 ], [ 6, %66 ], [ 11, %111 ], [ 13, %126 ], [ 15, %145 ], [ 16, %155 ], [ 15, %.fold.split ], [ 17, %158 ], [ 18, %184 ], [ 18, %183 ], [ 18, %182 ], [ 18, %181 ], [ 18, %180 ], [ 18, %179 ], [ 18, %178 ], [ 18, %177 ], [ 18, %176 ], [ 18, %175 ], [ 18, %174 ], [ 18, %173 ], [ 18, %172 ], [ 20, %241 ], [ 21, %247 ], [ 23, %249 ], [ 24, %260 ], [ 30, %262 ], [ 30, %265 ], [ 30, %263 ], [ 25, %275 ], [ 30, %276 ], [ 30, %279 ], [ 30, %277 ], [ 30, %303 ], [ 30, %306 ], [ 30, %304 ], [ 26, %360 ], [ 26, %363 ], [ 26, %361 ], [ 28, %371 ], [ 28, %374 ], [ 28, %372 ], [ 27, %382 ], [ 30, %387 ], [ 30, %390 ], [ 30, %388 ], [ 30, %439 ], [ 30, %442 ], [ 30, %440 ], [ 28, %496 ], [ 28, %499 ], [ 28, %497 ], [ 29, %507 ], [ 30, %512 ], [ 30, %515 ], [ 30, %513 ], [ 30, %564 ], [ 30, %567 ], [ 30, %565 ], [ 37, %632 ], [ 39, %647 ], [ 40, %657 ], [ 45, %658 ], [ 41, %659 ], [ 41, %680 ], [ 41, %687 ], [ 41, %684 ], [ 41, %691 ], [ 41, %696 ], [ 41, %693 ], [ 41, %700 ], [ 41, %705 ], [ 41, %702 ], [ 41, %709 ], [ 41, %714 ], [ 41, %711 ], [ 41, %718 ], [ 41, %723 ], [ 41, %720 ], [ 41, %727 ], [ 41, %729 ], [ 42, %731 ], [ 42, %734 ], [ 42, %732 ], [ 44, %742 ], [ 44, %745 ], [ 44, %743 ], [ 40, %753 ], [ 40, %756 ], [ 40, %754 ], [ 44, %770 ], [ 44, %768 ], [ 40, %778 ], [ 40, %776 ], [ 43, %788 ], [ 43, %794 ], [ 43, %784 ], [ 44, %799 ], [ 44, %802 ], [ 44, %800 ], [ 43, %834 ], [ 43, %831 ], [ 43, %838 ], [ 43, %843 ], [ 43, %840 ], [ 43, %847 ], [ 43, %852 ], [ 43, %849 ], [ 43, %856 ], [ 43, %858 ], [ 46, %919 ], [ 53, %937 ], [ 54, %php_http_should_keep_alive.exit ], [ 48, %1004 ], [ 49, %1011 ], [ 49, %1011 ], [ %spec.select1320, %1017 ], [ 50, %1019 ], [ 25, %.fold.split1323 ], [ 18, %171 ] - %.11018 = phi i32 [ %.010171869, %1040 ], [ %.010171869, %1036 ], [ %.010171869, %1022 ], [ %.010171869, %1012 ], [ %.010171869, %1002 ], [ %.010171869, %994 ], [ %.010171869, %983 ], [ %.010171869, %969 ], [ %.010171869, %961 ], [ %.010171869, %883 ], [ %.010171869, %914 ], [ %.010171869, %932 ], [ %.010171869, %958 ], [ %.010171869, %860 ], [ 16, %867 ], [ 18, %864 ], [ 17, %861 ], [ 0, %859 ], [ 10, %822 ], [ 10, %826 ], [ %.010171869, %821 ], [ %.010171869, %821 ], [ %.010171869, %821 ], [ %.010171869, %764 ], [ 15, %795 ], [ 0, %796 ], [ 10, %792 ], [ 0, %785 ], [ %.010171869, %671 ], [ 0, %683 ], [ 6, %682 ], [ %679, %676 ], [ %675, %672 ], [ 0, %666 ], [ 8, %665 ], [ 7, %664 ], [ 5, %663 ], [ %.010171869, %648 ], [ %.010171869, %651 ], [ %.010171869, %644 ], [ %.010171869, %636 ], [ %.010171869, %629 ], [ %.010171869, %626 ], [ %.010171869, %625 ], [ %.010171869, %624 ], [ %.010171869, %623 ], [ %.010171869, %621 ], [ %.010171869, %622 ], [ %.010171869, %548 ], [ %.010171869, %552 ], [ %.010171869, %552 ], [ %.010171869, %620 ], [ %.010171869, %597 ], [ %.010171869, %511 ], [ %.010171869, %547 ], [ %.010171869, %546 ], [ %.010171869, %534 ], [ %.010171869, %423 ], [ %.010171869, %495 ], [ %.010171869, %472 ], [ %.010171869, %427 ], [ %.010171869, %422 ], [ %.010171869, %421 ], [ %.010171869, %409 ], [ %.010171869, %386 ], [ %.010171869, %287 ], [ %.010171869, %359 ], [ %.010171869, %336 ], [ %.010171869, %273 ], [ %.010171869, %253 ], [ %.010171869, %256 ], [ %.010171869, %261 ], [ %.010171869, %252 ], [ %.010171869, %251 ], [ %.010171869, %244 ], [ %.010171869, %248 ], [ %.010171869, %240 ], [ %.010171869, %238 ], [ %.010171869, %158 ], [ %.010171869, %157 ], [ %.010171869, %156 ], [ %.010171869, %147 ], [ %.010171869, %146 ], [ %.010171869, %148 ], [ %.010171869, %138 ], [ %.010171869, %140 ], [ %.010171869, %130 ], [ %.010171869, %123 ], [ %.010171869, %115 ], [ %.010171869, %108 ], [ %.010171869, %105 ], [ %.010171869, %104 ], [ %.010171869, %103 ], [ %.010171869, %101 ], [ %.010171869, %101 ], [ %.010171869, %102 ], [ %.010171869, %84 ], [ %.010171869, %88 ], [ %.010171869, %67 ], [ %.010171869, %1041 ], [ %.010171869, %67 ], [ %.010171869, %78 ], [ %.010171869, %66 ], [ %.010171869, %111 ], [ %.010171869, %126 ], [ %.010171869, %145 ], [ %.010171869, %155 ], [ %.010171869, %.fold.split ], [ %.010171869, %158 ], [ %.010171869, %184 ], [ %.010171869, %183 ], [ %.010171869, %182 ], [ %.010171869, %181 ], [ %.010171869, %180 ], [ %.010171869, %179 ], [ %.010171869, %178 ], [ %.010171869, %177 ], [ %.010171869, %176 ], [ %.010171869, %175 ], [ %.010171869, %174 ], [ %.010171869, %173 ], [ %.010171869, %172 ], [ %.010171869, %241 ], [ %.010171869, %247 ], [ %.010171869, %249 ], [ %.010171869, %260 ], [ %.010171869, %262 ], [ %.010171869, %265 ], [ %.010171869, %263 ], [ %.010171869, %275 ], [ %.010171869, %276 ], [ %.010171869, %279 ], [ %.010171869, %277 ], [ %.010171869, %303 ], [ %.010171869, %306 ], [ %.010171869, %304 ], [ %.010171869, %360 ], [ %.010171869, %363 ], [ %.010171869, %361 ], [ %.010171869, %371 ], [ %.010171869, %374 ], [ %.010171869, %372 ], [ %.010171869, %382 ], [ %.010171869, %387 ], [ %.010171869, %390 ], [ %.010171869, %388 ], [ %.010171869, %439 ], [ %.010171869, %442 ], [ %.010171869, %440 ], [ %.010171869, %496 ], [ %.010171869, %499 ], [ %.010171869, %497 ], [ %.010171869, %507 ], [ %.010171869, %512 ], [ %.010171869, %515 ], [ %.010171869, %513 ], [ %.010171869, %564 ], [ %.010171869, %567 ], [ %.010171869, %565 ], [ %.010171869, %632 ], [ %.010171869, %647 ], [ %.010171869, %657 ], [ %.010171869, %658 ], [ 1, %659 ], [ 4, %680 ], [ 0, %687 ], [ 0, %684 ], [ %spec.select1309, %691 ], [ 0, %696 ], [ 0, %693 ], [ %spec.select1310, %700 ], [ 0, %705 ], [ 0, %702 ], [ %spec.select1311, %709 ], [ 0, %714 ], [ 0, %711 ], [ %spec.select1312, %718 ], [ 0, %723 ], [ 0, %720 ], [ %spec.select1313, %727 ], [ %spec.select1314, %729 ], [ %.010171869, %731 ], [ %.010171869, %734 ], [ %.010171869, %732 ], [ %.010171869, %742 ], [ %.010171869, %745 ], [ %.010171869, %743 ], [ %.010171869, %753 ], [ %.010171869, %756 ], [ %.010171869, %754 ], [ 0, %770 ], [ 0, %768 ], [ %.010171869, %778 ], [ %.010171869, %776 ], [ %., %788 ], [ 14, %794 ], [ 0, %784 ], [ %.010171869, %799 ], [ %.010171869, %802 ], [ %.010171869, %800 ], [ 0, %834 ], [ 0, %831 ], [ %spec.select1315, %838 ], [ 0, %843 ], [ 0, %840 ], [ %spec.select1316, %847 ], [ 0, %852 ], [ 0, %849 ], [ %spec.select1317, %856 ], [ %spec.select1318, %858 ], [ %.010171869, %919 ], [ %.010171869, %937 ], [ %.010171869, %php_http_should_keep_alive.exit ], [ %.010171869, %1004 ], [ %.010171869, %1011 ], [ %.010171869, %1011 ], [ %.010171869, %1017 ], [ %.010171869, %1019 ], [ %.010171869, %.fold.split1323 ], [ %.010171869, %171 ] - %.11016 = phi i32 [ %.010151870, %1040 ], [ %.010151870, %1036 ], [ %.010151870, %1022 ], [ %.010151870, %1012 ], [ %.010151870, %1002 ], [ %.010151870, %994 ], [ %.010151870, %983 ], [ %.010151870, %969 ], [ %.010151870, %961 ], [ %.010151870, %883 ], [ %.010151870, %914 ], [ %.010151870, %932 ], [ %.010151870, %958 ], [ %.010151870, %860 ], [ %.010151870, %867 ], [ %.010151870, %864 ], [ %.010151870, %861 ], [ %.010151870, %859 ], [ %.010151870, %822 ], [ %.010151870, %826 ], [ %.010151870, %821 ], [ %.010151870, %821 ], [ %.010151870, %821 ], [ %.010151870, %764 ], [ 0, %795 ], [ 0, %796 ], [ 0, %792 ], [ 0, %785 ], [ %.010151870, %671 ], [ %681, %683 ], [ %681, %682 ], [ %677, %676 ], [ %673, %672 ], [ 0, %666 ], [ 0, %665 ], [ 0, %664 ], [ 0, %663 ], [ %.010151870, %648 ], [ %.010151870, %651 ], [ %.010151870, %644 ], [ %.010151870, %636 ], [ %.010151870, %629 ], [ %.010151870, %626 ], [ %.010151870, %625 ], [ %.010151870, %624 ], [ %.010151870, %623 ], [ %.010151870, %621 ], [ %.010151870, %622 ], [ %.010151870, %548 ], [ %.010151870, %552 ], [ %.010151870, %552 ], [ %.010151870, %620 ], [ %.010151870, %597 ], [ %.010151870, %511 ], [ %.010151870, %547 ], [ %.010151870, %546 ], [ %.010151870, %534 ], [ %.010151870, %423 ], [ %.010151870, %495 ], [ %.010151870, %472 ], [ %.010151870, %427 ], [ %.010151870, %422 ], [ %.010151870, %421 ], [ %.010151870, %409 ], [ %.010151870, %386 ], [ %.010151870, %287 ], [ %.010151870, %359 ], [ %.010151870, %336 ], [ %.010151870, %273 ], [ %.010151870, %253 ], [ %.010151870, %256 ], [ %.010151870, %261 ], [ %.010151870, %252 ], [ %.010151870, %251 ], [ %.010151870, %244 ], [ %.010151870, %248 ], [ %.010151870, %240 ], [ %239, %238 ], [ %.010151870, %158 ], [ %.010151870, %157 ], [ %.010151870, %156 ], [ %.010151870, %147 ], [ %.010151870, %146 ], [ %.010151870, %148 ], [ %.010151870, %138 ], [ %.010151870, %140 ], [ %.010151870, %130 ], [ %.010151870, %123 ], [ %.010151870, %115 ], [ %.010151870, %108 ], [ %.010151870, %105 ], [ %.010151870, %104 ], [ %.010151870, %103 ], [ %.010151870, %101 ], [ %.010151870, %101 ], [ %.010151870, %102 ], [ %.010151870, %84 ], [ 2, %88 ], [ %.010151870, %67 ], [ %.010151870, %1041 ], [ %.010151870, %67 ], [ %.010151870, %78 ], [ %.010151870, %66 ], [ %.010151870, %111 ], [ %.010151870, %126 ], [ %.010151870, %145 ], [ %.010151870, %155 ], [ %.010151870, %.fold.split ], [ %.010151870, %158 ], [ 1, %184 ], [ 1, %183 ], [ 1, %182 ], [ 1, %181 ], [ 1, %180 ], [ 1, %179 ], [ 1, %178 ], [ 1, %177 ], [ 1, %176 ], [ 1, %175 ], [ 1, %174 ], [ 1, %173 ], [ 1, %172 ], [ %.010151870, %241 ], [ %.010151870, %247 ], [ %.010151870, %249 ], [ %.010151870, %260 ], [ %.010151870, %262 ], [ %.010151870, %265 ], [ %.010151870, %263 ], [ %.010151870, %275 ], [ %.010151870, %276 ], [ %.010151870, %279 ], [ %.010151870, %277 ], [ %.010151870, %303 ], [ %.010151870, %306 ], [ %.010151870, %304 ], [ %.010151870, %360 ], [ %.010151870, %363 ], [ %.010151870, %361 ], [ %.010151870, %371 ], [ %.010151870, %374 ], [ %.010151870, %372 ], [ %.010151870, %382 ], [ %.010151870, %387 ], [ %.010151870, %390 ], [ %.010151870, %388 ], [ %.010151870, %439 ], [ %.010151870, %442 ], [ %.010151870, %440 ], [ %.010151870, %496 ], [ %.010151870, %499 ], [ %.010151870, %497 ], [ %.010151870, %507 ], [ %.010151870, %512 ], [ %.010151870, %515 ], [ %.010151870, %513 ], [ %.010151870, %564 ], [ %.010151870, %567 ], [ %.010151870, %565 ], [ %.010151870, %632 ], [ %.010151870, %647 ], [ %.010151870, %657 ], [ %.010151870, %658 ], [ 0, %659 ], [ %681, %680 ], [ %685, %687 ], [ %685, %684 ], [ %685, %691 ], [ %694, %696 ], [ %694, %693 ], [ %694, %700 ], [ %703, %705 ], [ %703, %702 ], [ %703, %709 ], [ %712, %714 ], [ %712, %711 ], [ %712, %718 ], [ %721, %723 ], [ %721, %720 ], [ %721, %727 ], [ %.010151870, %729 ], [ %.010151870, %731 ], [ %.010151870, %734 ], [ %.010151870, %732 ], [ %.010151870, %742 ], [ %.010151870, %745 ], [ %.010151870, %743 ], [ %.010151870, %753 ], [ %.010151870, %756 ], [ %.010151870, %754 ], [ 0, %770 ], [ 0, %768 ], [ 0, %778 ], [ 0, %776 ], [ 0, %788 ], [ 0, %794 ], [ 0, %784 ], [ %.010151870, %799 ], [ %.010151870, %802 ], [ %.010151870, %800 ], [ %832, %834 ], [ %832, %831 ], [ %832, %838 ], [ %841, %843 ], [ %841, %840 ], [ %841, %847 ], [ %850, %852 ], [ %850, %849 ], [ %850, %856 ], [ %.010151870, %858 ], [ %.010151870, %919 ], [ %.010151870, %937 ], [ %.010151870, %php_http_should_keep_alive.exit ], [ %.010151870, %1004 ], [ %.010151870, %1011 ], [ %.010151870, %1011 ], [ %.010151870, %1017 ], [ %.010151870, %1019 ], [ %.010151870, %.fold.split1323 ], [ 1, %171 ] - %.21014 = phi i32 [ %.11013, %1040 ], [ %.11013, %1036 ], [ %.11013, %1022 ], [ %.11013, %1012 ], [ %.11013, %1002 ], [ %.11013, %994 ], [ %.11013, %983 ], [ %.11013, %969 ], [ %.11013, %961 ], [ %.11013, %883 ], [ 0, %914 ], [ 0, %932 ], [ 0, %958 ], [ %.11013, %860 ], [ %.11013, %867 ], [ %.11013, %864 ], [ %.11013, %861 ], [ %.11013, %859 ], [ %.11013, %822 ], [ %.11013, %826 ], [ %.11013, %821 ], [ %.11013, %821 ], [ %.11013, %821 ], [ %.11013, %764 ], [ %.11013, %795 ], [ %.11013, %796 ], [ %.11013, %792 ], [ %.11013, %785 ], [ %.11013, %671 ], [ %.11013, %683 ], [ %.11013, %682 ], [ %.11013, %676 ], [ %.11013, %672 ], [ %.11013, %666 ], [ %.11013, %665 ], [ %.11013, %664 ], [ %.11013, %663 ], [ %.11013, %648 ], [ %.11013, %651 ], [ %.11013, %644 ], [ %.11013, %636 ], [ %.11013, %629 ], [ %.11013, %626 ], [ %.11013, %625 ], [ %.11013, %624 ], [ %.11013, %623 ], [ %.11013, %621 ], [ %.11013, %622 ], [ %.11013, %548 ], [ %.11013, %552 ], [ %.11013, %552 ], [ %.11013, %620 ], [ %.11013, %597 ], [ %.11013, %511 ], [ %.11013, %547 ], [ %.11013, %546 ], [ %.11013, %534 ], [ %.11013, %423 ], [ %.11013, %495 ], [ %.11013, %472 ], [ %.11013, %427 ], [ %.11013, %422 ], [ %.11013, %421 ], [ %.11013, %409 ], [ %.11013, %386 ], [ %.11013, %287 ], [ %.11013, %359 ], [ %.11013, %336 ], [ %.11013, %273 ], [ %.11013, %253 ], [ %.11013, %256 ], [ %.11013, %261 ], [ %.11013, %252 ], [ %.11013, %251 ], [ %.11013, %244 ], [ %.11013, %248 ], [ %.11013, %240 ], [ %.11013, %238 ], [ %.11013, %158 ], [ %.11013, %157 ], [ %.11013, %156 ], [ %.11013, %147 ], [ %.11013, %146 ], [ %.11013, %148 ], [ %.11013, %138 ], [ %.11013, %140 ], [ %.11013, %130 ], [ %.11013, %123 ], [ %.11013, %115 ], [ %.11013, %108 ], [ %.11013, %105 ], [ %.11013, %104 ], [ %.11013, %103 ], [ %.11013, %101 ], [ %.11013, %101 ], [ %.11013, %102 ], [ %.11013, %84 ], [ %.11013, %88 ], [ %.11013, %67 ], [ %.11013, %1041 ], [ %.11013, %67 ], [ %.11013, %78 ], [ %.11013, %66 ], [ %.11013, %111 ], [ %.11013, %126 ], [ %.11013, %145 ], [ %.11013, %155 ], [ %.11013, %.fold.split ], [ %.11013, %158 ], [ %.11013, %184 ], [ %.11013, %183 ], [ %.11013, %182 ], [ %.11013, %181 ], [ %.11013, %180 ], [ %.11013, %179 ], [ %.11013, %178 ], [ %.11013, %177 ], [ %.11013, %176 ], [ %.11013, %175 ], [ %.11013, %174 ], [ %.11013, %173 ], [ %.11013, %172 ], [ %.11013, %241 ], [ %.11013, %247 ], [ %.11013, %249 ], [ %.11013, %260 ], [ %.11013, %262 ], [ %.11013, %265 ], [ %.11013, %263 ], [ %.11013, %275 ], [ %.11013, %276 ], [ %.11013, %279 ], [ %.11013, %277 ], [ %.11013, %303 ], [ %.11013, %306 ], [ %.11013, %304 ], [ %.11013, %360 ], [ %.11013, %363 ], [ %.11013, %361 ], [ %.11013, %371 ], [ %.11013, %374 ], [ %.11013, %372 ], [ %.11013, %382 ], [ %.11013, %387 ], [ %.11013, %390 ], [ %.11013, %388 ], [ %.11013, %439 ], [ %.11013, %442 ], [ %.11013, %440 ], [ %.11013, %496 ], [ %.11013, %499 ], [ %.11013, %497 ], [ %.11013, %507 ], [ %.11013, %512 ], [ %.11013, %515 ], [ %.11013, %513 ], [ %.11013, %564 ], [ %.11013, %567 ], [ %.11013, %565 ], [ %.11013, %632 ], [ %.11013, %647 ], [ %.11013, %657 ], [ %.11013, %658 ], [ %.11013, %659 ], [ %.11013, %680 ], [ %.11013, %687 ], [ %.11013, %684 ], [ %.11013, %691 ], [ %.11013, %696 ], [ %.11013, %693 ], [ %.11013, %700 ], [ %.11013, %705 ], [ %.11013, %702 ], [ %.11013, %709 ], [ %.11013, %714 ], [ %.11013, %711 ], [ %.11013, %718 ], [ %.11013, %723 ], [ %.11013, %720 ], [ %.11013, %727 ], [ %.11013, %729 ], [ %.11013, %731 ], [ %.11013, %734 ], [ %.11013, %732 ], [ %.11013, %742 ], [ %.11013, %745 ], [ %.11013, %743 ], [ %.11013, %753 ], [ %.11013, %756 ], [ %.11013, %754 ], [ %.11013, %770 ], [ %.11013, %768 ], [ %.11013, %778 ], [ %.11013, %776 ], [ %.11013, %788 ], [ %.11013, %794 ], [ %.11013, %784 ], [ %.11013, %799 ], [ %.11013, %802 ], [ %.11013, %800 ], [ %.11013, %834 ], [ %.11013, %831 ], [ %.11013, %838 ], [ %.11013, %843 ], [ %.11013, %840 ], [ %.11013, %847 ], [ %.11013, %852 ], [ %.11013, %849 ], [ %.11013, %856 ], [ %.11013, %858 ], [ 0, %919 ], [ 0, %937 ], [ 0, %php_http_should_keep_alive.exit ], [ %.11013, %1004 ], [ %.11013, %1011 ], [ %.11013, %1011 ], [ %.11013, %1017 ], [ %.11013, %1019 ], [ %.11013, %.fold.split1323 ], [ %.11013, %171 ] - %.21011 = phi ptr [ %.110101872, %1040 ], [ %.110101872, %1036 ], [ %.110101872, %1022 ], [ %.110101872, %1012 ], [ %.110101872, %1002 ], [ %.110101872, %994 ], [ %.110101872, %983 ], [ %.110101872, %969 ], [ %.110101872, %961 ], [ %.110101872, %883 ], [ %.110101872, %914 ], [ %.110101872, %932 ], [ %.110101872, %958 ], [ %.110101872, %860 ], [ %.110101872, %867 ], [ %.110101872, %864 ], [ %.110101872, %861 ], [ %.110101872, %859 ], [ %.110101872, %822 ], [ %.110101872, %826 ], [ %.110101872, %821 ], [ %.110101872, %821 ], [ %.110101872, %821 ], [ %.110101872, %764 ], [ %.110101872, %795 ], [ %.110101872, %796 ], [ %.110101872, %792 ], [ %.110101872, %785 ], [ %.110101872, %671 ], [ %.110101872, %683 ], [ %.110101872, %682 ], [ %.110101872, %676 ], [ %.110101872, %672 ], [ %.010231866, %666 ], [ %.010231866, %665 ], [ %.010231866, %664 ], [ %.010231866, %663 ], [ %.110101872, %648 ], [ %.110101872, %651 ], [ %.110101872, %644 ], [ %.110101872, %636 ], [ %.110101872, %629 ], [ %.110101872, %626 ], [ %.110101872, %625 ], [ %.110101872, %624 ], [ %.110101872, %623 ], [ %.110101872, %621 ], [ %.110101872, %622 ], [ %.110101872, %548 ], [ %.110101872, %552 ], [ %.110101872, %552 ], [ %.110101872, %620 ], [ %.110101872, %597 ], [ %.110101872, %511 ], [ %.110101872, %547 ], [ %.110101872, %546 ], [ %.110101872, %534 ], [ %.110101872, %423 ], [ %.110101872, %495 ], [ %.110101872, %472 ], [ %.110101872, %427 ], [ %.110101872, %422 ], [ %.110101872, %421 ], [ %.110101872, %409 ], [ %.110101872, %386 ], [ %.110101872, %287 ], [ %.110101872, %359 ], [ %.110101872, %336 ], [ %.110101872, %273 ], [ %.110101872, %253 ], [ %.110101872, %256 ], [ %.110101872, %261 ], [ %.110101872, %252 ], [ %.110101872, %251 ], [ %.110101872, %244 ], [ %.110101872, %248 ], [ %.110101872, %240 ], [ %.110101872, %238 ], [ %.110101872, %158 ], [ %.110101872, %157 ], [ %.110101872, %156 ], [ %.110101872, %147 ], [ %.110101872, %146 ], [ %.110101872, %148 ], [ %.110101872, %138 ], [ %.110101872, %140 ], [ %.110101872, %130 ], [ %.110101872, %123 ], [ %.110101872, %115 ], [ %.110101872, %108 ], [ %.110101872, %105 ], [ %.110101872, %104 ], [ %.110101872, %103 ], [ %.110101872, %101 ], [ %.110101872, %101 ], [ %.110101872, %102 ], [ %.110101872, %84 ], [ %.110101872, %88 ], [ %.110101872, %67 ], [ %.110101872, %1041 ], [ %.110101872, %67 ], [ %.110101872, %78 ], [ %.110101872, %66 ], [ %.110101872, %111 ], [ %.110101872, %126 ], [ %.110101872, %145 ], [ %.110101872, %155 ], [ %.110101872, %.fold.split ], [ %.110101872, %158 ], [ %.110101872, %184 ], [ %.110101872, %183 ], [ %.110101872, %182 ], [ %.110101872, %181 ], [ %.110101872, %180 ], [ %.110101872, %179 ], [ %.110101872, %178 ], [ %.110101872, %177 ], [ %.110101872, %176 ], [ %.110101872, %175 ], [ %.110101872, %174 ], [ %.110101872, %173 ], [ %.110101872, %172 ], [ %.110101872, %241 ], [ %.110101872, %247 ], [ %.110101872, %249 ], [ %.110101872, %260 ], [ %.110101872, %262 ], [ %.110101872, %265 ], [ %.110101872, %263 ], [ %.110101872, %275 ], [ %.110101872, %276 ], [ %.110101872, %279 ], [ %.110101872, %277 ], [ %.110101872, %303 ], [ %.110101872, %306 ], [ %.110101872, %304 ], [ %.110101872, %360 ], [ %.110101872, %363 ], [ %.110101872, %361 ], [ %.110101872, %371 ], [ %.110101872, %374 ], [ %.110101872, %372 ], [ %.110101872, %382 ], [ %.110101872, %387 ], [ %.110101872, %390 ], [ %.110101872, %388 ], [ %.110101872, %439 ], [ %.110101872, %442 ], [ %.110101872, %440 ], [ %.110101872, %496 ], [ %.110101872, %499 ], [ %.110101872, %497 ], [ %.110101872, %507 ], [ %.110101872, %512 ], [ %.110101872, %515 ], [ %.110101872, %513 ], [ %.110101872, %564 ], [ %.110101872, %567 ], [ %.110101872, %565 ], [ %.110101872, %632 ], [ %.110101872, %647 ], [ %.110101872, %657 ], [ %.110101872, %658 ], [ %.010231866, %659 ], [ %.110101872, %680 ], [ %.110101872, %687 ], [ %.110101872, %684 ], [ %.110101872, %691 ], [ %.110101872, %696 ], [ %.110101872, %693 ], [ %.110101872, %700 ], [ %.110101872, %705 ], [ %.110101872, %702 ], [ %.110101872, %709 ], [ %.110101872, %714 ], [ %.110101872, %711 ], [ %.110101872, %718 ], [ %.110101872, %723 ], [ %.110101872, %720 ], [ %.110101872, %727 ], [ %.110101872, %729 ], [ null, %731 ], [ null, %734 ], [ null, %732 ], [ null, %742 ], [ null, %745 ], [ null, %743 ], [ null, %753 ], [ null, %756 ], [ null, %754 ], [ %.110101872, %770 ], [ %.110101872, %768 ], [ %.110101872, %778 ], [ %.110101872, %776 ], [ %.110101872, %788 ], [ %.110101872, %794 ], [ %.110101872, %784 ], [ %.110101872, %799 ], [ %.110101872, %802 ], [ %.110101872, %800 ], [ %.110101872, %834 ], [ %.110101872, %831 ], [ %.110101872, %838 ], [ %.110101872, %843 ], [ %.110101872, %840 ], [ %.110101872, %847 ], [ %.110101872, %852 ], [ %.110101872, %849 ], [ %.110101872, %856 ], [ %.110101872, %858 ], [ %.110101872, %919 ], [ %.110101872, %937 ], [ %.110101872, %php_http_should_keep_alive.exit ], [ %.110101872, %1004 ], [ %.110101872, %1011 ], [ %.110101872, %1011 ], [ %.110101872, %1017 ], [ %.110101872, %1019 ], [ %.110101872, %.fold.split1323 ], [ %.110101872, %171 ] - %.3 = phi ptr [ %.110071873, %1040 ], [ %.110071873, %1036 ], [ %.110071873, %1022 ], [ %.110071873, %1012 ], [ %.110071873, %1002 ], [ %.110071873, %994 ], [ %.110071873, %983 ], [ %.110071873, %969 ], [ %.110071873, %961 ], [ %.110071873, %883 ], [ %.110071873, %914 ], [ %.110071873, %932 ], [ %.110071873, %958 ], [ %.21008, %860 ], [ %.21008, %867 ], [ %.21008, %864 ], [ %.21008, %861 ], [ %.110071873, %859 ], [ %.110071873, %822 ], [ %.110071873, %826 ], [ %.110071873, %821 ], [ %.110071873, %821 ], [ %.110071873, %821 ], [ %.110071873, %764 ], [ %.010231866, %795 ], [ %.010231866, %796 ], [ %.010231866, %792 ], [ %.010231866, %785 ], [ %.110071873, %671 ], [ %.110071873, %683 ], [ %.110071873, %682 ], [ %.110071873, %676 ], [ %.110071873, %672 ], [ %.110071873, %666 ], [ %.110071873, %665 ], [ %.110071873, %664 ], [ %.110071873, %663 ], [ %.110071873, %648 ], [ %.110071873, %651 ], [ %.110071873, %644 ], [ %.110071873, %636 ], [ %.110071873, %629 ], [ %.110071873, %626 ], [ %.110071873, %625 ], [ %.110071873, %624 ], [ %.110071873, %623 ], [ %.110071873, %621 ], [ %.110071873, %622 ], [ %.110071873, %548 ], [ %.110071873, %552 ], [ %.110071873, %552 ], [ %.110071873, %620 ], [ %.110071873, %597 ], [ %.110071873, %511 ], [ %.110071873, %547 ], [ %.110071873, %546 ], [ %.110071873, %534 ], [ %.110071873, %423 ], [ %.110071873, %495 ], [ %.110071873, %472 ], [ %.110071873, %427 ], [ %.110071873, %422 ], [ %.110071873, %421 ], [ %.110071873, %409 ], [ %.110071873, %386 ], [ %.110071873, %287 ], [ %.110071873, %359 ], [ %.110071873, %336 ], [ %.110071873, %273 ], [ %.110071873, %253 ], [ %.110071873, %256 ], [ %.110071873, %261 ], [ %.110071873, %252 ], [ %.110071873, %251 ], [ %.110071873, %244 ], [ %.110071873, %248 ], [ %.110071873, %240 ], [ %.110071873, %238 ], [ %.110071873, %158 ], [ %.110071873, %157 ], [ %.110071873, %156 ], [ %.110071873, %147 ], [ %.110071873, %146 ], [ %.110071873, %148 ], [ %.110071873, %138 ], [ %.110071873, %140 ], [ %.110071873, %130 ], [ %.110071873, %123 ], [ %.110071873, %115 ], [ %.110071873, %108 ], [ %.110071873, %105 ], [ %.110071873, %104 ], [ %.110071873, %103 ], [ %.110071873, %101 ], [ %.110071873, %101 ], [ %.110071873, %102 ], [ %.110071873, %84 ], [ %.110071873, %88 ], [ %.110071873, %67 ], [ %.110071873, %1041 ], [ %.110071873, %67 ], [ %.110071873, %78 ], [ %.110071873, %66 ], [ %.110071873, %111 ], [ %.110071873, %126 ], [ %.110071873, %145 ], [ %.110071873, %155 ], [ %.110071873, %.fold.split ], [ %.110071873, %158 ], [ %.110071873, %184 ], [ %.110071873, %183 ], [ %.110071873, %182 ], [ %.110071873, %181 ], [ %.110071873, %180 ], [ %.110071873, %179 ], [ %.110071873, %178 ], [ %.110071873, %177 ], [ %.110071873, %176 ], [ %.110071873, %175 ], [ %.110071873, %174 ], [ %.110071873, %173 ], [ %.110071873, %172 ], [ %.110071873, %241 ], [ %.110071873, %247 ], [ %.110071873, %249 ], [ %.110071873, %260 ], [ %.110071873, %262 ], [ %.110071873, %265 ], [ %.110071873, %263 ], [ %.110071873, %275 ], [ %.110071873, %276 ], [ %.110071873, %279 ], [ %.110071873, %277 ], [ %.110071873, %303 ], [ %.110071873, %306 ], [ %.110071873, %304 ], [ %.110071873, %360 ], [ %.110071873, %363 ], [ %.110071873, %361 ], [ %.110071873, %371 ], [ %.110071873, %374 ], [ %.110071873, %372 ], [ %.110071873, %382 ], [ %.110071873, %387 ], [ %.110071873, %390 ], [ %.110071873, %388 ], [ %.110071873, %439 ], [ %.110071873, %442 ], [ %.110071873, %440 ], [ %.110071873, %496 ], [ %.110071873, %499 ], [ %.110071873, %497 ], [ %.110071873, %507 ], [ %.110071873, %512 ], [ %.110071873, %515 ], [ %.110071873, %513 ], [ %.110071873, %564 ], [ %.110071873, %567 ], [ %.110071873, %565 ], [ %.110071873, %632 ], [ %.110071873, %647 ], [ %.110071873, %657 ], [ %.110071873, %658 ], [ %.110071873, %659 ], [ %.110071873, %680 ], [ %.110071873, %687 ], [ %.110071873, %684 ], [ %.110071873, %691 ], [ %.110071873, %696 ], [ %.110071873, %693 ], [ %.110071873, %700 ], [ %.110071873, %705 ], [ %.110071873, %702 ], [ %.110071873, %709 ], [ %.110071873, %714 ], [ %.110071873, %711 ], [ %.110071873, %718 ], [ %.110071873, %723 ], [ %.110071873, %720 ], [ %.110071873, %727 ], [ %.110071873, %729 ], [ %.110071873, %731 ], [ %.110071873, %734 ], [ %.110071873, %732 ], [ %.110071873, %742 ], [ %.110071873, %745 ], [ %.110071873, %743 ], [ %.110071873, %753 ], [ %.110071873, %756 ], [ %.110071873, %754 ], [ null, %770 ], [ null, %768 ], [ null, %778 ], [ null, %776 ], [ %.010231866, %788 ], [ %.010231866, %794 ], [ %.010231866, %784 ], [ null, %799 ], [ null, %802 ], [ null, %800 ], [ %.110071873, %834 ], [ %.110071873, %831 ], [ %.110071873, %838 ], [ %.110071873, %843 ], [ %.110071873, %840 ], [ %.110071873, %847 ], [ %.110071873, %852 ], [ %.110071873, %849 ], [ %.110071873, %856 ], [ %.110071873, %858 ], [ %.110071873, %919 ], [ %.110071873, %937 ], [ %.110071873, %php_http_should_keep_alive.exit ], [ %.110071873, %1004 ], [ %.110071873, %1011 ], [ %.110071873, %1011 ], [ %.110071873, %1017 ], [ %.110071873, %1019 ], [ %.110071873, %.fold.split1323 ], [ %.110071873, %171 ] - %.21005 = phi ptr [ %.110041874, %1040 ], [ %.110041874, %1036 ], [ %.110041874, %1022 ], [ %.110041874, %1012 ], [ %.110041874, %1002 ], [ %.110041874, %994 ], [ %.110041874, %983 ], [ %.110041874, %969 ], [ %.110041874, %961 ], [ %.110041874, %883 ], [ %.110041874, %914 ], [ %.110041874, %932 ], [ %.110041874, %958 ], [ %.110041874, %860 ], [ %.110041874, %867 ], [ %.110041874, %864 ], [ %.110041874, %861 ], [ %.110041874, %859 ], [ %.110041874, %822 ], [ %.110041874, %826 ], [ %.110041874, %821 ], [ %.110041874, %821 ], [ %.110041874, %821 ], [ %.110041874, %764 ], [ %.110041874, %795 ], [ %.110041874, %796 ], [ %.110041874, %792 ], [ %.110041874, %785 ], [ %.110041874, %671 ], [ %.110041874, %683 ], [ %.110041874, %682 ], [ %.110041874, %676 ], [ %.110041874, %672 ], [ %.110041874, %666 ], [ %.110041874, %665 ], [ %.110041874, %664 ], [ %.110041874, %663 ], [ %.110041874, %648 ], [ %.110041874, %651 ], [ %.110041874, %644 ], [ %.110041874, %636 ], [ %.110041874, %629 ], [ %.110041874, %626 ], [ %.110041874, %625 ], [ %.110041874, %624 ], [ %.110041874, %623 ], [ %.110041874, %621 ], [ %.110041874, %622 ], [ %.110041874, %548 ], [ %.110041874, %552 ], [ %.110041874, %552 ], [ null, %620 ], [ null, %597 ], [ %.110041874, %511 ], [ %.010231866, %547 ], [ %.110041874, %546 ], [ %.110041874, %534 ], [ %.110041874, %423 ], [ %.110041874, %495 ], [ %.110041874, %472 ], [ %.110041874, %427 ], [ %.110041874, %422 ], [ %.110041874, %421 ], [ %.110041874, %409 ], [ %.110041874, %386 ], [ %.110041874, %287 ], [ %.110041874, %359 ], [ %.110041874, %336 ], [ %.110041874, %273 ], [ %.110041874, %253 ], [ %.110041874, %256 ], [ %.110041874, %261 ], [ %.110041874, %252 ], [ %.110041874, %251 ], [ %.110041874, %244 ], [ %.110041874, %248 ], [ %.110041874, %240 ], [ %.110041874, %238 ], [ %.110041874, %158 ], [ %.110041874, %157 ], [ %.110041874, %156 ], [ %.110041874, %147 ], [ %.110041874, %146 ], [ %.110041874, %148 ], [ %.110041874, %138 ], [ %.110041874, %140 ], [ %.110041874, %130 ], [ %.110041874, %123 ], [ %.110041874, %115 ], [ %.110041874, %108 ], [ %.110041874, %105 ], [ %.110041874, %104 ], [ %.110041874, %103 ], [ %.110041874, %101 ], [ %.110041874, %101 ], [ %.110041874, %102 ], [ %.110041874, %84 ], [ %.110041874, %88 ], [ %.110041874, %67 ], [ %.110041874, %1041 ], [ %.110041874, %67 ], [ %.110041874, %78 ], [ %.110041874, %66 ], [ %.110041874, %111 ], [ %.110041874, %126 ], [ %.110041874, %145 ], [ %.110041874, %155 ], [ %.110041874, %.fold.split ], [ %.110041874, %158 ], [ %.110041874, %184 ], [ %.110041874, %183 ], [ %.110041874, %182 ], [ %.110041874, %181 ], [ %.110041874, %180 ], [ %.110041874, %179 ], [ %.110041874, %178 ], [ %.110041874, %177 ], [ %.110041874, %176 ], [ %.110041874, %175 ], [ %.110041874, %174 ], [ %.110041874, %173 ], [ %.110041874, %172 ], [ %.110041874, %241 ], [ %.110041874, %247 ], [ %.110041874, %249 ], [ %.110041874, %260 ], [ %.110041874, %262 ], [ %.110041874, %265 ], [ %.110041874, %263 ], [ %.110041874, %275 ], [ %.110041874, %276 ], [ %.110041874, %279 ], [ %.110041874, %277 ], [ %.110041874, %303 ], [ %.110041874, %306 ], [ %.110041874, %304 ], [ %.110041874, %360 ], [ %.110041874, %363 ], [ %.110041874, %361 ], [ %.110041874, %371 ], [ %.110041874, %374 ], [ %.110041874, %372 ], [ %.110041874, %382 ], [ %.110041874, %387 ], [ %.110041874, %390 ], [ %.110041874, %388 ], [ %.110041874, %439 ], [ %.110041874, %442 ], [ %.110041874, %440 ], [ %.110041874, %496 ], [ %.110041874, %499 ], [ %.110041874, %497 ], [ %.010231866, %507 ], [ %.110041874, %512 ], [ %.110041874, %515 ], [ %.110041874, %513 ], [ null, %564 ], [ null, %567 ], [ null, %565 ], [ %.110041874, %632 ], [ %.110041874, %647 ], [ %.110041874, %657 ], [ %.110041874, %658 ], [ %.110041874, %659 ], [ %.110041874, %680 ], [ %.110041874, %687 ], [ %.110041874, %684 ], [ %.110041874, %691 ], [ %.110041874, %696 ], [ %.110041874, %693 ], [ %.110041874, %700 ], [ %.110041874, %705 ], [ %.110041874, %702 ], [ %.110041874, %709 ], [ %.110041874, %714 ], [ %.110041874, %711 ], [ %.110041874, %718 ], [ %.110041874, %723 ], [ %.110041874, %720 ], [ %.110041874, %727 ], [ %.110041874, %729 ], [ %.110041874, %731 ], [ %.110041874, %734 ], [ %.110041874, %732 ], [ %.110041874, %742 ], [ %.110041874, %745 ], [ %.110041874, %743 ], [ %.110041874, %753 ], [ %.110041874, %756 ], [ %.110041874, %754 ], [ %.110041874, %770 ], [ %.110041874, %768 ], [ %.110041874, %778 ], [ %.110041874, %776 ], [ %.110041874, %788 ], [ %.110041874, %794 ], [ %.110041874, %784 ], [ %.110041874, %799 ], [ %.110041874, %802 ], [ %.110041874, %800 ], [ %.110041874, %834 ], [ %.110041874, %831 ], [ %.110041874, %838 ], [ %.110041874, %843 ], [ %.110041874, %840 ], [ %.110041874, %847 ], [ %.110041874, %852 ], [ %.110041874, %849 ], [ %.110041874, %856 ], [ %.110041874, %858 ], [ %.110041874, %919 ], [ %.110041874, %937 ], [ %.110041874, %php_http_should_keep_alive.exit ], [ %.110041874, %1004 ], [ %.110041874, %1011 ], [ %.110041874, %1011 ], [ %.110041874, %1017 ], [ %.110041874, %1019 ], [ %.110041874, %.fold.split1323 ], [ %.110041874, %171 ] - %.21002 = phi ptr [ %.110011875, %1040 ], [ %.110011875, %1036 ], [ %.110011875, %1022 ], [ %.110011875, %1012 ], [ %.110011875, %1002 ], [ %.110011875, %994 ], [ %.110011875, %983 ], [ %.110011875, %969 ], [ %.110011875, %961 ], [ %.110011875, %883 ], [ %.110011875, %914 ], [ %.110011875, %932 ], [ %.110011875, %958 ], [ %.110011875, %860 ], [ %.110011875, %867 ], [ %.110011875, %864 ], [ %.110011875, %861 ], [ %.110011875, %859 ], [ %.110011875, %822 ], [ %.110011875, %826 ], [ %.110011875, %821 ], [ %.110011875, %821 ], [ %.110011875, %821 ], [ %.110011875, %764 ], [ %.110011875, %795 ], [ %.110011875, %796 ], [ %.110011875, %792 ], [ %.110011875, %785 ], [ %.110011875, %671 ], [ %.110011875, %683 ], [ %.110011875, %682 ], [ %.110011875, %676 ], [ %.110011875, %672 ], [ %.110011875, %666 ], [ %.110011875, %665 ], [ %.110011875, %664 ], [ %.110011875, %663 ], [ %.110011875, %648 ], [ %.110011875, %651 ], [ %.110011875, %644 ], [ %.110011875, %636 ], [ %.110011875, %629 ], [ %.110011875, %626 ], [ %.110011875, %625 ], [ %.110011875, %624 ], [ %.110011875, %623 ], [ %.110011875, %621 ], [ %.110011875, %622 ], [ %.110011875, %548 ], [ %.110011875, %552 ], [ %.110011875, %552 ], [ %.110011875, %620 ], [ %.110011875, %597 ], [ %.110011875, %511 ], [ %.110011875, %547 ], [ %.110011875, %546 ], [ %.110011875, %534 ], [ %.110011875, %423 ], [ null, %495 ], [ null, %472 ], [ %.110011875, %427 ], [ %.110011875, %422 ], [ %.110011875, %421 ], [ %.110011875, %409 ], [ %.110011875, %386 ], [ %.110011875, %287 ], [ %.110011875, %359 ], [ %.110011875, %336 ], [ %.110011875, %273 ], [ %.110011875, %253 ], [ %.110011875, %256 ], [ %.110011875, %261 ], [ %.110011875, %252 ], [ %.110011875, %251 ], [ %.110011875, %244 ], [ %.110011875, %248 ], [ %.110011875, %240 ], [ %.110011875, %238 ], [ %.110011875, %158 ], [ %.110011875, %157 ], [ %.110011875, %156 ], [ %.110011875, %147 ], [ %.110011875, %146 ], [ %.110011875, %148 ], [ %.110011875, %138 ], [ %.110011875, %140 ], [ %.110011875, %130 ], [ %.110011875, %123 ], [ %.110011875, %115 ], [ %.110011875, %108 ], [ %.110011875, %105 ], [ %.110011875, %104 ], [ %.110011875, %103 ], [ %.110011875, %101 ], [ %.110011875, %101 ], [ %.110011875, %102 ], [ %.110011875, %84 ], [ %.110011875, %88 ], [ %.110011875, %67 ], [ %.110011875, %1041 ], [ %.110011875, %67 ], [ %.110011875, %78 ], [ %.110011875, %66 ], [ %.110011875, %111 ], [ %.110011875, %126 ], [ %.110011875, %145 ], [ %.110011875, %155 ], [ %.110011875, %.fold.split ], [ %.110011875, %158 ], [ %.110011875, %184 ], [ %.110011875, %183 ], [ %.110011875, %182 ], [ %.110011875, %181 ], [ %.110011875, %180 ], [ %.110011875, %179 ], [ %.110011875, %178 ], [ %.110011875, %177 ], [ %.110011875, %176 ], [ %.110011875, %175 ], [ %.110011875, %174 ], [ %.110011875, %173 ], [ %.110011875, %172 ], [ %.110011875, %241 ], [ %.110011875, %247 ], [ %.110011875, %249 ], [ %.110011875, %260 ], [ %.110011875, %262 ], [ %.110011875, %265 ], [ %.110011875, %263 ], [ %.110011875, %275 ], [ %.110011875, %276 ], [ %.110011875, %279 ], [ %.110011875, %277 ], [ %.110011875, %303 ], [ %.110011875, %306 ], [ %.110011875, %304 ], [ %.110011875, %360 ], [ %.110011875, %363 ], [ %.110011875, %361 ], [ %.110011875, %371 ], [ %.110011875, %374 ], [ %.110011875, %372 ], [ %.010231866, %382 ], [ %.110011875, %387 ], [ %.110011875, %390 ], [ %.110011875, %388 ], [ null, %439 ], [ null, %442 ], [ null, %440 ], [ null, %496 ], [ null, %499 ], [ null, %497 ], [ %.110011875, %507 ], [ %.110011875, %512 ], [ %.110011875, %515 ], [ %.110011875, %513 ], [ %.110011875, %564 ], [ %.110011875, %567 ], [ %.110011875, %565 ], [ %.110011875, %632 ], [ %.110011875, %647 ], [ %.110011875, %657 ], [ %.110011875, %658 ], [ %.110011875, %659 ], [ %.110011875, %680 ], [ %.110011875, %687 ], [ %.110011875, %684 ], [ %.110011875, %691 ], [ %.110011875, %696 ], [ %.110011875, %693 ], [ %.110011875, %700 ], [ %.110011875, %705 ], [ %.110011875, %702 ], [ %.110011875, %709 ], [ %.110011875, %714 ], [ %.110011875, %711 ], [ %.110011875, %718 ], [ %.110011875, %723 ], [ %.110011875, %720 ], [ %.110011875, %727 ], [ %.110011875, %729 ], [ %.110011875, %731 ], [ %.110011875, %734 ], [ %.110011875, %732 ], [ %.110011875, %742 ], [ %.110011875, %745 ], [ %.110011875, %743 ], [ %.110011875, %753 ], [ %.110011875, %756 ], [ %.110011875, %754 ], [ %.110011875, %770 ], [ %.110011875, %768 ], [ %.110011875, %778 ], [ %.110011875, %776 ], [ %.110011875, %788 ], [ %.110011875, %794 ], [ %.110011875, %784 ], [ %.110011875, %799 ], [ %.110011875, %802 ], [ %.110011875, %800 ], [ %.110011875, %834 ], [ %.110011875, %831 ], [ %.110011875, %838 ], [ %.110011875, %843 ], [ %.110011875, %840 ], [ %.110011875, %847 ], [ %.110011875, %852 ], [ %.110011875, %849 ], [ %.110011875, %856 ], [ %.110011875, %858 ], [ %.110011875, %919 ], [ %.110011875, %937 ], [ %.110011875, %php_http_should_keep_alive.exit ], [ %.110011875, %1004 ], [ %.110011875, %1011 ], [ %.110011875, %1011 ], [ %.110011875, %1017 ], [ %.110011875, %1019 ], [ %.110011875, %.fold.split1323 ], [ %.110011875, %171 ] - %.2999 = phi ptr [ %.19981876, %1040 ], [ %.19981876, %1036 ], [ %.19981876, %1022 ], [ %.19981876, %1012 ], [ %.19981876, %1002 ], [ %.19981876, %994 ], [ %.19981876, %983 ], [ %.19981876, %969 ], [ %.19981876, %961 ], [ %.19981876, %883 ], [ %.19981876, %914 ], [ %.19981876, %932 ], [ %.19981876, %958 ], [ %.19981876, %860 ], [ %.19981876, %867 ], [ %.19981876, %864 ], [ %.19981876, %861 ], [ %.19981876, %859 ], [ %.19981876, %822 ], [ %.19981876, %826 ], [ %.19981876, %821 ], [ %.19981876, %821 ], [ %.19981876, %821 ], [ %.19981876, %764 ], [ %.19981876, %795 ], [ %.19981876, %796 ], [ %.19981876, %792 ], [ %.19981876, %785 ], [ %.19981876, %671 ], [ %.19981876, %683 ], [ %.19981876, %682 ], [ %.19981876, %676 ], [ %.19981876, %672 ], [ %.19981876, %666 ], [ %.19981876, %665 ], [ %.19981876, %664 ], [ %.19981876, %663 ], [ %.19981876, %648 ], [ %.19981876, %651 ], [ %.19981876, %644 ], [ %.19981876, %636 ], [ %.19981876, %629 ], [ %.19981876, %626 ], [ %.19981876, %625 ], [ %.19981876, %624 ], [ %.19981876, %623 ], [ %.19981876, %621 ], [ %.19981876, %622 ], [ %.19981876, %548 ], [ %.19981876, %552 ], [ %.19981876, %552 ], [ %.19981876, %620 ], [ %.19981876, %597 ], [ %.19981876, %511 ], [ %.19981876, %547 ], [ %.19981876, %546 ], [ %.19981876, %534 ], [ %.19981876, %423 ], [ %.19981876, %495 ], [ %.19981876, %472 ], [ %.19981876, %427 ], [ %.19981876, %422 ], [ %.19981876, %421 ], [ %.19981876, %409 ], [ %.19981876, %386 ], [ %.19981876, %287 ], [ null, %359 ], [ null, %336 ], [ %.19981876, %273 ], [ %.19981876, %253 ], [ %.19981876, %256 ], [ %.010231866, %261 ], [ %.19981876, %252 ], [ %.19981876, %251 ], [ %.19981876, %244 ], [ %.19981876, %248 ], [ %.19981876, %240 ], [ %.19981876, %238 ], [ %.19981876, %158 ], [ %.19981876, %157 ], [ %.19981876, %156 ], [ %.19981876, %147 ], [ %.19981876, %146 ], [ %.19981876, %148 ], [ %.19981876, %138 ], [ %.19981876, %140 ], [ %.19981876, %130 ], [ %.19981876, %123 ], [ %.19981876, %115 ], [ %.19981876, %108 ], [ %.19981876, %105 ], [ %.19981876, %104 ], [ %.19981876, %103 ], [ %.19981876, %101 ], [ %.19981876, %101 ], [ %.19981876, %102 ], [ %.19981876, %84 ], [ %.19981876, %88 ], [ %.19981876, %67 ], [ %.19981876, %1041 ], [ %.19981876, %67 ], [ %.19981876, %78 ], [ %.19981876, %66 ], [ %.19981876, %111 ], [ %.19981876, %126 ], [ %.19981876, %145 ], [ %.19981876, %155 ], [ %.19981876, %.fold.split ], [ %.19981876, %158 ], [ %.19981876, %184 ], [ %.19981876, %183 ], [ %.19981876, %182 ], [ %.19981876, %181 ], [ %.19981876, %180 ], [ %.19981876, %179 ], [ %.19981876, %178 ], [ %.19981876, %177 ], [ %.19981876, %176 ], [ %.19981876, %175 ], [ %.19981876, %174 ], [ %.19981876, %173 ], [ %.19981876, %172 ], [ %.19981876, %241 ], [ %.19981876, %247 ], [ %.19981876, %249 ], [ %.19981876, %260 ], [ %.19981876, %262 ], [ %.19981876, %265 ], [ %.19981876, %263 ], [ %.010231866, %275 ], [ %.19981876, %276 ], [ %.19981876, %279 ], [ %.19981876, %277 ], [ null, %303 ], [ null, %306 ], [ null, %304 ], [ null, %360 ], [ null, %363 ], [ null, %361 ], [ null, %371 ], [ null, %374 ], [ null, %372 ], [ %.19981876, %382 ], [ %.19981876, %387 ], [ %.19981876, %390 ], [ %.19981876, %388 ], [ %.19981876, %439 ], [ %.19981876, %442 ], [ %.19981876, %440 ], [ %.19981876, %496 ], [ %.19981876, %499 ], [ %.19981876, %497 ], [ %.19981876, %507 ], [ %.19981876, %512 ], [ %.19981876, %515 ], [ %.19981876, %513 ], [ %.19981876, %564 ], [ %.19981876, %567 ], [ %.19981876, %565 ], [ %.19981876, %632 ], [ %.19981876, %647 ], [ %.19981876, %657 ], [ %.19981876, %658 ], [ %.19981876, %659 ], [ %.19981876, %680 ], [ %.19981876, %687 ], [ %.19981876, %684 ], [ %.19981876, %691 ], [ %.19981876, %696 ], [ %.19981876, %693 ], [ %.19981876, %700 ], [ %.19981876, %705 ], [ %.19981876, %702 ], [ %.19981876, %709 ], [ %.19981876, %714 ], [ %.19981876, %711 ], [ %.19981876, %718 ], [ %.19981876, %723 ], [ %.19981876, %720 ], [ %.19981876, %727 ], [ %.19981876, %729 ], [ %.19981876, %731 ], [ %.19981876, %734 ], [ %.19981876, %732 ], [ %.19981876, %742 ], [ %.19981876, %745 ], [ %.19981876, %743 ], [ %.19981876, %753 ], [ %.19981876, %756 ], [ %.19981876, %754 ], [ %.19981876, %770 ], [ %.19981876, %768 ], [ %.19981876, %778 ], [ %.19981876, %776 ], [ %.19981876, %788 ], [ %.19981876, %794 ], [ %.19981876, %784 ], [ %.19981876, %799 ], [ %.19981876, %802 ], [ %.19981876, %800 ], [ %.19981876, %834 ], [ %.19981876, %831 ], [ %.19981876, %838 ], [ %.19981876, %843 ], [ %.19981876, %840 ], [ %.19981876, %847 ], [ %.19981876, %852 ], [ %.19981876, %849 ], [ %.19981876, %856 ], [ %.19981876, %858 ], [ %.19981876, %919 ], [ %.19981876, %937 ], [ %.19981876, %php_http_should_keep_alive.exit ], [ %.19981876, %1004 ], [ %.19981876, %1011 ], [ %.19981876, %1011 ], [ %.19981876, %1017 ], [ %.19981876, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.19981876, %171 ] - %.2 = phi ptr [ %.11877, %1040 ], [ %.11877, %1036 ], [ %.11877, %1022 ], [ %.11877, %1012 ], [ %.11877, %1002 ], [ %.11877, %994 ], [ %.11877, %983 ], [ %.11877, %969 ], [ %.11877, %961 ], [ %.11877, %883 ], [ %.11877, %914 ], [ %.11877, %932 ], [ %.11877, %958 ], [ %.11877, %860 ], [ %.11877, %867 ], [ %.11877, %864 ], [ %.11877, %861 ], [ %.11877, %859 ], [ %.11877, %822 ], [ %.11877, %826 ], [ %.11877, %821 ], [ %.11877, %821 ], [ %.11877, %821 ], [ %.11877, %764 ], [ %.11877, %795 ], [ %.11877, %796 ], [ %.11877, %792 ], [ %.11877, %785 ], [ %.11877, %671 ], [ %.11877, %683 ], [ %.11877, %682 ], [ %.11877, %676 ], [ %.11877, %672 ], [ %.11877, %666 ], [ %.11877, %665 ], [ %.11877, %664 ], [ %.11877, %663 ], [ %.11877, %648 ], [ %.11877, %651 ], [ %.11877, %644 ], [ %.11877, %636 ], [ %.11877, %629 ], [ %.11877, %626 ], [ %.11877, %625 ], [ %.11877, %624 ], [ %.11877, %623 ], [ %.11877, %621 ], [ %.11877, %622 ], [ %.11877, %548 ], [ %.11877, %552 ], [ %.11877, %552 ], [ null, %620 ], [ null, %597 ], [ %.11877, %511 ], [ %.11877, %547 ], [ null, %546 ], [ null, %534 ], [ %.11877, %423 ], [ null, %495 ], [ null, %472 ], [ %.11877, %427 ], [ %.11877, %422 ], [ null, %421 ], [ null, %409 ], [ %.11877, %386 ], [ %.11877, %287 ], [ null, %359 ], [ null, %336 ], [ %.11877, %273 ], [ %.11877, %253 ], [ %.11877, %256 ], [ %.11877, %261 ], [ %.11877, %252 ], [ %.11877, %251 ], [ %.11877, %244 ], [ %.11877, %248 ], [ %.11877, %240 ], [ %.11877, %238 ], [ %.11877, %158 ], [ %.11877, %157 ], [ %.11877, %156 ], [ %.11877, %147 ], [ %.11877, %146 ], [ %.11877, %148 ], [ %.11877, %138 ], [ %.11877, %140 ], [ %.11877, %130 ], [ %.11877, %123 ], [ %.11877, %115 ], [ %.11877, %108 ], [ %.11877, %105 ], [ %.11877, %104 ], [ %.11877, %103 ], [ %.11877, %101 ], [ %.11877, %101 ], [ %.11877, %102 ], [ %.11877, %84 ], [ %.11877, %88 ], [ %.11877, %67 ], [ %.11877, %1041 ], [ %.11877, %67 ], [ %.11877, %78 ], [ %.11877, %66 ], [ %.11877, %111 ], [ %.11877, %126 ], [ %.11877, %145 ], [ %.11877, %155 ], [ %.11877, %.fold.split ], [ %.11877, %158 ], [ %.11877, %184 ], [ %.11877, %183 ], [ %.11877, %182 ], [ %.11877, %181 ], [ %.11877, %180 ], [ %.11877, %179 ], [ %.11877, %178 ], [ %.11877, %177 ], [ %.11877, %176 ], [ %.11877, %175 ], [ %.11877, %174 ], [ %.11877, %173 ], [ %.11877, %172 ], [ %.010231866, %241 ], [ %.11877, %247 ], [ %.11877, %249 ], [ %.11877, %260 ], [ null, %262 ], [ null, %265 ], [ null, %263 ], [ %.11877, %275 ], [ null, %276 ], [ null, %279 ], [ null, %277 ], [ null, %303 ], [ null, %306 ], [ null, %304 ], [ %.11877, %360 ], [ %.11877, %363 ], [ %.11877, %361 ], [ %.11877, %371 ], [ %.11877, %374 ], [ %.11877, %372 ], [ %.11877, %382 ], [ null, %387 ], [ null, %390 ], [ null, %388 ], [ null, %439 ], [ null, %442 ], [ null, %440 ], [ %.11877, %496 ], [ %.11877, %499 ], [ %.11877, %497 ], [ %.11877, %507 ], [ null, %512 ], [ null, %515 ], [ null, %513 ], [ null, %564 ], [ null, %567 ], [ null, %565 ], [ %.11877, %632 ], [ %.11877, %647 ], [ %.11877, %657 ], [ %.11877, %658 ], [ %.11877, %659 ], [ %.11877, %680 ], [ %.11877, %687 ], [ %.11877, %684 ], [ %.11877, %691 ], [ %.11877, %696 ], [ %.11877, %693 ], [ %.11877, %700 ], [ %.11877, %705 ], [ %.11877, %702 ], [ %.11877, %709 ], [ %.11877, %714 ], [ %.11877, %711 ], [ %.11877, %718 ], [ %.11877, %723 ], [ %.11877, %720 ], [ %.11877, %727 ], [ %.11877, %729 ], [ %.11877, %731 ], [ %.11877, %734 ], [ %.11877, %732 ], [ %.11877, %742 ], [ %.11877, %745 ], [ %.11877, %743 ], [ %.11877, %753 ], [ %.11877, %756 ], [ %.11877, %754 ], [ %.11877, %770 ], [ %.11877, %768 ], [ %.11877, %778 ], [ %.11877, %776 ], [ %.11877, %788 ], [ %.11877, %794 ], [ %.11877, %784 ], [ %.11877, %799 ], [ %.11877, %802 ], [ %.11877, %800 ], [ %.11877, %834 ], [ %.11877, %831 ], [ %.11877, %838 ], [ %.11877, %843 ], [ %.11877, %840 ], [ %.11877, %847 ], [ %.11877, %852 ], [ %.11877, %849 ], [ %.11877, %856 ], [ %.11877, %858 ], [ %.11877, %919 ], [ %.11877, %937 ], [ %.11877, %php_http_should_keep_alive.exit ], [ %.11877, %1004 ], [ %.11877, %1011 ], [ %.11877, %1011 ], [ %.11877, %1017 ], [ %.11877, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.11877, %171 ] +1042: ; preds = %171, %946, %1017, %858, %856, %847, %838, %729, %727, %718, %709, %700, %691, %240, %.fold.split1323, %1019, %1011, %1011, %1004, %php_http_should_keep_alive.exit, %937, %919, %849, %852, %840, %843, %831, %834, %800, %802, %799, %784, %794, %788, %776, %778, %768, %770, %754, %756, %753, %743, %745, %742, %732, %734, %731, %720, %723, %711, %714, %702, %705, %693, %696, %684, %687, %680, %659, %658, %657, %647, %632, %565, %567, %564, %513, %515, %512, %507, %497, %499, %496, %440, %442, %439, %388, %390, %387, %382, %372, %374, %371, %361, %363, %360, %304, %306, %303, %277, %279, %276, %275, %263, %265, %262, %260, %249, %247, %241, %172, %173, %174, %175, %176, %177, %178, %179, %180, %181, %182, %183, %184, %158, %158, %155, %.fold.split, %145, %126, %111, %66, %78, %67, %67, %103, %104, %105, %108, %123, %140, %156, %157, %238, %248, %251, %252, %623, %624, %625, %626, %629, %644, %648, %883, %1002, %1012, %1036, %1040, %1041, %88, %84, %101, %101, %102, %115, %130, %138, %147, %146, %148, %244, %253, %256, %261, %273, %287, %359, %336, %386, %422, %421, %409, %423, %427, %495, %472, %511, %547, %546, %534, %548, %552, %552, %620, %597, %621, %622, %636, %651, %666, %665, %664, %663, %671, %682, %683, %676, %672, %764, %796, %795, %792, %785, %822, %821, %821, %821, %859, %826, %860, %867, %864, %861, %958, %932, %914, %969, %983, %961, %994, %1022 + %.21025 = phi ptr [ %.010231866, %1040 ], [ %.11024, %1036 ], [ %.010231866, %1022 ], [ %.010231866, %1012 ], [ %.010231866, %1002 ], [ %996, %994 ], [ %972, %983 ], [ %972, %969 ], [ %.010231866, %961 ], [ %.010231866, %883 ], [ %.010231866, %914 ], [ %.010231866, %932 ], [ %.010231866, %958 ], [ %.010231866, %860 ], [ %.010231866, %867 ], [ %.010231866, %864 ], [ %.010231866, %861 ], [ %.010231866, %859 ], [ %.010231866, %822 ], [ %.010231866, %826 ], [ %.010231866, %821 ], [ %.010231866, %821 ], [ %.010231866, %821 ], [ %.010231866, %764 ], [ %.010231866, %795 ], [ %.010231866, %796 ], [ %.010231866, %792 ], [ %.010231866, %785 ], [ %.010231866, %671 ], [ %.010231866, %683 ], [ %.010231866, %682 ], [ %.010231866, %676 ], [ %.010231866, %672 ], [ %.010231866, %666 ], [ %.010231866, %665 ], [ %.010231866, %664 ], [ %.010231866, %663 ], [ %.010231866, %648 ], [ %.010231866, %651 ], [ %.010231866, %644 ], [ %.010231866, %636 ], [ %.010231866, %629 ], [ %.010231866, %626 ], [ %.010231866, %625 ], [ %.010231866, %624 ], [ %.010231866, %623 ], [ %.010231866, %621 ], [ %.010231866, %622 ], [ %.010231866, %548 ], [ %.010231866, %552 ], [ %.010231866, %552 ], [ %.010231866, %620 ], [ %.010231866, %597 ], [ %.010231866, %511 ], [ %.010231866, %547 ], [ %.010231866, %546 ], [ %.010231866, %534 ], [ %.010231866, %423 ], [ %.010231866, %495 ], [ %.010231866, %472 ], [ %.010231866, %427 ], [ %.010231866, %422 ], [ %.010231866, %421 ], [ %.010231866, %409 ], [ %.010231866, %386 ], [ %.010231866, %287 ], [ %.010231866, %359 ], [ %.010231866, %336 ], [ %.010231866, %273 ], [ %.010231866, %253 ], [ %.010231866, %256 ], [ %.010231866, %261 ], [ %.010231866, %252 ], [ %.010231866, %251 ], [ %.010231866, %244 ], [ %.010231866, %248 ], [ %.010231866, %240 ], [ %.010231866, %238 ], [ %.010231866, %158 ], [ %.010231866, %157 ], [ %.010231866, %156 ], [ %.010231866, %147 ], [ %.010231866, %146 ], [ %.010231866, %148 ], [ %.010231866, %138 ], [ %.010231866, %140 ], [ %.010231866, %130 ], [ %.010231866, %123 ], [ %.010231866, %115 ], [ %.010231866, %108 ], [ %.010231866, %105 ], [ %.010231866, %104 ], [ %.010231866, %103 ], [ %.010231866, %101 ], [ %.010231866, %101 ], [ %.010231866, %102 ], [ %.010231866, %84 ], [ %.010231866, %88 ], [ %.010231866, %67 ], [ %.010231866, %1041 ], [ %.010231866, %67 ], [ %.010231866, %78 ], [ %.010231866, %66 ], [ %.010231866, %111 ], [ %.010231866, %126 ], [ %.010231866, %145 ], [ %.010231866, %155 ], [ %.010231866, %.fold.split ], [ %.010231866, %158 ], [ %.010231866, %184 ], [ %.010231866, %183 ], [ %.010231866, %182 ], [ %.010231866, %181 ], [ %.010231866, %180 ], [ %.010231866, %179 ], [ %.010231866, %178 ], [ %.010231866, %177 ], [ %.010231866, %176 ], [ %.010231866, %175 ], [ %.010231866, %174 ], [ %.010231866, %173 ], [ %.010231866, %172 ], [ %.010231866, %241 ], [ %.010231866, %247 ], [ %.010231866, %249 ], [ %.010231866, %260 ], [ %.010231866, %262 ], [ %.010231866, %265 ], [ %.010231866, %263 ], [ %.010231866, %275 ], [ %.010231866, %276 ], [ %.010231866, %279 ], [ %.010231866, %277 ], [ %.010231866, %303 ], [ %.010231866, %306 ], [ %.010231866, %304 ], [ %.010231866, %360 ], [ %.010231866, %363 ], [ %.010231866, %361 ], [ %.010231866, %371 ], [ %.010231866, %374 ], [ %.010231866, %372 ], [ %.010231866, %382 ], [ %.010231866, %387 ], [ %.010231866, %390 ], [ %.010231866, %388 ], [ %.010231866, %439 ], [ %.010231866, %442 ], [ %.010231866, %440 ], [ %.010231866, %496 ], [ %.010231866, %499 ], [ %.010231866, %497 ], [ %.010231866, %507 ], [ %.010231866, %512 ], [ %.010231866, %515 ], [ %.010231866, %513 ], [ %.010231866, %564 ], [ %.010231866, %567 ], [ %.010231866, %565 ], [ %.010231866, %632 ], [ %.010231866, %647 ], [ %.010231866, %657 ], [ %.010231866, %658 ], [ %.010231866, %659 ], [ %.010231866, %680 ], [ %.010231866, %687 ], [ %.010231866, %684 ], [ %.010231866, %691 ], [ %.010231866, %696 ], [ %.010231866, %693 ], [ %.010231866, %700 ], [ %.010231866, %705 ], [ %.010231866, %702 ], [ %.010231866, %709 ], [ %.010231866, %714 ], [ %.010231866, %711 ], [ %.010231866, %718 ], [ %.010231866, %723 ], [ %.010231866, %720 ], [ %.010231866, %727 ], [ %.010231866, %729 ], [ %.010231866, %731 ], [ %.010231866, %734 ], [ %.010231866, %732 ], [ %.010231866, %742 ], [ %.010231866, %745 ], [ %.010231866, %743 ], [ %.010231866, %753 ], [ %.010231866, %756 ], [ %.010231866, %754 ], [ %.010231866, %770 ], [ %.010231866, %768 ], [ %.010231866, %778 ], [ %.010231866, %776 ], [ %.010231866, %788 ], [ %.010231866, %794 ], [ %.010231866, %784 ], [ %.010231866, %799 ], [ %.010231866, %802 ], [ %.010231866, %800 ], [ %.010231866, %834 ], [ %.010231866, %831 ], [ %.010231866, %838 ], [ %.010231866, %843 ], [ %.010231866, %840 ], [ %.010231866, %847 ], [ %.010231866, %852 ], [ %.010231866, %849 ], [ %.010231866, %856 ], [ %.010231866, %858 ], [ %.010231866, %919 ], [ %.010231866, %937 ], [ %.010231866, %php_http_should_keep_alive.exit ], [ %.010231866, %1004 ], [ %.010231866, %1011 ], [ %.010231866, %1011 ], [ %.010231866, %1017 ], [ %.010231866, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.010231866, %946 ], [ %.010231866, %171 ] + %.31022 = phi i32 [ 52, %1040 ], [ %spec.select1322, %1036 ], [ 40, %1022 ], [ 47, %1012 ], [ 47, %1002 ], [ 54, %994 ], [ %987, %983 ], [ 53, %969 ], [ 53, %961 ], [ %887, %883 ], [ %918, %914 ], [ %936, %932 ], [ %960, %958 ], [ 40, %860 ], [ 40, %867 ], [ 40, %864 ], [ 40, %861 ], [ 43, %859 ], [ 43, %822 ], [ 43, %826 ], [ 43, %821 ], [ 43, %821 ], [ 43, %821 ], [ 42, %764 ], [ 43, %795 ], [ 43, %796 ], [ 43, %792 ], [ 43, %785 ], [ 41, %671 ], [ 41, %683 ], [ 41, %682 ], [ 41, %676 ], [ 41, %672 ], [ 41, %666 ], [ 41, %665 ], [ 41, %664 ], [ 41, %663 ], [ 40, %648 ], [ 38, %651 ], [ 38, %644 ], [ 36, %636 ], [ 36, %629 ], [ 35, %626 ], [ 34, %625 ], [ 33, %624 ], [ 32, %623 ], [ 30, %621 ], [ 31, %622 ], [ 29, %548 ], [ 29, %552 ], [ 29, %552 ], [ 40, %620 ], [ 39, %597 ], [ 28, %511 ], [ 29, %547 ], [ 40, %546 ], [ 39, %534 ], [ 27, %423 ], [ 40, %495 ], [ 39, %472 ], [ 27, %427 ], [ 28, %422 ], [ 40, %421 ], [ 39, %409 ], [ 26, %386 ], [ 25, %287 ], [ 40, %359 ], [ 39, %336 ], [ 24, %273 ], [ 23, %253 ], [ 23, %256 ], [ 25, %261 ], [ 23, %252 ], [ 22, %251 ], [ 20, %244 ], [ 23, %248 ], [ 19, %240 ], [ %.11020, %238 ], [ 17, %158 ], [ 40, %157 ], [ 40, %156 ], [ 40, %147 ], [ 16, %146 ], [ 14, %148 ], [ 13, %138 ], [ 14, %140 ], [ 12, %130 ], [ 12, %123 ], [ 10, %115 ], [ 10, %108 ], [ 9, %105 ], [ 8, %104 ], [ 7, %103 ], [ 4, %101 ], [ 4, %101 ], [ 5, %102 ], [ 6, %84 ], [ 18, %88 ], [ 2, %67 ], [ 46, %1041 ], [ 2, %67 ], [ 3, %78 ], [ 6, %66 ], [ 11, %111 ], [ 13, %126 ], [ 15, %145 ], [ 16, %155 ], [ 15, %.fold.split ], [ 17, %158 ], [ 18, %184 ], [ 18, %183 ], [ 18, %182 ], [ 18, %181 ], [ 18, %180 ], [ 18, %179 ], [ 18, %178 ], [ 18, %177 ], [ 18, %176 ], [ 18, %175 ], [ 18, %174 ], [ 18, %173 ], [ 18, %172 ], [ 20, %241 ], [ 21, %247 ], [ 23, %249 ], [ 24, %260 ], [ 30, %262 ], [ 30, %265 ], [ 30, %263 ], [ 25, %275 ], [ 30, %276 ], [ 30, %279 ], [ 30, %277 ], [ 30, %303 ], [ 30, %306 ], [ 30, %304 ], [ 26, %360 ], [ 26, %363 ], [ 26, %361 ], [ 28, %371 ], [ 28, %374 ], [ 28, %372 ], [ 27, %382 ], [ 30, %387 ], [ 30, %390 ], [ 30, %388 ], [ 30, %439 ], [ 30, %442 ], [ 30, %440 ], [ 28, %496 ], [ 28, %499 ], [ 28, %497 ], [ 29, %507 ], [ 30, %512 ], [ 30, %515 ], [ 30, %513 ], [ 30, %564 ], [ 30, %567 ], [ 30, %565 ], [ 37, %632 ], [ 39, %647 ], [ 40, %657 ], [ 45, %658 ], [ 41, %659 ], [ 41, %680 ], [ 41, %687 ], [ 41, %684 ], [ 41, %691 ], [ 41, %696 ], [ 41, %693 ], [ 41, %700 ], [ 41, %705 ], [ 41, %702 ], [ 41, %709 ], [ 41, %714 ], [ 41, %711 ], [ 41, %718 ], [ 41, %723 ], [ 41, %720 ], [ 41, %727 ], [ 41, %729 ], [ 42, %731 ], [ 42, %734 ], [ 42, %732 ], [ 44, %742 ], [ 44, %745 ], [ 44, %743 ], [ 40, %753 ], [ 40, %756 ], [ 40, %754 ], [ 44, %770 ], [ 44, %768 ], [ 40, %778 ], [ 40, %776 ], [ 43, %788 ], [ 43, %794 ], [ 43, %784 ], [ 44, %799 ], [ 44, %802 ], [ 44, %800 ], [ 43, %834 ], [ 43, %831 ], [ 43, %838 ], [ 43, %843 ], [ 43, %840 ], [ 43, %847 ], [ 43, %852 ], [ 43, %849 ], [ 43, %856 ], [ 43, %858 ], [ 46, %919 ], [ 53, %937 ], [ 54, %php_http_should_keep_alive.exit ], [ 48, %1004 ], [ 49, %1011 ], [ 49, %1011 ], [ %spec.select1320, %1017 ], [ 50, %1019 ], [ 25, %.fold.split1323 ], [ 54, %946 ], [ 18, %171 ] + %.11018 = phi i32 [ %.010171869, %1040 ], [ %.010171869, %1036 ], [ %.010171869, %1022 ], [ %.010171869, %1012 ], [ %.010171869, %1002 ], [ %.010171869, %994 ], [ %.010171869, %983 ], [ %.010171869, %969 ], [ %.010171869, %961 ], [ %.010171869, %883 ], [ %.010171869, %914 ], [ %.010171869, %932 ], [ %.010171869, %958 ], [ %.010171869, %860 ], [ 16, %867 ], [ 18, %864 ], [ 17, %861 ], [ 0, %859 ], [ 10, %822 ], [ 10, %826 ], [ %.010171869, %821 ], [ %.010171869, %821 ], [ %.010171869, %821 ], [ %.010171869, %764 ], [ 15, %795 ], [ 0, %796 ], [ 10, %792 ], [ 0, %785 ], [ %.010171869, %671 ], [ 0, %683 ], [ 6, %682 ], [ %679, %676 ], [ %675, %672 ], [ 0, %666 ], [ 8, %665 ], [ 7, %664 ], [ 5, %663 ], [ %.010171869, %648 ], [ %.010171869, %651 ], [ %.010171869, %644 ], [ %.010171869, %636 ], [ %.010171869, %629 ], [ %.010171869, %626 ], [ %.010171869, %625 ], [ %.010171869, %624 ], [ %.010171869, %623 ], [ %.010171869, %621 ], [ %.010171869, %622 ], [ %.010171869, %548 ], [ %.010171869, %552 ], [ %.010171869, %552 ], [ %.010171869, %620 ], [ %.010171869, %597 ], [ %.010171869, %511 ], [ %.010171869, %547 ], [ %.010171869, %546 ], [ %.010171869, %534 ], [ %.010171869, %423 ], [ %.010171869, %495 ], [ %.010171869, %472 ], [ %.010171869, %427 ], [ %.010171869, %422 ], [ %.010171869, %421 ], [ %.010171869, %409 ], [ %.010171869, %386 ], [ %.010171869, %287 ], [ %.010171869, %359 ], [ %.010171869, %336 ], [ %.010171869, %273 ], [ %.010171869, %253 ], [ %.010171869, %256 ], [ %.010171869, %261 ], [ %.010171869, %252 ], [ %.010171869, %251 ], [ %.010171869, %244 ], [ %.010171869, %248 ], [ %.010171869, %240 ], [ %.010171869, %238 ], [ %.010171869, %158 ], [ %.010171869, %157 ], [ %.010171869, %156 ], [ %.010171869, %147 ], [ %.010171869, %146 ], [ %.010171869, %148 ], [ %.010171869, %138 ], [ %.010171869, %140 ], [ %.010171869, %130 ], [ %.010171869, %123 ], [ %.010171869, %115 ], [ %.010171869, %108 ], [ %.010171869, %105 ], [ %.010171869, %104 ], [ %.010171869, %103 ], [ %.010171869, %101 ], [ %.010171869, %101 ], [ %.010171869, %102 ], [ %.010171869, %84 ], [ %.010171869, %88 ], [ %.010171869, %67 ], [ %.010171869, %1041 ], [ %.010171869, %67 ], [ %.010171869, %78 ], [ %.010171869, %66 ], [ %.010171869, %111 ], [ %.010171869, %126 ], [ %.010171869, %145 ], [ %.010171869, %155 ], [ %.010171869, %.fold.split ], [ %.010171869, %158 ], [ %.010171869, %184 ], [ %.010171869, %183 ], [ %.010171869, %182 ], [ %.010171869, %181 ], [ %.010171869, %180 ], [ %.010171869, %179 ], [ %.010171869, %178 ], [ %.010171869, %177 ], [ %.010171869, %176 ], [ %.010171869, %175 ], [ %.010171869, %174 ], [ %.010171869, %173 ], [ %.010171869, %172 ], [ %.010171869, %241 ], [ %.010171869, %247 ], [ %.010171869, %249 ], [ %.010171869, %260 ], [ %.010171869, %262 ], [ %.010171869, %265 ], [ %.010171869, %263 ], [ %.010171869, %275 ], [ %.010171869, %276 ], [ %.010171869, %279 ], [ %.010171869, %277 ], [ %.010171869, %303 ], [ %.010171869, %306 ], [ %.010171869, %304 ], [ %.010171869, %360 ], [ %.010171869, %363 ], [ %.010171869, %361 ], [ %.010171869, %371 ], [ %.010171869, %374 ], [ %.010171869, %372 ], [ %.010171869, %382 ], [ %.010171869, %387 ], [ %.010171869, %390 ], [ %.010171869, %388 ], [ %.010171869, %439 ], [ %.010171869, %442 ], [ %.010171869, %440 ], [ %.010171869, %496 ], [ %.010171869, %499 ], [ %.010171869, %497 ], [ %.010171869, %507 ], [ %.010171869, %512 ], [ %.010171869, %515 ], [ %.010171869, %513 ], [ %.010171869, %564 ], [ %.010171869, %567 ], [ %.010171869, %565 ], [ %.010171869, %632 ], [ %.010171869, %647 ], [ %.010171869, %657 ], [ %.010171869, %658 ], [ 1, %659 ], [ 4, %680 ], [ 0, %687 ], [ 0, %684 ], [ %spec.select1309, %691 ], [ 0, %696 ], [ 0, %693 ], [ %spec.select1310, %700 ], [ 0, %705 ], [ 0, %702 ], [ %spec.select1311, %709 ], [ 0, %714 ], [ 0, %711 ], [ %spec.select1312, %718 ], [ 0, %723 ], [ 0, %720 ], [ %spec.select1313, %727 ], [ %spec.select1314, %729 ], [ %.010171869, %731 ], [ %.010171869, %734 ], [ %.010171869, %732 ], [ %.010171869, %742 ], [ %.010171869, %745 ], [ %.010171869, %743 ], [ %.010171869, %753 ], [ %.010171869, %756 ], [ %.010171869, %754 ], [ 0, %770 ], [ 0, %768 ], [ %.010171869, %778 ], [ %.010171869, %776 ], [ %., %788 ], [ 14, %794 ], [ 0, %784 ], [ %.010171869, %799 ], [ %.010171869, %802 ], [ %.010171869, %800 ], [ 0, %834 ], [ 0, %831 ], [ %spec.select1315, %838 ], [ 0, %843 ], [ 0, %840 ], [ %spec.select1316, %847 ], [ 0, %852 ], [ 0, %849 ], [ %spec.select1317, %856 ], [ %spec.select1318, %858 ], [ %.010171869, %919 ], [ %.010171869, %937 ], [ %.010171869, %php_http_should_keep_alive.exit ], [ %.010171869, %1004 ], [ %.010171869, %1011 ], [ %.010171869, %1011 ], [ %.010171869, %1017 ], [ %.010171869, %1019 ], [ %.010171869, %.fold.split1323 ], [ %.010171869, %946 ], [ %.010171869, %171 ] + %.11016 = phi i32 [ %.010151870, %1040 ], [ %.010151870, %1036 ], [ %.010151870, %1022 ], [ %.010151870, %1012 ], [ %.010151870, %1002 ], [ %.010151870, %994 ], [ %.010151870, %983 ], [ %.010151870, %969 ], [ %.010151870, %961 ], [ %.010151870, %883 ], [ %.010151870, %914 ], [ %.010151870, %932 ], [ %.010151870, %958 ], [ %.010151870, %860 ], [ %.010151870, %867 ], [ %.010151870, %864 ], [ %.010151870, %861 ], [ %.010151870, %859 ], [ %.010151870, %822 ], [ %.010151870, %826 ], [ %.010151870, %821 ], [ %.010151870, %821 ], [ %.010151870, %821 ], [ %.010151870, %764 ], [ 0, %795 ], [ 0, %796 ], [ 0, %792 ], [ 0, %785 ], [ %.010151870, %671 ], [ %681, %683 ], [ %681, %682 ], [ %677, %676 ], [ %673, %672 ], [ 0, %666 ], [ 0, %665 ], [ 0, %664 ], [ 0, %663 ], [ %.010151870, %648 ], [ %.010151870, %651 ], [ %.010151870, %644 ], [ %.010151870, %636 ], [ %.010151870, %629 ], [ %.010151870, %626 ], [ %.010151870, %625 ], [ %.010151870, %624 ], [ %.010151870, %623 ], [ %.010151870, %621 ], [ %.010151870, %622 ], [ %.010151870, %548 ], [ %.010151870, %552 ], [ %.010151870, %552 ], [ %.010151870, %620 ], [ %.010151870, %597 ], [ %.010151870, %511 ], [ %.010151870, %547 ], [ %.010151870, %546 ], [ %.010151870, %534 ], [ %.010151870, %423 ], [ %.010151870, %495 ], [ %.010151870, %472 ], [ %.010151870, %427 ], [ %.010151870, %422 ], [ %.010151870, %421 ], [ %.010151870, %409 ], [ %.010151870, %386 ], [ %.010151870, %287 ], [ %.010151870, %359 ], [ %.010151870, %336 ], [ %.010151870, %273 ], [ %.010151870, %253 ], [ %.010151870, %256 ], [ %.010151870, %261 ], [ %.010151870, %252 ], [ %.010151870, %251 ], [ %.010151870, %244 ], [ %.010151870, %248 ], [ %.010151870, %240 ], [ %239, %238 ], [ %.010151870, %158 ], [ %.010151870, %157 ], [ %.010151870, %156 ], [ %.010151870, %147 ], [ %.010151870, %146 ], [ %.010151870, %148 ], [ %.010151870, %138 ], [ %.010151870, %140 ], [ %.010151870, %130 ], [ %.010151870, %123 ], [ %.010151870, %115 ], [ %.010151870, %108 ], [ %.010151870, %105 ], [ %.010151870, %104 ], [ %.010151870, %103 ], [ %.010151870, %101 ], [ %.010151870, %101 ], [ %.010151870, %102 ], [ %.010151870, %84 ], [ 2, %88 ], [ %.010151870, %67 ], [ %.010151870, %1041 ], [ %.010151870, %67 ], [ %.010151870, %78 ], [ %.010151870, %66 ], [ %.010151870, %111 ], [ %.010151870, %126 ], [ %.010151870, %145 ], [ %.010151870, %155 ], [ %.010151870, %.fold.split ], [ %.010151870, %158 ], [ 1, %184 ], [ 1, %183 ], [ 1, %182 ], [ 1, %181 ], [ 1, %180 ], [ 1, %179 ], [ 1, %178 ], [ 1, %177 ], [ 1, %176 ], [ 1, %175 ], [ 1, %174 ], [ 1, %173 ], [ 1, %172 ], [ %.010151870, %241 ], [ %.010151870, %247 ], [ %.010151870, %249 ], [ %.010151870, %260 ], [ %.010151870, %262 ], [ %.010151870, %265 ], [ %.010151870, %263 ], [ %.010151870, %275 ], [ %.010151870, %276 ], [ %.010151870, %279 ], [ %.010151870, %277 ], [ %.010151870, %303 ], [ %.010151870, %306 ], [ %.010151870, %304 ], [ %.010151870, %360 ], [ %.010151870, %363 ], [ %.010151870, %361 ], [ %.010151870, %371 ], [ %.010151870, %374 ], [ %.010151870, %372 ], [ %.010151870, %382 ], [ %.010151870, %387 ], [ %.010151870, %390 ], [ %.010151870, %388 ], [ %.010151870, %439 ], [ %.010151870, %442 ], [ %.010151870, %440 ], [ %.010151870, %496 ], [ %.010151870, %499 ], [ %.010151870, %497 ], [ %.010151870, %507 ], [ %.010151870, %512 ], [ %.010151870, %515 ], [ %.010151870, %513 ], [ %.010151870, %564 ], [ %.010151870, %567 ], [ %.010151870, %565 ], [ %.010151870, %632 ], [ %.010151870, %647 ], [ %.010151870, %657 ], [ %.010151870, %658 ], [ 0, %659 ], [ %681, %680 ], [ %685, %687 ], [ %685, %684 ], [ %685, %691 ], [ %694, %696 ], [ %694, %693 ], [ %694, %700 ], [ %703, %705 ], [ %703, %702 ], [ %703, %709 ], [ %712, %714 ], [ %712, %711 ], [ %712, %718 ], [ %721, %723 ], [ %721, %720 ], [ %721, %727 ], [ %.010151870, %729 ], [ %.010151870, %731 ], [ %.010151870, %734 ], [ %.010151870, %732 ], [ %.010151870, %742 ], [ %.010151870, %745 ], [ %.010151870, %743 ], [ %.010151870, %753 ], [ %.010151870, %756 ], [ %.010151870, %754 ], [ 0, %770 ], [ 0, %768 ], [ 0, %778 ], [ 0, %776 ], [ 0, %788 ], [ 0, %794 ], [ 0, %784 ], [ %.010151870, %799 ], [ %.010151870, %802 ], [ %.010151870, %800 ], [ %832, %834 ], [ %832, %831 ], [ %832, %838 ], [ %841, %843 ], [ %841, %840 ], [ %841, %847 ], [ %850, %852 ], [ %850, %849 ], [ %850, %856 ], [ %.010151870, %858 ], [ %.010151870, %919 ], [ %.010151870, %937 ], [ %.010151870, %php_http_should_keep_alive.exit ], [ %.010151870, %1004 ], [ %.010151870, %1011 ], [ %.010151870, %1011 ], [ %.010151870, %1017 ], [ %.010151870, %1019 ], [ %.010151870, %.fold.split1323 ], [ %.010151870, %946 ], [ 1, %171 ] + %.21014 = phi i32 [ %.11013, %1040 ], [ %.11013, %1036 ], [ %.11013, %1022 ], [ %.11013, %1012 ], [ %.11013, %1002 ], [ %.11013, %994 ], [ %.11013, %983 ], [ %.11013, %969 ], [ %.11013, %961 ], [ %.11013, %883 ], [ 0, %914 ], [ 0, %932 ], [ 0, %958 ], [ %.11013, %860 ], [ %.11013, %867 ], [ %.11013, %864 ], [ %.11013, %861 ], [ %.11013, %859 ], [ %.11013, %822 ], [ %.11013, %826 ], [ %.11013, %821 ], [ %.11013, %821 ], [ %.11013, %821 ], [ %.11013, %764 ], [ %.11013, %795 ], [ %.11013, %796 ], [ %.11013, %792 ], [ %.11013, %785 ], [ %.11013, %671 ], [ %.11013, %683 ], [ %.11013, %682 ], [ %.11013, %676 ], [ %.11013, %672 ], [ %.11013, %666 ], [ %.11013, %665 ], [ %.11013, %664 ], [ %.11013, %663 ], [ %.11013, %648 ], [ %.11013, %651 ], [ %.11013, %644 ], [ %.11013, %636 ], [ %.11013, %629 ], [ %.11013, %626 ], [ %.11013, %625 ], [ %.11013, %624 ], [ %.11013, %623 ], [ %.11013, %621 ], [ %.11013, %622 ], [ %.11013, %548 ], [ %.11013, %552 ], [ %.11013, %552 ], [ %.11013, %620 ], [ %.11013, %597 ], [ %.11013, %511 ], [ %.11013, %547 ], [ %.11013, %546 ], [ %.11013, %534 ], [ %.11013, %423 ], [ %.11013, %495 ], [ %.11013, %472 ], [ %.11013, %427 ], [ %.11013, %422 ], [ %.11013, %421 ], [ %.11013, %409 ], [ %.11013, %386 ], [ %.11013, %287 ], [ %.11013, %359 ], [ %.11013, %336 ], [ %.11013, %273 ], [ %.11013, %253 ], [ %.11013, %256 ], [ %.11013, %261 ], [ %.11013, %252 ], [ %.11013, %251 ], [ %.11013, %244 ], [ %.11013, %248 ], [ %.11013, %240 ], [ %.11013, %238 ], [ %.11013, %158 ], [ %.11013, %157 ], [ %.11013, %156 ], [ %.11013, %147 ], [ %.11013, %146 ], [ %.11013, %148 ], [ %.11013, %138 ], [ %.11013, %140 ], [ %.11013, %130 ], [ %.11013, %123 ], [ %.11013, %115 ], [ %.11013, %108 ], [ %.11013, %105 ], [ %.11013, %104 ], [ %.11013, %103 ], [ %.11013, %101 ], [ %.11013, %101 ], [ %.11013, %102 ], [ %.11013, %84 ], [ %.11013, %88 ], [ %.11013, %67 ], [ %.11013, %1041 ], [ %.11013, %67 ], [ %.11013, %78 ], [ %.11013, %66 ], [ %.11013, %111 ], [ %.11013, %126 ], [ %.11013, %145 ], [ %.11013, %155 ], [ %.11013, %.fold.split ], [ %.11013, %158 ], [ %.11013, %184 ], [ %.11013, %183 ], [ %.11013, %182 ], [ %.11013, %181 ], [ %.11013, %180 ], [ %.11013, %179 ], [ %.11013, %178 ], [ %.11013, %177 ], [ %.11013, %176 ], [ %.11013, %175 ], [ %.11013, %174 ], [ %.11013, %173 ], [ %.11013, %172 ], [ %.11013, %241 ], [ %.11013, %247 ], [ %.11013, %249 ], [ %.11013, %260 ], [ %.11013, %262 ], [ %.11013, %265 ], [ %.11013, %263 ], [ %.11013, %275 ], [ %.11013, %276 ], [ %.11013, %279 ], [ %.11013, %277 ], [ %.11013, %303 ], [ %.11013, %306 ], [ %.11013, %304 ], [ %.11013, %360 ], [ %.11013, %363 ], [ %.11013, %361 ], [ %.11013, %371 ], [ %.11013, %374 ], [ %.11013, %372 ], [ %.11013, %382 ], [ %.11013, %387 ], [ %.11013, %390 ], [ %.11013, %388 ], [ %.11013, %439 ], [ %.11013, %442 ], [ %.11013, %440 ], [ %.11013, %496 ], [ %.11013, %499 ], [ %.11013, %497 ], [ %.11013, %507 ], [ %.11013, %512 ], [ %.11013, %515 ], [ %.11013, %513 ], [ %.11013, %564 ], [ %.11013, %567 ], [ %.11013, %565 ], [ %.11013, %632 ], [ %.11013, %647 ], [ %.11013, %657 ], [ %.11013, %658 ], [ %.11013, %659 ], [ %.11013, %680 ], [ %.11013, %687 ], [ %.11013, %684 ], [ %.11013, %691 ], [ %.11013, %696 ], [ %.11013, %693 ], [ %.11013, %700 ], [ %.11013, %705 ], [ %.11013, %702 ], [ %.11013, %709 ], [ %.11013, %714 ], [ %.11013, %711 ], [ %.11013, %718 ], [ %.11013, %723 ], [ %.11013, %720 ], [ %.11013, %727 ], [ %.11013, %729 ], [ %.11013, %731 ], [ %.11013, %734 ], [ %.11013, %732 ], [ %.11013, %742 ], [ %.11013, %745 ], [ %.11013, %743 ], [ %.11013, %753 ], [ %.11013, %756 ], [ %.11013, %754 ], [ %.11013, %770 ], [ %.11013, %768 ], [ %.11013, %778 ], [ %.11013, %776 ], [ %.11013, %788 ], [ %.11013, %794 ], [ %.11013, %784 ], [ %.11013, %799 ], [ %.11013, %802 ], [ %.11013, %800 ], [ %.11013, %834 ], [ %.11013, %831 ], [ %.11013, %838 ], [ %.11013, %843 ], [ %.11013, %840 ], [ %.11013, %847 ], [ %.11013, %852 ], [ %.11013, %849 ], [ %.11013, %856 ], [ %.11013, %858 ], [ 0, %919 ], [ 0, %937 ], [ 0, %php_http_should_keep_alive.exit ], [ %.11013, %1004 ], [ %.11013, %1011 ], [ %.11013, %1011 ], [ %.11013, %1017 ], [ %.11013, %1019 ], [ %.11013, %.fold.split1323 ], [ 0, %946 ], [ %.11013, %171 ] + %.21011 = phi ptr [ %.110101872, %1040 ], [ %.110101872, %1036 ], [ %.110101872, %1022 ], [ %.110101872, %1012 ], [ %.110101872, %1002 ], [ %.110101872, %994 ], [ %.110101872, %983 ], [ %.110101872, %969 ], [ %.110101872, %961 ], [ %.110101872, %883 ], [ %.110101872, %914 ], [ %.110101872, %932 ], [ %.110101872, %958 ], [ %.110101872, %860 ], [ %.110101872, %867 ], [ %.110101872, %864 ], [ %.110101872, %861 ], [ %.110101872, %859 ], [ %.110101872, %822 ], [ %.110101872, %826 ], [ %.110101872, %821 ], [ %.110101872, %821 ], [ %.110101872, %821 ], [ %.110101872, %764 ], [ %.110101872, %795 ], [ %.110101872, %796 ], [ %.110101872, %792 ], [ %.110101872, %785 ], [ %.110101872, %671 ], [ %.110101872, %683 ], [ %.110101872, %682 ], [ %.110101872, %676 ], [ %.110101872, %672 ], [ %.010231866, %666 ], [ %.010231866, %665 ], [ %.010231866, %664 ], [ %.010231866, %663 ], [ %.110101872, %648 ], [ %.110101872, %651 ], [ %.110101872, %644 ], [ %.110101872, %636 ], [ %.110101872, %629 ], [ %.110101872, %626 ], [ %.110101872, %625 ], [ %.110101872, %624 ], [ %.110101872, %623 ], [ %.110101872, %621 ], [ %.110101872, %622 ], [ %.110101872, %548 ], [ %.110101872, %552 ], [ %.110101872, %552 ], [ %.110101872, %620 ], [ %.110101872, %597 ], [ %.110101872, %511 ], [ %.110101872, %547 ], [ %.110101872, %546 ], [ %.110101872, %534 ], [ %.110101872, %423 ], [ %.110101872, %495 ], [ %.110101872, %472 ], [ %.110101872, %427 ], [ %.110101872, %422 ], [ %.110101872, %421 ], [ %.110101872, %409 ], [ %.110101872, %386 ], [ %.110101872, %287 ], [ %.110101872, %359 ], [ %.110101872, %336 ], [ %.110101872, %273 ], [ %.110101872, %253 ], [ %.110101872, %256 ], [ %.110101872, %261 ], [ %.110101872, %252 ], [ %.110101872, %251 ], [ %.110101872, %244 ], [ %.110101872, %248 ], [ %.110101872, %240 ], [ %.110101872, %238 ], [ %.110101872, %158 ], [ %.110101872, %157 ], [ %.110101872, %156 ], [ %.110101872, %147 ], [ %.110101872, %146 ], [ %.110101872, %148 ], [ %.110101872, %138 ], [ %.110101872, %140 ], [ %.110101872, %130 ], [ %.110101872, %123 ], [ %.110101872, %115 ], [ %.110101872, %108 ], [ %.110101872, %105 ], [ %.110101872, %104 ], [ %.110101872, %103 ], [ %.110101872, %101 ], [ %.110101872, %101 ], [ %.110101872, %102 ], [ %.110101872, %84 ], [ %.110101872, %88 ], [ %.110101872, %67 ], [ %.110101872, %1041 ], [ %.110101872, %67 ], [ %.110101872, %78 ], [ %.110101872, %66 ], [ %.110101872, %111 ], [ %.110101872, %126 ], [ %.110101872, %145 ], [ %.110101872, %155 ], [ %.110101872, %.fold.split ], [ %.110101872, %158 ], [ %.110101872, %184 ], [ %.110101872, %183 ], [ %.110101872, %182 ], [ %.110101872, %181 ], [ %.110101872, %180 ], [ %.110101872, %179 ], [ %.110101872, %178 ], [ %.110101872, %177 ], [ %.110101872, %176 ], [ %.110101872, %175 ], [ %.110101872, %174 ], [ %.110101872, %173 ], [ %.110101872, %172 ], [ %.110101872, %241 ], [ %.110101872, %247 ], [ %.110101872, %249 ], [ %.110101872, %260 ], [ %.110101872, %262 ], [ %.110101872, %265 ], [ %.110101872, %263 ], [ %.110101872, %275 ], [ %.110101872, %276 ], [ %.110101872, %279 ], [ %.110101872, %277 ], [ %.110101872, %303 ], [ %.110101872, %306 ], [ %.110101872, %304 ], [ %.110101872, %360 ], [ %.110101872, %363 ], [ %.110101872, %361 ], [ %.110101872, %371 ], [ %.110101872, %374 ], [ %.110101872, %372 ], [ %.110101872, %382 ], [ %.110101872, %387 ], [ %.110101872, %390 ], [ %.110101872, %388 ], [ %.110101872, %439 ], [ %.110101872, %442 ], [ %.110101872, %440 ], [ %.110101872, %496 ], [ %.110101872, %499 ], [ %.110101872, %497 ], [ %.110101872, %507 ], [ %.110101872, %512 ], [ %.110101872, %515 ], [ %.110101872, %513 ], [ %.110101872, %564 ], [ %.110101872, %567 ], [ %.110101872, %565 ], [ %.110101872, %632 ], [ %.110101872, %647 ], [ %.110101872, %657 ], [ %.110101872, %658 ], [ %.010231866, %659 ], [ %.110101872, %680 ], [ %.110101872, %687 ], [ %.110101872, %684 ], [ %.110101872, %691 ], [ %.110101872, %696 ], [ %.110101872, %693 ], [ %.110101872, %700 ], [ %.110101872, %705 ], [ %.110101872, %702 ], [ %.110101872, %709 ], [ %.110101872, %714 ], [ %.110101872, %711 ], [ %.110101872, %718 ], [ %.110101872, %723 ], [ %.110101872, %720 ], [ %.110101872, %727 ], [ %.110101872, %729 ], [ null, %731 ], [ null, %734 ], [ null, %732 ], [ null, %742 ], [ null, %745 ], [ null, %743 ], [ null, %753 ], [ null, %756 ], [ null, %754 ], [ %.110101872, %770 ], [ %.110101872, %768 ], [ %.110101872, %778 ], [ %.110101872, %776 ], [ %.110101872, %788 ], [ %.110101872, %794 ], [ %.110101872, %784 ], [ %.110101872, %799 ], [ %.110101872, %802 ], [ %.110101872, %800 ], [ %.110101872, %834 ], [ %.110101872, %831 ], [ %.110101872, %838 ], [ %.110101872, %843 ], [ %.110101872, %840 ], [ %.110101872, %847 ], [ %.110101872, %852 ], [ %.110101872, %849 ], [ %.110101872, %856 ], [ %.110101872, %858 ], [ %.110101872, %919 ], [ %.110101872, %937 ], [ %.110101872, %php_http_should_keep_alive.exit ], [ %.110101872, %1004 ], [ %.110101872, %1011 ], [ %.110101872, %1011 ], [ %.110101872, %1017 ], [ %.110101872, %1019 ], [ %.110101872, %.fold.split1323 ], [ %.110101872, %946 ], [ %.110101872, %171 ] + %.3 = phi ptr [ %.110071873, %1040 ], [ %.110071873, %1036 ], [ %.110071873, %1022 ], [ %.110071873, %1012 ], [ %.110071873, %1002 ], [ %.110071873, %994 ], [ %.110071873, %983 ], [ %.110071873, %969 ], [ %.110071873, %961 ], [ %.110071873, %883 ], [ %.110071873, %914 ], [ %.110071873, %932 ], [ %.110071873, %958 ], [ %.21008, %860 ], [ %.21008, %867 ], [ %.21008, %864 ], [ %.21008, %861 ], [ %.110071873, %859 ], [ %.110071873, %822 ], [ %.110071873, %826 ], [ %.110071873, %821 ], [ %.110071873, %821 ], [ %.110071873, %821 ], [ %.110071873, %764 ], [ %.010231866, %795 ], [ %.010231866, %796 ], [ %.010231866, %792 ], [ %.010231866, %785 ], [ %.110071873, %671 ], [ %.110071873, %683 ], [ %.110071873, %682 ], [ %.110071873, %676 ], [ %.110071873, %672 ], [ %.110071873, %666 ], [ %.110071873, %665 ], [ %.110071873, %664 ], [ %.110071873, %663 ], [ %.110071873, %648 ], [ %.110071873, %651 ], [ %.110071873, %644 ], [ %.110071873, %636 ], [ %.110071873, %629 ], [ %.110071873, %626 ], [ %.110071873, %625 ], [ %.110071873, %624 ], [ %.110071873, %623 ], [ %.110071873, %621 ], [ %.110071873, %622 ], [ %.110071873, %548 ], [ %.110071873, %552 ], [ %.110071873, %552 ], [ %.110071873, %620 ], [ %.110071873, %597 ], [ %.110071873, %511 ], [ %.110071873, %547 ], [ %.110071873, %546 ], [ %.110071873, %534 ], [ %.110071873, %423 ], [ %.110071873, %495 ], [ %.110071873, %472 ], [ %.110071873, %427 ], [ %.110071873, %422 ], [ %.110071873, %421 ], [ %.110071873, %409 ], [ %.110071873, %386 ], [ %.110071873, %287 ], [ %.110071873, %359 ], [ %.110071873, %336 ], [ %.110071873, %273 ], [ %.110071873, %253 ], [ %.110071873, %256 ], [ %.110071873, %261 ], [ %.110071873, %252 ], [ %.110071873, %251 ], [ %.110071873, %244 ], [ %.110071873, %248 ], [ %.110071873, %240 ], [ %.110071873, %238 ], [ %.110071873, %158 ], [ %.110071873, %157 ], [ %.110071873, %156 ], [ %.110071873, %147 ], [ %.110071873, %146 ], [ %.110071873, %148 ], [ %.110071873, %138 ], [ %.110071873, %140 ], [ %.110071873, %130 ], [ %.110071873, %123 ], [ %.110071873, %115 ], [ %.110071873, %108 ], [ %.110071873, %105 ], [ %.110071873, %104 ], [ %.110071873, %103 ], [ %.110071873, %101 ], [ %.110071873, %101 ], [ %.110071873, %102 ], [ %.110071873, %84 ], [ %.110071873, %88 ], [ %.110071873, %67 ], [ %.110071873, %1041 ], [ %.110071873, %67 ], [ %.110071873, %78 ], [ %.110071873, %66 ], [ %.110071873, %111 ], [ %.110071873, %126 ], [ %.110071873, %145 ], [ %.110071873, %155 ], [ %.110071873, %.fold.split ], [ %.110071873, %158 ], [ %.110071873, %184 ], [ %.110071873, %183 ], [ %.110071873, %182 ], [ %.110071873, %181 ], [ %.110071873, %180 ], [ %.110071873, %179 ], [ %.110071873, %178 ], [ %.110071873, %177 ], [ %.110071873, %176 ], [ %.110071873, %175 ], [ %.110071873, %174 ], [ %.110071873, %173 ], [ %.110071873, %172 ], [ %.110071873, %241 ], [ %.110071873, %247 ], [ %.110071873, %249 ], [ %.110071873, %260 ], [ %.110071873, %262 ], [ %.110071873, %265 ], [ %.110071873, %263 ], [ %.110071873, %275 ], [ %.110071873, %276 ], [ %.110071873, %279 ], [ %.110071873, %277 ], [ %.110071873, %303 ], [ %.110071873, %306 ], [ %.110071873, %304 ], [ %.110071873, %360 ], [ %.110071873, %363 ], [ %.110071873, %361 ], [ %.110071873, %371 ], [ %.110071873, %374 ], [ %.110071873, %372 ], [ %.110071873, %382 ], [ %.110071873, %387 ], [ %.110071873, %390 ], [ %.110071873, %388 ], [ %.110071873, %439 ], [ %.110071873, %442 ], [ %.110071873, %440 ], [ %.110071873, %496 ], [ %.110071873, %499 ], [ %.110071873, %497 ], [ %.110071873, %507 ], [ %.110071873, %512 ], [ %.110071873, %515 ], [ %.110071873, %513 ], [ %.110071873, %564 ], [ %.110071873, %567 ], [ %.110071873, %565 ], [ %.110071873, %632 ], [ %.110071873, %647 ], [ %.110071873, %657 ], [ %.110071873, %658 ], [ %.110071873, %659 ], [ %.110071873, %680 ], [ %.110071873, %687 ], [ %.110071873, %684 ], [ %.110071873, %691 ], [ %.110071873, %696 ], [ %.110071873, %693 ], [ %.110071873, %700 ], [ %.110071873, %705 ], [ %.110071873, %702 ], [ %.110071873, %709 ], [ %.110071873, %714 ], [ %.110071873, %711 ], [ %.110071873, %718 ], [ %.110071873, %723 ], [ %.110071873, %720 ], [ %.110071873, %727 ], [ %.110071873, %729 ], [ %.110071873, %731 ], [ %.110071873, %734 ], [ %.110071873, %732 ], [ %.110071873, %742 ], [ %.110071873, %745 ], [ %.110071873, %743 ], [ %.110071873, %753 ], [ %.110071873, %756 ], [ %.110071873, %754 ], [ null, %770 ], [ null, %768 ], [ null, %778 ], [ null, %776 ], [ %.010231866, %788 ], [ %.010231866, %794 ], [ %.010231866, %784 ], [ null, %799 ], [ null, %802 ], [ null, %800 ], [ %.110071873, %834 ], [ %.110071873, %831 ], [ %.110071873, %838 ], [ %.110071873, %843 ], [ %.110071873, %840 ], [ %.110071873, %847 ], [ %.110071873, %852 ], [ %.110071873, %849 ], [ %.110071873, %856 ], [ %.110071873, %858 ], [ %.110071873, %919 ], [ %.110071873, %937 ], [ %.110071873, %php_http_should_keep_alive.exit ], [ %.110071873, %1004 ], [ %.110071873, %1011 ], [ %.110071873, %1011 ], [ %.110071873, %1017 ], [ %.110071873, %1019 ], [ %.110071873, %.fold.split1323 ], [ %.110071873, %946 ], [ %.110071873, %171 ] + %.21005 = phi ptr [ %.110041874, %1040 ], [ %.110041874, %1036 ], [ %.110041874, %1022 ], [ %.110041874, %1012 ], [ %.110041874, %1002 ], [ %.110041874, %994 ], [ %.110041874, %983 ], [ %.110041874, %969 ], [ %.110041874, %961 ], [ %.110041874, %883 ], [ %.110041874, %914 ], [ %.110041874, %932 ], [ %.110041874, %958 ], [ %.110041874, %860 ], [ %.110041874, %867 ], [ %.110041874, %864 ], [ %.110041874, %861 ], [ %.110041874, %859 ], [ %.110041874, %822 ], [ %.110041874, %826 ], [ %.110041874, %821 ], [ %.110041874, %821 ], [ %.110041874, %821 ], [ %.110041874, %764 ], [ %.110041874, %795 ], [ %.110041874, %796 ], [ %.110041874, %792 ], [ %.110041874, %785 ], [ %.110041874, %671 ], [ %.110041874, %683 ], [ %.110041874, %682 ], [ %.110041874, %676 ], [ %.110041874, %672 ], [ %.110041874, %666 ], [ %.110041874, %665 ], [ %.110041874, %664 ], [ %.110041874, %663 ], [ %.110041874, %648 ], [ %.110041874, %651 ], [ %.110041874, %644 ], [ %.110041874, %636 ], [ %.110041874, %629 ], [ %.110041874, %626 ], [ %.110041874, %625 ], [ %.110041874, %624 ], [ %.110041874, %623 ], [ %.110041874, %621 ], [ %.110041874, %622 ], [ %.110041874, %548 ], [ %.110041874, %552 ], [ %.110041874, %552 ], [ null, %620 ], [ null, %597 ], [ %.110041874, %511 ], [ %.010231866, %547 ], [ %.110041874, %546 ], [ %.110041874, %534 ], [ %.110041874, %423 ], [ %.110041874, %495 ], [ %.110041874, %472 ], [ %.110041874, %427 ], [ %.110041874, %422 ], [ %.110041874, %421 ], [ %.110041874, %409 ], [ %.110041874, %386 ], [ %.110041874, %287 ], [ %.110041874, %359 ], [ %.110041874, %336 ], [ %.110041874, %273 ], [ %.110041874, %253 ], [ %.110041874, %256 ], [ %.110041874, %261 ], [ %.110041874, %252 ], [ %.110041874, %251 ], [ %.110041874, %244 ], [ %.110041874, %248 ], [ %.110041874, %240 ], [ %.110041874, %238 ], [ %.110041874, %158 ], [ %.110041874, %157 ], [ %.110041874, %156 ], [ %.110041874, %147 ], [ %.110041874, %146 ], [ %.110041874, %148 ], [ %.110041874, %138 ], [ %.110041874, %140 ], [ %.110041874, %130 ], [ %.110041874, %123 ], [ %.110041874, %115 ], [ %.110041874, %108 ], [ %.110041874, %105 ], [ %.110041874, %104 ], [ %.110041874, %103 ], [ %.110041874, %101 ], [ %.110041874, %101 ], [ %.110041874, %102 ], [ %.110041874, %84 ], [ %.110041874, %88 ], [ %.110041874, %67 ], [ %.110041874, %1041 ], [ %.110041874, %67 ], [ %.110041874, %78 ], [ %.110041874, %66 ], [ %.110041874, %111 ], [ %.110041874, %126 ], [ %.110041874, %145 ], [ %.110041874, %155 ], [ %.110041874, %.fold.split ], [ %.110041874, %158 ], [ %.110041874, %184 ], [ %.110041874, %183 ], [ %.110041874, %182 ], [ %.110041874, %181 ], [ %.110041874, %180 ], [ %.110041874, %179 ], [ %.110041874, %178 ], [ %.110041874, %177 ], [ %.110041874, %176 ], [ %.110041874, %175 ], [ %.110041874, %174 ], [ %.110041874, %173 ], [ %.110041874, %172 ], [ %.110041874, %241 ], [ %.110041874, %247 ], [ %.110041874, %249 ], [ %.110041874, %260 ], [ %.110041874, %262 ], [ %.110041874, %265 ], [ %.110041874, %263 ], [ %.110041874, %275 ], [ %.110041874, %276 ], [ %.110041874, %279 ], [ %.110041874, %277 ], [ %.110041874, %303 ], [ %.110041874, %306 ], [ %.110041874, %304 ], [ %.110041874, %360 ], [ %.110041874, %363 ], [ %.110041874, %361 ], [ %.110041874, %371 ], [ %.110041874, %374 ], [ %.110041874, %372 ], [ %.110041874, %382 ], [ %.110041874, %387 ], [ %.110041874, %390 ], [ %.110041874, %388 ], [ %.110041874, %439 ], [ %.110041874, %442 ], [ %.110041874, %440 ], [ %.110041874, %496 ], [ %.110041874, %499 ], [ %.110041874, %497 ], [ %.010231866, %507 ], [ %.110041874, %512 ], [ %.110041874, %515 ], [ %.110041874, %513 ], [ null, %564 ], [ null, %567 ], [ null, %565 ], [ %.110041874, %632 ], [ %.110041874, %647 ], [ %.110041874, %657 ], [ %.110041874, %658 ], [ %.110041874, %659 ], [ %.110041874, %680 ], [ %.110041874, %687 ], [ %.110041874, %684 ], [ %.110041874, %691 ], [ %.110041874, %696 ], [ %.110041874, %693 ], [ %.110041874, %700 ], [ %.110041874, %705 ], [ %.110041874, %702 ], [ %.110041874, %709 ], [ %.110041874, %714 ], [ %.110041874, %711 ], [ %.110041874, %718 ], [ %.110041874, %723 ], [ %.110041874, %720 ], [ %.110041874, %727 ], [ %.110041874, %729 ], [ %.110041874, %731 ], [ %.110041874, %734 ], [ %.110041874, %732 ], [ %.110041874, %742 ], [ %.110041874, %745 ], [ %.110041874, %743 ], [ %.110041874, %753 ], [ %.110041874, %756 ], [ %.110041874, %754 ], [ %.110041874, %770 ], [ %.110041874, %768 ], [ %.110041874, %778 ], [ %.110041874, %776 ], [ %.110041874, %788 ], [ %.110041874, %794 ], [ %.110041874, %784 ], [ %.110041874, %799 ], [ %.110041874, %802 ], [ %.110041874, %800 ], [ %.110041874, %834 ], [ %.110041874, %831 ], [ %.110041874, %838 ], [ %.110041874, %843 ], [ %.110041874, %840 ], [ %.110041874, %847 ], [ %.110041874, %852 ], [ %.110041874, %849 ], [ %.110041874, %856 ], [ %.110041874, %858 ], [ %.110041874, %919 ], [ %.110041874, %937 ], [ %.110041874, %php_http_should_keep_alive.exit ], [ %.110041874, %1004 ], [ %.110041874, %1011 ], [ %.110041874, %1011 ], [ %.110041874, %1017 ], [ %.110041874, %1019 ], [ %.110041874, %.fold.split1323 ], [ %.110041874, %946 ], [ %.110041874, %171 ] + %.21002 = phi ptr [ %.110011875, %1040 ], [ %.110011875, %1036 ], [ %.110011875, %1022 ], [ %.110011875, %1012 ], [ %.110011875, %1002 ], [ %.110011875, %994 ], [ %.110011875, %983 ], [ %.110011875, %969 ], [ %.110011875, %961 ], [ %.110011875, %883 ], [ %.110011875, %914 ], [ %.110011875, %932 ], [ %.110011875, %958 ], [ %.110011875, %860 ], [ %.110011875, %867 ], [ %.110011875, %864 ], [ %.110011875, %861 ], [ %.110011875, %859 ], [ %.110011875, %822 ], [ %.110011875, %826 ], [ %.110011875, %821 ], [ %.110011875, %821 ], [ %.110011875, %821 ], [ %.110011875, %764 ], [ %.110011875, %795 ], [ %.110011875, %796 ], [ %.110011875, %792 ], [ %.110011875, %785 ], [ %.110011875, %671 ], [ %.110011875, %683 ], [ %.110011875, %682 ], [ %.110011875, %676 ], [ %.110011875, %672 ], [ %.110011875, %666 ], [ %.110011875, %665 ], [ %.110011875, %664 ], [ %.110011875, %663 ], [ %.110011875, %648 ], [ %.110011875, %651 ], [ %.110011875, %644 ], [ %.110011875, %636 ], [ %.110011875, %629 ], [ %.110011875, %626 ], [ %.110011875, %625 ], [ %.110011875, %624 ], [ %.110011875, %623 ], [ %.110011875, %621 ], [ %.110011875, %622 ], [ %.110011875, %548 ], [ %.110011875, %552 ], [ %.110011875, %552 ], [ %.110011875, %620 ], [ %.110011875, %597 ], [ %.110011875, %511 ], [ %.110011875, %547 ], [ %.110011875, %546 ], [ %.110011875, %534 ], [ %.110011875, %423 ], [ null, %495 ], [ null, %472 ], [ %.110011875, %427 ], [ %.110011875, %422 ], [ %.110011875, %421 ], [ %.110011875, %409 ], [ %.110011875, %386 ], [ %.110011875, %287 ], [ %.110011875, %359 ], [ %.110011875, %336 ], [ %.110011875, %273 ], [ %.110011875, %253 ], [ %.110011875, %256 ], [ %.110011875, %261 ], [ %.110011875, %252 ], [ %.110011875, %251 ], [ %.110011875, %244 ], [ %.110011875, %248 ], [ %.110011875, %240 ], [ %.110011875, %238 ], [ %.110011875, %158 ], [ %.110011875, %157 ], [ %.110011875, %156 ], [ %.110011875, %147 ], [ %.110011875, %146 ], [ %.110011875, %148 ], [ %.110011875, %138 ], [ %.110011875, %140 ], [ %.110011875, %130 ], [ %.110011875, %123 ], [ %.110011875, %115 ], [ %.110011875, %108 ], [ %.110011875, %105 ], [ %.110011875, %104 ], [ %.110011875, %103 ], [ %.110011875, %101 ], [ %.110011875, %101 ], [ %.110011875, %102 ], [ %.110011875, %84 ], [ %.110011875, %88 ], [ %.110011875, %67 ], [ %.110011875, %1041 ], [ %.110011875, %67 ], [ %.110011875, %78 ], [ %.110011875, %66 ], [ %.110011875, %111 ], [ %.110011875, %126 ], [ %.110011875, %145 ], [ %.110011875, %155 ], [ %.110011875, %.fold.split ], [ %.110011875, %158 ], [ %.110011875, %184 ], [ %.110011875, %183 ], [ %.110011875, %182 ], [ %.110011875, %181 ], [ %.110011875, %180 ], [ %.110011875, %179 ], [ %.110011875, %178 ], [ %.110011875, %177 ], [ %.110011875, %176 ], [ %.110011875, %175 ], [ %.110011875, %174 ], [ %.110011875, %173 ], [ %.110011875, %172 ], [ %.110011875, %241 ], [ %.110011875, %247 ], [ %.110011875, %249 ], [ %.110011875, %260 ], [ %.110011875, %262 ], [ %.110011875, %265 ], [ %.110011875, %263 ], [ %.110011875, %275 ], [ %.110011875, %276 ], [ %.110011875, %279 ], [ %.110011875, %277 ], [ %.110011875, %303 ], [ %.110011875, %306 ], [ %.110011875, %304 ], [ %.110011875, %360 ], [ %.110011875, %363 ], [ %.110011875, %361 ], [ %.110011875, %371 ], [ %.110011875, %374 ], [ %.110011875, %372 ], [ %.010231866, %382 ], [ %.110011875, %387 ], [ %.110011875, %390 ], [ %.110011875, %388 ], [ null, %439 ], [ null, %442 ], [ null, %440 ], [ null, %496 ], [ null, %499 ], [ null, %497 ], [ %.110011875, %507 ], [ %.110011875, %512 ], [ %.110011875, %515 ], [ %.110011875, %513 ], [ %.110011875, %564 ], [ %.110011875, %567 ], [ %.110011875, %565 ], [ %.110011875, %632 ], [ %.110011875, %647 ], [ %.110011875, %657 ], [ %.110011875, %658 ], [ %.110011875, %659 ], [ %.110011875, %680 ], [ %.110011875, %687 ], [ %.110011875, %684 ], [ %.110011875, %691 ], [ %.110011875, %696 ], [ %.110011875, %693 ], [ %.110011875, %700 ], [ %.110011875, %705 ], [ %.110011875, %702 ], [ %.110011875, %709 ], [ %.110011875, %714 ], [ %.110011875, %711 ], [ %.110011875, %718 ], [ %.110011875, %723 ], [ %.110011875, %720 ], [ %.110011875, %727 ], [ %.110011875, %729 ], [ %.110011875, %731 ], [ %.110011875, %734 ], [ %.110011875, %732 ], [ %.110011875, %742 ], [ %.110011875, %745 ], [ %.110011875, %743 ], [ %.110011875, %753 ], [ %.110011875, %756 ], [ %.110011875, %754 ], [ %.110011875, %770 ], [ %.110011875, %768 ], [ %.110011875, %778 ], [ %.110011875, %776 ], [ %.110011875, %788 ], [ %.110011875, %794 ], [ %.110011875, %784 ], [ %.110011875, %799 ], [ %.110011875, %802 ], [ %.110011875, %800 ], [ %.110011875, %834 ], [ %.110011875, %831 ], [ %.110011875, %838 ], [ %.110011875, %843 ], [ %.110011875, %840 ], [ %.110011875, %847 ], [ %.110011875, %852 ], [ %.110011875, %849 ], [ %.110011875, %856 ], [ %.110011875, %858 ], [ %.110011875, %919 ], [ %.110011875, %937 ], [ %.110011875, %php_http_should_keep_alive.exit ], [ %.110011875, %1004 ], [ %.110011875, %1011 ], [ %.110011875, %1011 ], [ %.110011875, %1017 ], [ %.110011875, %1019 ], [ %.110011875, %.fold.split1323 ], [ %.110011875, %946 ], [ %.110011875, %171 ] + %.2999 = phi ptr [ %.19981876, %1040 ], [ %.19981876, %1036 ], [ %.19981876, %1022 ], [ %.19981876, %1012 ], [ %.19981876, %1002 ], [ %.19981876, %994 ], [ %.19981876, %983 ], [ %.19981876, %969 ], [ %.19981876, %961 ], [ %.19981876, %883 ], [ %.19981876, %914 ], [ %.19981876, %932 ], [ %.19981876, %958 ], [ %.19981876, %860 ], [ %.19981876, %867 ], [ %.19981876, %864 ], [ %.19981876, %861 ], [ %.19981876, %859 ], [ %.19981876, %822 ], [ %.19981876, %826 ], [ %.19981876, %821 ], [ %.19981876, %821 ], [ %.19981876, %821 ], [ %.19981876, %764 ], [ %.19981876, %795 ], [ %.19981876, %796 ], [ %.19981876, %792 ], [ %.19981876, %785 ], [ %.19981876, %671 ], [ %.19981876, %683 ], [ %.19981876, %682 ], [ %.19981876, %676 ], [ %.19981876, %672 ], [ %.19981876, %666 ], [ %.19981876, %665 ], [ %.19981876, %664 ], [ %.19981876, %663 ], [ %.19981876, %648 ], [ %.19981876, %651 ], [ %.19981876, %644 ], [ %.19981876, %636 ], [ %.19981876, %629 ], [ %.19981876, %626 ], [ %.19981876, %625 ], [ %.19981876, %624 ], [ %.19981876, %623 ], [ %.19981876, %621 ], [ %.19981876, %622 ], [ %.19981876, %548 ], [ %.19981876, %552 ], [ %.19981876, %552 ], [ %.19981876, %620 ], [ %.19981876, %597 ], [ %.19981876, %511 ], [ %.19981876, %547 ], [ %.19981876, %546 ], [ %.19981876, %534 ], [ %.19981876, %423 ], [ %.19981876, %495 ], [ %.19981876, %472 ], [ %.19981876, %427 ], [ %.19981876, %422 ], [ %.19981876, %421 ], [ %.19981876, %409 ], [ %.19981876, %386 ], [ %.19981876, %287 ], [ null, %359 ], [ null, %336 ], [ %.19981876, %273 ], [ %.19981876, %253 ], [ %.19981876, %256 ], [ %.010231866, %261 ], [ %.19981876, %252 ], [ %.19981876, %251 ], [ %.19981876, %244 ], [ %.19981876, %248 ], [ %.19981876, %240 ], [ %.19981876, %238 ], [ %.19981876, %158 ], [ %.19981876, %157 ], [ %.19981876, %156 ], [ %.19981876, %147 ], [ %.19981876, %146 ], [ %.19981876, %148 ], [ %.19981876, %138 ], [ %.19981876, %140 ], [ %.19981876, %130 ], [ %.19981876, %123 ], [ %.19981876, %115 ], [ %.19981876, %108 ], [ %.19981876, %105 ], [ %.19981876, %104 ], [ %.19981876, %103 ], [ %.19981876, %101 ], [ %.19981876, %101 ], [ %.19981876, %102 ], [ %.19981876, %84 ], [ %.19981876, %88 ], [ %.19981876, %67 ], [ %.19981876, %1041 ], [ %.19981876, %67 ], [ %.19981876, %78 ], [ %.19981876, %66 ], [ %.19981876, %111 ], [ %.19981876, %126 ], [ %.19981876, %145 ], [ %.19981876, %155 ], [ %.19981876, %.fold.split ], [ %.19981876, %158 ], [ %.19981876, %184 ], [ %.19981876, %183 ], [ %.19981876, %182 ], [ %.19981876, %181 ], [ %.19981876, %180 ], [ %.19981876, %179 ], [ %.19981876, %178 ], [ %.19981876, %177 ], [ %.19981876, %176 ], [ %.19981876, %175 ], [ %.19981876, %174 ], [ %.19981876, %173 ], [ %.19981876, %172 ], [ %.19981876, %241 ], [ %.19981876, %247 ], [ %.19981876, %249 ], [ %.19981876, %260 ], [ %.19981876, %262 ], [ %.19981876, %265 ], [ %.19981876, %263 ], [ %.010231866, %275 ], [ %.19981876, %276 ], [ %.19981876, %279 ], [ %.19981876, %277 ], [ null, %303 ], [ null, %306 ], [ null, %304 ], [ null, %360 ], [ null, %363 ], [ null, %361 ], [ null, %371 ], [ null, %374 ], [ null, %372 ], [ %.19981876, %382 ], [ %.19981876, %387 ], [ %.19981876, %390 ], [ %.19981876, %388 ], [ %.19981876, %439 ], [ %.19981876, %442 ], [ %.19981876, %440 ], [ %.19981876, %496 ], [ %.19981876, %499 ], [ %.19981876, %497 ], [ %.19981876, %507 ], [ %.19981876, %512 ], [ %.19981876, %515 ], [ %.19981876, %513 ], [ %.19981876, %564 ], [ %.19981876, %567 ], [ %.19981876, %565 ], [ %.19981876, %632 ], [ %.19981876, %647 ], [ %.19981876, %657 ], [ %.19981876, %658 ], [ %.19981876, %659 ], [ %.19981876, %680 ], [ %.19981876, %687 ], [ %.19981876, %684 ], [ %.19981876, %691 ], [ %.19981876, %696 ], [ %.19981876, %693 ], [ %.19981876, %700 ], [ %.19981876, %705 ], [ %.19981876, %702 ], [ %.19981876, %709 ], [ %.19981876, %714 ], [ %.19981876, %711 ], [ %.19981876, %718 ], [ %.19981876, %723 ], [ %.19981876, %720 ], [ %.19981876, %727 ], [ %.19981876, %729 ], [ %.19981876, %731 ], [ %.19981876, %734 ], [ %.19981876, %732 ], [ %.19981876, %742 ], [ %.19981876, %745 ], [ %.19981876, %743 ], [ %.19981876, %753 ], [ %.19981876, %756 ], [ %.19981876, %754 ], [ %.19981876, %770 ], [ %.19981876, %768 ], [ %.19981876, %778 ], [ %.19981876, %776 ], [ %.19981876, %788 ], [ %.19981876, %794 ], [ %.19981876, %784 ], [ %.19981876, %799 ], [ %.19981876, %802 ], [ %.19981876, %800 ], [ %.19981876, %834 ], [ %.19981876, %831 ], [ %.19981876, %838 ], [ %.19981876, %843 ], [ %.19981876, %840 ], [ %.19981876, %847 ], [ %.19981876, %852 ], [ %.19981876, %849 ], [ %.19981876, %856 ], [ %.19981876, %858 ], [ %.19981876, %919 ], [ %.19981876, %937 ], [ %.19981876, %php_http_should_keep_alive.exit ], [ %.19981876, %1004 ], [ %.19981876, %1011 ], [ %.19981876, %1011 ], [ %.19981876, %1017 ], [ %.19981876, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.19981876, %946 ], [ %.19981876, %171 ] + %.2 = phi ptr [ %.11877, %1040 ], [ %.11877, %1036 ], [ %.11877, %1022 ], [ %.11877, %1012 ], [ %.11877, %1002 ], [ %.11877, %994 ], [ %.11877, %983 ], [ %.11877, %969 ], [ %.11877, %961 ], [ %.11877, %883 ], [ %.11877, %914 ], [ %.11877, %932 ], [ %.11877, %958 ], [ %.11877, %860 ], [ %.11877, %867 ], [ %.11877, %864 ], [ %.11877, %861 ], [ %.11877, %859 ], [ %.11877, %822 ], [ %.11877, %826 ], [ %.11877, %821 ], [ %.11877, %821 ], [ %.11877, %821 ], [ %.11877, %764 ], [ %.11877, %795 ], [ %.11877, %796 ], [ %.11877, %792 ], [ %.11877, %785 ], [ %.11877, %671 ], [ %.11877, %683 ], [ %.11877, %682 ], [ %.11877, %676 ], [ %.11877, %672 ], [ %.11877, %666 ], [ %.11877, %665 ], [ %.11877, %664 ], [ %.11877, %663 ], [ %.11877, %648 ], [ %.11877, %651 ], [ %.11877, %644 ], [ %.11877, %636 ], [ %.11877, %629 ], [ %.11877, %626 ], [ %.11877, %625 ], [ %.11877, %624 ], [ %.11877, %623 ], [ %.11877, %621 ], [ %.11877, %622 ], [ %.11877, %548 ], [ %.11877, %552 ], [ %.11877, %552 ], [ null, %620 ], [ null, %597 ], [ %.11877, %511 ], [ %.11877, %547 ], [ null, %546 ], [ null, %534 ], [ %.11877, %423 ], [ null, %495 ], [ null, %472 ], [ %.11877, %427 ], [ %.11877, %422 ], [ null, %421 ], [ null, %409 ], [ %.11877, %386 ], [ %.11877, %287 ], [ null, %359 ], [ null, %336 ], [ %.11877, %273 ], [ %.11877, %253 ], [ %.11877, %256 ], [ %.11877, %261 ], [ %.11877, %252 ], [ %.11877, %251 ], [ %.11877, %244 ], [ %.11877, %248 ], [ %.11877, %240 ], [ %.11877, %238 ], [ %.11877, %158 ], [ %.11877, %157 ], [ %.11877, %156 ], [ %.11877, %147 ], [ %.11877, %146 ], [ %.11877, %148 ], [ %.11877, %138 ], [ %.11877, %140 ], [ %.11877, %130 ], [ %.11877, %123 ], [ %.11877, %115 ], [ %.11877, %108 ], [ %.11877, %105 ], [ %.11877, %104 ], [ %.11877, %103 ], [ %.11877, %101 ], [ %.11877, %101 ], [ %.11877, %102 ], [ %.11877, %84 ], [ %.11877, %88 ], [ %.11877, %67 ], [ %.11877, %1041 ], [ %.11877, %67 ], [ %.11877, %78 ], [ %.11877, %66 ], [ %.11877, %111 ], [ %.11877, %126 ], [ %.11877, %145 ], [ %.11877, %155 ], [ %.11877, %.fold.split ], [ %.11877, %158 ], [ %.11877, %184 ], [ %.11877, %183 ], [ %.11877, %182 ], [ %.11877, %181 ], [ %.11877, %180 ], [ %.11877, %179 ], [ %.11877, %178 ], [ %.11877, %177 ], [ %.11877, %176 ], [ %.11877, %175 ], [ %.11877, %174 ], [ %.11877, %173 ], [ %.11877, %172 ], [ %.010231866, %241 ], [ %.11877, %247 ], [ %.11877, %249 ], [ %.11877, %260 ], [ null, %262 ], [ null, %265 ], [ null, %263 ], [ %.11877, %275 ], [ null, %276 ], [ null, %279 ], [ null, %277 ], [ null, %303 ], [ null, %306 ], [ null, %304 ], [ %.11877, %360 ], [ %.11877, %363 ], [ %.11877, %361 ], [ %.11877, %371 ], [ %.11877, %374 ], [ %.11877, %372 ], [ %.11877, %382 ], [ null, %387 ], [ null, %390 ], [ null, %388 ], [ null, %439 ], [ null, %442 ], [ null, %440 ], [ %.11877, %496 ], [ %.11877, %499 ], [ %.11877, %497 ], [ %.11877, %507 ], [ null, %512 ], [ null, %515 ], [ null, %513 ], [ null, %564 ], [ null, %567 ], [ null, %565 ], [ %.11877, %632 ], [ %.11877, %647 ], [ %.11877, %657 ], [ %.11877, %658 ], [ %.11877, %659 ], [ %.11877, %680 ], [ %.11877, %687 ], [ %.11877, %684 ], [ %.11877, %691 ], [ %.11877, %696 ], [ %.11877, %693 ], [ %.11877, %700 ], [ %.11877, %705 ], [ %.11877, %702 ], [ %.11877, %709 ], [ %.11877, %714 ], [ %.11877, %711 ], [ %.11877, %718 ], [ %.11877, %723 ], [ %.11877, %720 ], [ %.11877, %727 ], [ %.11877, %729 ], [ %.11877, %731 ], [ %.11877, %734 ], [ %.11877, %732 ], [ %.11877, %742 ], [ %.11877, %745 ], [ %.11877, %743 ], [ %.11877, %753 ], [ %.11877, %756 ], [ %.11877, %754 ], [ %.11877, %770 ], [ %.11877, %768 ], [ %.11877, %778 ], [ %.11877, %776 ], [ %.11877, %788 ], [ %.11877, %794 ], [ %.11877, %784 ], [ %.11877, %799 ], [ %.11877, %802 ], [ %.11877, %800 ], [ %.11877, %834 ], [ %.11877, %831 ], [ %.11877, %838 ], [ %.11877, %843 ], [ %.11877, %840 ], [ %.11877, %847 ], [ %.11877, %852 ], [ %.11877, %849 ], [ %.11877, %856 ], [ %.11877, %858 ], [ %.11877, %919 ], [ %.11877, %937 ], [ %.11877, %php_http_should_keep_alive.exit ], [ %.11877, %1004 ], [ %.11877, %1011 ], [ %.11877, %1011 ], [ %.11877, %1017 ], [ %.11877, %1019 ], [ %.010231866, %.fold.split1323 ], [ %.11877, %946 ], [ %.11877, %171 ] %1043 = getelementptr inbounds nuw i8, ptr %.21025, i64 1 %.not = icmp eq ptr %1043, %18 br i1 %.not, label %._crit_edge, label %56 diff --git a/bench/postgres/optimized/formatting.ll b/bench/postgres/optimized/formatting.ll index 49ff213b26f..b930c441852 100644 --- a/bench/postgres/optimized/formatting.ll +++ b/bench/postgres/optimized/formatting.ll @@ -908,15 +908,14 @@ define dso_local ptr @str_initcap(ptr noundef %0, i64 noundef %1, i32 noundef %2 15: ; preds = %13 %16 = tail call ptr @pnstrdup(ptr noundef nonnull %0, i64 noundef %1) #18 %17 = load i8, ptr %16, align 1 - %.not2831.i = icmp eq i8 %17, 0 - br i1 %.not2831.i, label %.loopexit, label %.lr.ph.i + %.not2834.i = icmp eq i8 %17, 0 + br i1 %.not2834.i, label %.loopexit, label %.lr.ph.i .lr.ph.i: ; preds = %15, %23 %18 = phi i8 [ %30, %23 ], [ %17, %15 ] - %.02333.i = phi i32 [ %28, %23 ], [ 0, %15 ] - %.02432.i = phi ptr [ %29, %23 ], [ %16, %15 ] - %.not29.i = icmp eq i32 %.02333.i, 0 - br i1 %.not29.i, label %21, label %19 + %.02336.i = phi i1 [ %28, %23 ], [ true, %15 ] + %.02435.i = phi ptr [ %29, %23 ], [ %16, %15 ] + br i1 %.02336.i, label %21, label %19 19: ; preds = %.lr.ph.i %20 = tail call zeroext i8 @pg_ascii_tolower(i8 noundef zeroext %18) #18 @@ -928,15 +927,15 @@ define dso_local ptr @str_initcap(ptr noundef %0, i64 noundef %1, i32 noundef %2 23: ; preds = %21, %19 %storemerge.i = phi i8 [ %22, %21 ], [ %20, %19 ] - store i8 %storemerge.i, ptr %.02432.i, align 1 + store i8 %storemerge.i, ptr %.02435.i, align 1 %24 = and i8 %storemerge.i, -33 - %25 = add i8 %24, -65 - %or.cond30.i = icmp ult i8 %25, 26 - %26 = add i8 %storemerge.i, -48 - %27 = icmp ult i8 %26, 10 - %narrow.i = select i1 %or.cond30.i, i1 true, i1 %27 - %28 = zext i1 %narrow.i to i32 - %29 = getelementptr i8, ptr %.02432.i, i64 1 + %25 = add i8 %24, -91 + %or.cond33.i = icmp ult i8 %25, -26 + %26 = sext i8 %storemerge.i to i32 + %27 = add nsw i32 %26, -58 + %.not32.i = icmp ult i32 %27, -10 + %28 = select i1 %or.cond33.i, i1 %.not32.i, i1 false + %29 = getelementptr i8, ptr %.02435.i, i64 1 %30 = load i8, ptr %29, align 1 %.not28.i = icmp eq i8 %30, 0 br i1 %.not28.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !13 @@ -1185,15 +1184,14 @@ define dso_local noundef ptr @asc_initcap(ptr noundef %0, i64 noundef %1) local_ 3: ; preds = %2 %4 = tail call ptr @pnstrdup(ptr noundef nonnull %0, i64 noundef %1) #18 %5 = load i8, ptr %4, align 1 - %.not2831 = icmp eq i8 %5, 0 - br i1 %.not2831, label %.loopexit, label %.lr.ph + %.not2834 = icmp eq i8 %5, 0 + br i1 %.not2834, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %3, %11 %6 = phi i8 [ %18, %11 ], [ %5, %3 ] - %.02333 = phi i32 [ %16, %11 ], [ 0, %3 ] - %.02432 = phi ptr [ %17, %11 ], [ %4, %3 ] - %.not29 = icmp eq i32 %.02333, 0 - br i1 %.not29, label %9, label %7 + %.02336 = phi i1 [ %16, %11 ], [ true, %3 ] + %.02435 = phi ptr [ %17, %11 ], [ %4, %3 ] + br i1 %.02336, label %9, label %7 7: ; preds = %.lr.ph %8 = tail call zeroext i8 @pg_ascii_tolower(i8 noundef zeroext %6) #18 @@ -1205,15 +1203,15 @@ define dso_local noundef ptr @asc_initcap(ptr noundef %0, i64 noundef %1) local_ 11: ; preds = %9, %7 %storemerge = phi i8 [ %10, %9 ], [ %8, %7 ] - store i8 %storemerge, ptr %.02432, align 1 + store i8 %storemerge, ptr %.02435, align 1 %12 = and i8 %storemerge, -33 - %13 = add i8 %12, -65 - %or.cond30 = icmp ult i8 %13, 26 - %14 = add i8 %storemerge, -48 - %15 = icmp ult i8 %14, 10 - %narrow = select i1 %or.cond30, i1 true, i1 %15 - %16 = zext i1 %narrow to i32 - %17 = getelementptr i8, ptr %.02432, i64 1 + %13 = add i8 %12, -91 + %or.cond33 = icmp ult i8 %13, -26 + %14 = sext i8 %storemerge to i32 + %15 = add nsw i32 %14, -58 + %.not32 = icmp ult i32 %15, -10 + %16 = select i1 %or.cond33, i1 %.not32, i1 false + %17 = getelementptr i8, ptr %.02435, i64 1 %18 = load i8, ptr %17, align 1 %.not28 = icmp eq i8 %18, 0 br i1 %.not28, label %.loopexit, label %.lr.ph, !llvm.loop !13 diff --git a/bench/postgres/optimized/tsvector_op.ll b/bench/postgres/optimized/tsvector_op.ll index 1160ee6d697..a3476a6c59a 100644 --- a/bench/postgres/optimized/tsvector_op.ll +++ b/bench/postgres/optimized/tsvector_op.ll @@ -833,11 +833,8 @@ define dso_local i64 @tsvector_setweight_by_filter(ptr nocapture noundef readonl %52 = zext nneg i32 %50 to i64 %53 = getelementptr [0 x %struct.WordEntry], ptr %31, i64 0, i64 %52 %54 = icmp eq i32 %49, 0 - br i1 %54, label %tsCompareString.exit.us.i, label %.lr.ph.split.preheader.i - -.lr.ph.split.preheader.i: ; preds = %.lr.ph.i %55 = icmp ult i32 %47, 20 - br label %.lr.ph.split.i + br i1 %54, label %tsCompareString.exit.us.i, label %.lr.ph.split.i tsCompareString.exit.us.i: ; preds = %.lr.ph.i, %tsCompareString.exit.thread25.us.i %.02032.us.i = phi i32 [ %56, %tsCompareString.exit.thread25.us.i ], [ %50, %.lr.ph.i ] @@ -846,16 +843,16 @@ tsCompareString.exit.us.i: ; preds = %.lr.ph.i, %tsCompar %58 = getelementptr %struct.WordEntry, ptr %31, i64 %57 %59 = load i32, ptr %58, align 4 %60 = and i32 %59, 4094 - %.not38.i = icmp eq i32 %60, 0 - br i1 %.not38.i, label %tsvector_bsearch.exit.thread58, label %tsCompareString.exit.thread25.us.i + %.not.i = icmp eq i32 %60, 0 + br i1 %.not.i, label %tsvector_bsearch.exit.thread58, label %tsCompareString.exit.thread25.us.i tsCompareString.exit.thread25.us.i: ; preds = %tsCompareString.exit.us.i - %.not39.i = icmp samesign ult i32 %.02032.us.i, 2 - br i1 %.not39.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 + %.not38.i = icmp samesign ult i32 %.02032.us.i, 2 + br i1 %.not38.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 -.lr.ph.split.i: ; preds = %tsCompareString.exit.thread25.i, %.lr.ph.split.preheader.i - %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.split.preheader.i ] - %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %50, %.lr.ph.split.preheader.i ] +.lr.ph.split.i: ; preds = %.lr.ph.i, %tsCompareString.exit.thread25.i + %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.i ] + %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %50, %.lr.ph.i ] %61 = add i32 %.02032.i, %.01933.i %62 = sdiv i32 %61, 2 %63 = sext i32 %62 to i64 @@ -1045,15 +1042,15 @@ define dso_local i64 @tsvector_delete_str(ptr nocapture noundef readonly %0) loc %40 = zext nneg i32 %38 to i64 %41 = getelementptr [0 x %struct.WordEntry], ptr %36, i64 0, i64 %40 %42 = icmp eq i32 %.fr47, 0 - br i1 %42, label %tsCompareString.exit.us.i, label %.lr.ph.split.preheader.i + br i1 %42, label %tsCompareString.exit.us.i, label %.lr.ph.split.i.preheader -.lr.ph.split.preheader.i: ; preds = %.lr.ph.i +.lr.ph.split.i.preheader: ; preds = %.lr.ph.i %43 = icmp slt i32 %.fr47, 1 br i1 %43, label %.lr.ph.split.i.us, label %.lr.ph.split.i -.lr.ph.split.i.us: ; preds = %.lr.ph.split.preheader.i, %tsCompareString.exit.thread25.i.us - %.01933.i.us = phi i32 [ %.1.i.us, %tsCompareString.exit.thread25.i.us ], [ 0, %.lr.ph.split.preheader.i ] - %.02032.i.us = phi i32 [ %.121.i.us, %tsCompareString.exit.thread25.i.us ], [ %38, %.lr.ph.split.preheader.i ] +.lr.ph.split.i.us: ; preds = %.lr.ph.split.i.preheader, %tsCompareString.exit.thread25.i.us + %.01933.i.us = phi i32 [ %.1.i.us, %tsCompareString.exit.thread25.i.us ], [ 0, %.lr.ph.split.i.preheader ] + %.02032.i.us = phi i32 [ %.121.i.us, %tsCompareString.exit.thread25.i.us ], [ %38, %.lr.ph.split.i.preheader ] %44 = add i32 %.02032.i.us, %.01933.i.us %45 = sdiv i32 %44, 2 %46 = sext i32 %45 to i64 @@ -1103,20 +1100,20 @@ tsCompareString.exit.us.i: ; preds = %.lr.ph.i, %tsCompar %68 = getelementptr %struct.WordEntry, ptr %36, i64 %67 %69 = load i32, ptr %68, align 4 %70 = and i32 %69, 4094 - %.not38.i = icmp eq i32 %70, 0 - br i1 %.not38.i, label %tsvector_bsearch.exit.thread32, label %tsCompareString.exit.thread25.us.i + %.not.i = icmp eq i32 %70, 0 + br i1 %.not.i, label %tsvector_bsearch.exit.thread32, label %tsCompareString.exit.thread25.us.i tsvector_bsearch.exit.thread32: ; preds = %tsCompareString.exit.us.i store i32 %66, ptr %2, align 4 br label %94 tsCompareString.exit.thread25.us.i: ; preds = %tsCompareString.exit.us.i - %.not39.i = icmp samesign ult i32 %.02032.us.i, 2 - br i1 %.not39.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 + %.not38.i = icmp samesign ult i32 %.02032.us.i, 2 + br i1 %.not38.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 -.lr.ph.split.i: ; preds = %.lr.ph.split.preheader.i, %tsCompareString.exit.thread25.i - %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.split.preheader.i ] - %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %38, %.lr.ph.split.preheader.i ] +.lr.ph.split.i: ; preds = %.lr.ph.split.i.preheader, %tsCompareString.exit.thread25.i + %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.split.i.preheader ] + %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %38, %.lr.ph.split.i.preheader ] %71 = add i32 %.02032.i, %.01933.i %72 = sdiv i32 %71, 2 %73 = sext i32 %72 to i64 @@ -1425,11 +1422,8 @@ define dso_local i64 @tsvector_delete_arr(ptr nocapture noundef readonly %0) loc %38 = zext nneg i32 %36 to i64 %39 = getelementptr [0 x %struct.WordEntry], ptr %19, i64 0, i64 %38 %40 = icmp eq i32 %35, 0 - br i1 %40, label %tsCompareString.exit.us.i, label %.lr.ph.split.preheader.i - -.lr.ph.split.preheader.i: ; preds = %.lr.ph.i %41 = icmp ult i32 %33, 20 - br label %.lr.ph.split.i + br i1 %40, label %tsCompareString.exit.us.i, label %.lr.ph.split.i tsCompareString.exit.us.i: ; preds = %.lr.ph.i, %tsCompareString.exit.thread25.us.i %.02032.us.i = phi i32 [ %42, %tsCompareString.exit.thread25.us.i ], [ %36, %.lr.ph.i ] @@ -1438,16 +1432,16 @@ tsCompareString.exit.us.i: ; preds = %.lr.ph.i, %tsCompar %44 = getelementptr %struct.WordEntry, ptr %19, i64 %43 %45 = load i32, ptr %44, align 4 %46 = and i32 %45, 4094 - %.not38.i = icmp eq i32 %46, 0 - br i1 %.not38.i, label %tsvector_bsearch.exit.thread31, label %tsCompareString.exit.thread25.us.i + %.not.i = icmp eq i32 %46, 0 + br i1 %.not.i, label %tsvector_bsearch.exit.thread31, label %tsCompareString.exit.thread25.us.i tsCompareString.exit.thread25.us.i: ; preds = %tsCompareString.exit.us.i - %.not39.i = icmp samesign ult i32 %.02032.us.i, 2 - br i1 %.not39.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 + %.not38.i = icmp samesign ult i32 %.02032.us.i, 2 + br i1 %.not38.i, label %tsvector_bsearch.exit.thread, label %tsCompareString.exit.us.i, !llvm.loop !12 -.lr.ph.split.i: ; preds = %tsCompareString.exit.thread25.i, %.lr.ph.split.preheader.i - %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.split.preheader.i ] - %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %36, %.lr.ph.split.preheader.i ] +.lr.ph.split.i: ; preds = %.lr.ph.i, %tsCompareString.exit.thread25.i + %.01933.i = phi i32 [ %.1.i, %tsCompareString.exit.thread25.i ], [ 0, %.lr.ph.i ] + %.02032.i = phi i32 [ %.121.i, %tsCompareString.exit.thread25.i ], [ %36, %.lr.ph.i ] %47 = add i32 %.02032.i, %.01933.i %48 = sdiv i32 %47, 2 %49 = sext i32 %48 to i64 diff --git a/bench/proj/optimized/gnom.cpp.ll b/bench/proj/optimized/gnom.cpp.ll index b0166321b65..c22356f5211 100644 --- a/bench/proj/optimized/gnom.cpp.ll +++ b/bench/proj/optimized/gnom.cpp.ll @@ -444,10 +444,9 @@ define internal { double, double } @_ZL14gnom_e_inverse5PJ_XYP8PJconsts(double % .split.us: ; preds = %15, %32 %29 = phi double [ %39, %32 ], [ %24, %15 ] %30 = phi i32 [ %43, %32 ], [ 9, %15 ] - %.030.us = phi i32 [ %.1.us, %32 ], [ 0, %15 ] + %.030.us = phi i1 [ %42, %32 ], [ true, %15 ] %31 = call double @geod_genposition(ptr noundef nonnull %5, i32 noundef 0, double noundef %29, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef null, ptr noundef nonnull %4, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef null, ptr noundef null) - %cond.us = icmp eq i32 %.030.us, 0 - br i1 %cond.us, label %32, label %.loopexit + br i1 %.030.us, label %32, label %.loopexit 32: ; preds = %.split.us %33 = load double, ptr %8, align 8 @@ -460,8 +459,7 @@ define internal { double, double } @_ZL14gnom_e_inverse5PJ_XYP8PJconsts(double % store double %39, ptr %4, align 8 %40 = call double @llvm.fabs.f64(double %37) %41 = load double, ptr @_ZZL14gnom_e_inverse5PJ_XYP8PJconstsE4eps_, align 8 - %42 = fcmp ult double %40, %41 - %.1.us = zext i1 %42 to i32 + %42 = fcmp oge double %40, %41 %43 = add nsw i32 %30, -1 %.not26.us = icmp eq i32 %30, 0 br i1 %.not26.us, label %.split32.us, label %.split.us, !llvm.loop !5 @@ -469,10 +467,9 @@ define internal { double, double } @_ZL14gnom_e_inverse5PJ_XYP8PJconsts(double % .split: ; preds = %15, %47 %44 = phi double [ %53, %47 ], [ %24, %15 ] %45 = phi i32 [ %57, %47 ], [ 9, %15 ] - %.030 = phi i32 [ %.1, %47 ], [ 0, %15 ] + %.030 = phi i1 [ %56, %47 ], [ true, %15 ] %46 = call double @geod_genposition(ptr noundef nonnull %5, i32 noundef 0, double noundef %44, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef null, ptr noundef nonnull %4, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef null, ptr noundef null) - %cond = icmp eq i32 %.030, 0 - br i1 %cond, label %47, label %.loopexit + br i1 %.030, label %47, label %.loopexit 47: ; preds = %.split %48 = load double, ptr %8, align 8 @@ -484,16 +481,14 @@ define internal { double, double } @_ZL14gnom_e_inverse5PJ_XYP8PJconsts(double % store double %53, ptr %4, align 8 %54 = call double @llvm.fabs.f64(double %51) %55 = load double, ptr @_ZZL14gnom_e_inverse5PJ_XYP8PJconstsE4eps_, align 8 - %56 = fcmp ult double %54, %55 - %.1 = zext i1 %56 to i32 + %56 = fcmp oge double %54, %55 %57 = add nsw i32 %45, -1 %.not26 = icmp eq i32 %45, 0 br i1 %.not26, label %.split32.us, label %.split, !llvm.loop !5 .split32.us: ; preds = %47, %32 - %.us-phi = phi i32 [ %.1.us, %32 ], [ %.1, %47 ] - %.not28 = icmp eq i32 %.us-phi, 0 - br i1 %.not28, label %62, label %.loopexit + %.us-phi = phi i1 [ %42, %32 ], [ %56, %47 ] + br i1 %.us-phi, label %62, label %.loopexit .loopexit: ; preds = %.split, %.split.us, %.split32.us %58 = load double, ptr %6, align 8 diff --git a/bench/qemu/optimized/hw_virtio_virtio-balloon.c.ll b/bench/qemu/optimized/hw_virtio_virtio-balloon.c.ll index 286dde93ba4..c7dbab8a413 100644 --- a/bench/qemu/optimized/hw_virtio_virtio-balloon.c.ll +++ b/bench/qemu/optimized/hw_virtio_virtio-balloon.c.ll @@ -1223,7 +1223,7 @@ declare ptr @virtio_add_queue(ptr noundef, i32 noundef, ptr noundef) local_unnam ; Function Attrs: nounwind sspstrong uwtable define internal void @virtio_balloon_handle_output(ptr noundef %vdev, ptr noundef %vq) #0 { entry: - %rb_offset.i71 = alloca i64, align 8 + %rb_offset.i70 = alloca i64, align 8 %rb_offset.i = alloca i64, align 8 %_now.i.i49 = alloca %struct.timeval, align 8 %_now.i.i34 = alloca %struct.timeval, align 8 @@ -1231,9 +1231,9 @@ entry: %pfn = alloca i32, align 4 %tmp = alloca %struct.MemoryRegionSection, align 16 %call.i = tail call ptr @object_dynamic_cast_assert(ptr noundef %vdev, ptr noundef nonnull @.str, ptr noundef nonnull @.str.6, i32 noundef 24, ptr noundef nonnull @__func__.VIRTIO_BALLOON) #13 - %call190 = tail call ptr @virtqueue_pop(ptr noundef %vq, i64 noundef 56) #13 - %tobool.not91 = icmp eq ptr %call190, null - br i1 %tobool.not91, label %for.end, label %while.cond.preheader.lr.ph + %call189 = tail call ptr @virtqueue_pop(ptr noundef %vq, i64 noundef 56) #13 + %tobool.not90 = icmp eq ptr %call189, null + br i1 %tobool.not90, label %for.end, label %while.cond.preheader.lr.ph while.cond.preheader.lr.ph: ; preds = %entry %section.sroa.1.0.tmp.sroa_idx = getelementptr inbounds nuw i8, ptr %tmp, i64 16 @@ -1246,9 +1246,9 @@ while.cond.preheader.lr.ph: ; preds = %entry br label %while.cond.preheader while.cond.preheader: ; preds = %while.cond.preheader.lr.ph, %virtio_balloon_pbp_free.exit - %call192 = phi ptr [ %call190, %while.cond.preheader.lr.ph ], [ %call1, %virtio_balloon_pbp_free.exit ] - %out_sg = getelementptr inbounds nuw i8, ptr %call192, i64 48 - %out_num = getelementptr inbounds nuw i8, ptr %call192, i64 12 + %call191 = phi ptr [ %call189, %while.cond.preheader.lr.ph ], [ %call1, %virtio_balloon_pbp_free.exit ] + %out_sg = getelementptr inbounds nuw i8, ptr %call191, i64 48 + %out_num = getelementptr inbounds nuw i8, ptr %call191, i64 12 br label %while.cond.outer while.cond.outer: ; preds = %while.cond.preheader, %if.end36 @@ -1459,9 +1459,9 @@ if.then26: ; preds = %if.then23 %call1.i66 = call ptr @qemu_ram_block_from_host(ptr noundef %add.ptr.i65, i1 noundef zeroext false, ptr noundef nonnull %rb_offset.i) #13 %call2.i67 = call i64 @qemu_ram_pagesize(ptr noundef %call1.i66) #13 %cmp.i = icmp eq i64 %call2.i67, 4096 - br i1 %cmp.i, label %if.then.i70, label %if.end.i + br i1 %cmp.i, label %if.then.i69, label %if.end.i -if.then.i70: ; preds = %if.then26 +if.then.i69: ; preds = %if.then26 %28 = load i64, ptr %rb_offset.i, align 8 %call3.i = call i32 @ram_block_discard_range(ptr noundef %call1.i66, i64 noundef %28, i64 noundef 4096) #13 br label %balloon_inflate_page.exit @@ -1527,67 +1527,62 @@ if.end16.i: ; preds = %virtio_balloon_pbp_ %or.i.i = or i64 %shl.i.i, %34 store i64 %or.i.i, ptr %add.ptr.i.i, align 8 %cmp.i25.i = icmp ult i64 %conv21.pre-phi.i, 65 - br i1 %cmp.i25.i, label %if.then.i.i69, label %if.else.i.i68 + br i1 %cmp.i25.i, label %if.then.i.i68, label %bitmap_full.exit.i -if.then.i.i69: ; preds = %if.end16.i +if.then.i.i68: ; preds = %if.end16.i %35 = load i64, ptr %pbp.sroa.3.3, align 8 %not.i.i = xor i64 %35, -1 %sub.i.i = sub nsw i64 0, %div521.i %and.i.i = and i64 %sub.i.i, 63 %shr.i.i = lshr i64 -1, %and.i.i %and1.i.i = and i64 %shr.i.i, %not.i.i - %tobool.not.i26.i = icmp eq i64 %and1.i.i, 0 - %lnot.ext.i.i = zext i1 %tobool.not.i26.i to i32 - br label %bitmap_full.exit.i + %tobool.not.i26.not.i = icmp eq i64 %and1.i.i, 0 + br i1 %tobool.not.i26.not.i, label %if.end.i29.i, label %balloon_inflate_page.exit -if.else.i.i68: ; preds = %if.end16.i +bitmap_full.exit.i: ; preds = %if.end16.i %call.i.i = call i32 @slow_bitmap_full(ptr noundef nonnull %pbp.sroa.3.3, i64 noundef range(i64 -2147483648, 2147483648) %conv21.pre-phi.i) #13 - br label %bitmap_full.exit.i + %36 = icmp eq i32 %call.i.i, 0 + br i1 %36, label %balloon_inflate_page.exit, label %if.end.i29.i -bitmap_full.exit.i: ; preds = %if.else.i.i68, %if.then.i.i69 - %retval.0.i.i = phi i32 [ %lnot.ext.i.i, %if.then.i.i69 ], [ %call.i.i, %if.else.i.i68 ] - %tobool23.not.i = icmp eq i32 %retval.0.i.i, 0 - br i1 %tobool23.not.i, label %balloon_inflate_page.exit, label %if.end.i29.i - -if.end.i29.i: ; preds = %bitmap_full.exit.i +if.end.i29.i: ; preds = %if.then.i.i68, %bitmap_full.exit.i %call25.i = call i32 @ram_block_discard_range(ptr noundef %call1.i66, i64 noundef %mul.i, i64 noundef %call2.i67) #13 call void @g_free(ptr noundef nonnull %pbp.sroa.3.3) #13 br label %balloon_inflate_page.exit -balloon_inflate_page.exit: ; preds = %if.then.i70, %bitmap_full.exit.i, %if.end.i29.i - %pbp.sroa.0.4 = phi i64 [ %pbp.sroa.0.1.ph, %if.then.i70 ], [ %pbp.sroa.0.3, %bitmap_full.exit.i ], [ %pbp.sroa.0.3, %if.end.i29.i ] - %pbp.sroa.3.4 = phi ptr [ %pbp.sroa.3.1.ph, %if.then.i70 ], [ %pbp.sroa.3.3, %bitmap_full.exit.i ], [ null, %if.end.i29.i ] +balloon_inflate_page.exit: ; preds = %if.then.i69, %if.then.i.i68, %bitmap_full.exit.i, %if.end.i29.i + %pbp.sroa.0.4 = phi i64 [ %pbp.sroa.0.1.ph, %if.then.i69 ], [ %pbp.sroa.0.3, %if.end.i29.i ], [ %pbp.sroa.0.3, %if.then.i.i68 ], [ %pbp.sroa.0.3, %bitmap_full.exit.i ] + %pbp.sroa.3.4 = phi ptr [ %pbp.sroa.3.1.ph, %if.then.i69 ], [ null, %if.end.i29.i ], [ %pbp.sroa.3.3, %if.then.i.i68 ], [ %pbp.sroa.3.3, %bitmap_full.exit.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %rb_offset.i) br label %if.end36 if.else: ; preds = %if.then23 - %36 = load ptr, ptr %dvq, align 8 - %cmp28 = icmp eq ptr %vq, %36 + %37 = load ptr, ptr %dvq, align 8 + %cmp28 = icmp eq ptr %vq, %37 br i1 %cmp28, label %if.then30, label %do.body if.then30: ; preds = %if.else - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %rb_offset.i71) - %call.i72 = call ptr @memory_region_get_ram_ptr(ptr noundef nonnull %section.sroa.1.0.copyload) #13 - %add.ptr.i73 = getelementptr i8, ptr %call.i72, i64 %section.sroa.1013.0.copyload - %call1.i74 = call ptr @qemu_ram_block_from_host(ptr noundef %add.ptr.i73, i1 noundef zeroext false, ptr noundef nonnull %rb_offset.i71) #13 - %call2.i75 = call i64 @qemu_ram_pagesize(ptr noundef %call1.i74) #13 - %37 = ptrtoint ptr %add.ptr.i73 to i64 - %not.i = sub i64 0, %call2.i75 - %and.i = and i64 %37, %not.i - %38 = inttoptr i64 %and.i to ptr - %call3.i76 = call i32 @qemu_madvise(ptr noundef %38, i64 noundef %call2.i75, i32 noundef 3) #13 - %cmp.not.i77 = icmp eq i32 %call3.i76, 0 - br i1 %cmp.not.i77, label %balloon_deflate_page.exit, label %if.then.i78 - -if.then.i78: ; preds = %if.then30 - %call4.i79 = tail call ptr @__errno_location() #17 - %39 = load i32, ptr %call4.i79, align 4 - %call5.i = call ptr @strerror(i32 noundef %39) #13 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %rb_offset.i70) + %call.i71 = call ptr @memory_region_get_ram_ptr(ptr noundef nonnull %section.sroa.1.0.copyload) #13 + %add.ptr.i72 = getelementptr i8, ptr %call.i71, i64 %section.sroa.1013.0.copyload + %call1.i73 = call ptr @qemu_ram_block_from_host(ptr noundef %add.ptr.i72, i1 noundef zeroext false, ptr noundef nonnull %rb_offset.i70) #13 + %call2.i74 = call i64 @qemu_ram_pagesize(ptr noundef %call1.i73) #13 + %38 = ptrtoint ptr %add.ptr.i72 to i64 + %not.i = sub i64 0, %call2.i74 + %and.i = and i64 %38, %not.i + %39 = inttoptr i64 %and.i to ptr + %call3.i75 = call i32 @qemu_madvise(ptr noundef %39, i64 noundef %call2.i74, i32 noundef 3) #13 + %cmp.not.i76 = icmp eq i32 %call3.i75, 0 + br i1 %cmp.not.i76, label %balloon_deflate_page.exit, label %if.then.i77 + +if.then.i77: ; preds = %if.then30 + %call4.i78 = tail call ptr @__errno_location() #17 + %40 = load i32, ptr %call4.i78, align 4 + %call5.i = call ptr @strerror(i32 noundef %40) #13 call void (ptr, ...) @warn_report(ptr noundef nonnull @.str.48, ptr noundef %call5.i) #13 br label %balloon_deflate_page.exit -balloon_deflate_page.exit: ; preds = %if.then30, %if.then.i78 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %rb_offset.i71) +balloon_deflate_page.exit: ; preds = %if.then30, %if.then.i77 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %rb_offset.i70) br label %if.end36 do.body: ; preds = %if.else @@ -1601,17 +1596,17 @@ if.end36: ; preds = %trace_virtio_balloo br label %while.cond.outer, !llvm.loop !7 while.end: ; preds = %iov_to_buf.exit - call void @virtqueue_push(ptr noundef %vq, ptr noundef nonnull %call192, i32 noundef 0) #13 + call void @virtqueue_push(ptr noundef %vq, ptr noundef nonnull %call191, i32 noundef 0) #13 call void @virtio_notify(ptr noundef %vdev, ptr noundef %vq) #13 - call void @g_free(ptr noundef nonnull %call192) #13 + call void @g_free(ptr noundef nonnull %call191) #13 %tobool.not.i = icmp eq ptr %pbp.sroa.3.1.ph, null - br i1 %tobool.not.i, label %virtio_balloon_pbp_free.exit, label %if.end.i82 + br i1 %tobool.not.i, label %virtio_balloon_pbp_free.exit, label %if.end.i81 -if.end.i82: ; preds = %while.end +if.end.i81: ; preds = %while.end call void @g_free(ptr noundef nonnull %pbp.sroa.3.1.ph) #13 br label %virtio_balloon_pbp_free.exit -virtio_balloon_pbp_free.exit: ; preds = %while.end, %if.end.i82 +virtio_balloon_pbp_free.exit: ; preds = %while.end, %if.end.i81 %call1 = call ptr @virtqueue_pop(ptr noundef %vq, i64 noundef 56) #13 %tobool.not = icmp eq ptr %call1, null br i1 %tobool.not, label %for.end, label %while.cond.preheader diff --git a/bench/qemu/optimized/util_thread-context.c.ll b/bench/qemu/optimized/util_thread-context.c.ll index 11aa1a834ac..7d5ac3545bc 100644 --- a/bench/qemu/optimized/util_thread-context.c.ll +++ b/bench/qemu/optimized/util_thread-context.c.ll @@ -548,7 +548,7 @@ for.body: ; preds = %for.body.lr.ph, %fo for.end26: ; preds = %for.body, %for.inc25.us, %bitmap_new.exit call void @numa_bitmask_free(ptr noundef %call9) #8 %cmp.i27 = icmp ult i32 %call.fr, 65 - br i1 %cmp.i27, label %if.then.i29, label %if.else.i + br i1 %cmp.i27, label %if.then.i29, label %bitmap_empty.exit if.then.i29: ; preds = %for.end26 %7 = load i64, ptr %call.i.i, align 8 @@ -556,27 +556,22 @@ if.then.i29: ; preds = %for.end26 %and.i = and i64 %sub.i, 63 %shr.i = lshr i64 -1, %and.i %and1.i = and i64 %7, %shr.i - %tobool.not.i = icmp eq i64 %and1.i, 0 - %lnot.ext.i = zext i1 %tobool.not.i to i32 - br label %bitmap_empty.exit + %tobool.not.i.not = icmp eq i64 %and1.i, 0 + br i1 %tobool.not.i.not, label %if.then30, label %if.end31 -if.else.i: ; preds = %for.end26 +bitmap_empty.exit: ; preds = %for.end26 %call.i28 = call i32 @slow_bitmap_empty(ptr noundef nonnull %call.i.i, i64 noundef range(i64 -2147483648, 2147483648) %conv) #8 - br label %bitmap_empty.exit + %8 = icmp eq i32 %call.i28, 0 + br i1 %8, label %if.end31, label %if.then30 -bitmap_empty.exit: ; preds = %if.then.i29, %if.else.i - %retval.0.i = phi i32 [ %lnot.ext.i, %if.then.i29 ], [ %call.i28, %if.else.i ] - %tobool29.not = icmp eq i32 %retval.0.i, 0 - br i1 %tobool29.not, label %if.end31, label %if.then30 - -if.then30: ; preds = %bitmap_empty.exit +if.then30: ; preds = %if.then.i29, %bitmap_empty.exit call void (ptr, ptr, i32, ptr, ptr, ...) @error_setg_internal(ptr noundef %errp, ptr noundef nonnull @.str, i32 noundef 212, ptr noundef nonnull @__func__.thread_context_set_node_affinity, ptr noundef nonnull @.str.17) #8 br label %out -if.end31: ; preds = %bitmap_empty.exit +if.end31: ; preds = %if.then.i29, %bitmap_empty.exit %thread_id = getelementptr inbounds nuw i8, ptr %call.i, i64 40 - %8 = load i32, ptr %thread_id, align 8 - %cmp32.not = icmp eq i32 %8, -1 + %9 = load i32, ptr %thread_id, align 8 + %cmp32.not = icmp eq i32 %9, -1 br i1 %cmp32.not, label %if.else, label %if.then34 if.then34: ; preds = %if.end31 @@ -599,8 +594,8 @@ if.else: ; preds = %if.end31 out: ; preds = %if.else, %if.then38, %if.then34, %if.then30, %if.then6 %bitmap.0 = phi ptr [ %call.i.i, %if.then30 ], [ %call.i.i, %if.then38 ], [ %call.i.i, %if.then34 ], [ null, %if.else ], [ null, %if.then6 ] call void @g_free(ptr noundef %bitmap.0) #8 - %9 = load ptr, ptr %host_nodes, align 8 - call void @qapi_free_uint16List(ptr noundef %9) #8 + %10 = load ptr, ptr %host_nodes, align 8 + call void @qapi_free_uint16List(ptr noundef %10) #8 br label %return return: ; preds = %if.end, %out, %if.then diff --git a/bench/quickjs/optimized/libregexp.ll b/bench/quickjs/optimized/libregexp.ll index fd068cdea33..f95ddf52da9 100644 --- a/bench/quickjs/optimized/libregexp.ll +++ b/bench/quickjs/optimized/libregexp.ll @@ -3813,14 +3813,14 @@ define internal fastcc range(i32 -1, 1) i32 @re_parse_group_name(ptr noundef non %6 = ptrtoint ptr %0 to i64 br label %7 -7: ; preds = %72, %2 - %8 = phi ptr [ %5, %2 ], [ %.pre, %72 ] - %.0 = phi ptr [ %0, %2 ], [ %.1, %72 ] +7: ; preds = %71, %2 + %8 = phi ptr [ %5, %2 ], [ %.pre, %71 ] + %.0 = phi ptr [ %0, %2 ], [ %.1, %71 ] %9 = load i8, ptr %8, align 1 %10 = zext i8 %9 to i32 switch i8 %9, label %16 [ i8 92, label %11 - i8 62, label %73 + i8 62, label %72 ] 11: ; preds = %7 @@ -3849,37 +3849,37 @@ define internal fastcc range(i32 -1, 1) i32 @re_parse_group_name(ptr noundef non %22 = call i32 @unicode_from_utf8(ptr noundef %21, i32 noundef 6, ptr noundef nonnull %4) #17 %.mask.i34 = and i32 %22, -1024 %.not38 = icmp eq i32 %.mask.i34, 56320 - br i1 %.not38, label %23, label %.thread41 + br i1 %.not38, label %23, label %.thread43 23: ; preds = %20 %24 = shl nuw nsw i32 %19, 10 %25 = add nsw i32 %24, -56613888 %26 = add nuw nsw i32 %25, %22 %27 = load ptr, ptr %4, align 8 - br label %.thread41.sink.split + br label %.thread43.sink.split .thread: ; preds = %16 %28 = getelementptr i8, ptr %8, i64 1 - br label %.thread41.sink.split + br label %.thread43.sink.split 29: ; preds = %18, %14 %.028 = phi i32 [ %15, %14 ], [ %19, %18 ] %30 = icmp ugt i32 %.028, 1114111 - br i1 %30, label %.loopexit, label %.thread41 + br i1 %30, label %.loopexit, label %.thread43 -.thread41.sink.split: ; preds = %.thread, %23 +.thread43.sink.split: ; preds = %.thread, %23 %.sink = phi ptr [ %27, %23 ], [ %28, %.thread ] %.02837.ph = phi i32 [ %26, %23 ], [ %10, %.thread ] store ptr %.sink, ptr %3, align 8 - br label %.thread41 + br label %.thread43 -.thread41: ; preds = %.thread41.sink.split, %20, %29 - %.02837 = phi i32 [ %.028, %29 ], [ %19, %20 ], [ %.02837.ph, %.thread41.sink.split ] +.thread43: ; preds = %.thread43.sink.split, %20, %29 + %.02837 = phi i32 [ %.028, %29 ], [ %19, %20 ], [ %.02837.ph, %.thread43.sink.split ] %31 = icmp eq ptr %.0, %0 %32 = icmp samesign ult i32 %.02837, 128 br i1 %31, label %33, label %44 -33: ; preds = %.thread41 +33: ; preds = %.thread43 br i1 %32, label %34, label %42 34: ; preds = %33 @@ -3899,10 +3899,10 @@ define internal fastcc range(i32 -1, 1) i32 @re_parse_group_name(ptr noundef non lre_js_is_ident_first.exit: ; preds = %34, %42 %.0.i = phi i32 [ %41, %34 ], [ %43, %42 ] %.not33 = icmp eq i32 %.0.i, 0 - br i1 %.not33, label %.loopexit, label %59 + br i1 %.not33, label %.loopexit, label %58 -44: ; preds = %.thread41 - br i1 %32, label %45, label %53 +44: ; preds = %.thread43 + br i1 %32, label %45, label %lre_js_is_ident_next.exit 45: ; preds = %44 %46 = lshr i32 %.02837, 5 @@ -3910,65 +3910,60 @@ lre_js_is_ident_first.exit: ; preds = %34, %42 %48 = getelementptr [4 x i32], ptr @lre_id_continue_table_ascii, i64 0, i64 %47 %49 = load i32, ptr %48, align 4 %50 = and i32 %.02837, 31 - %51 = lshr i32 %49, %50 - %52 = and i32 %51, 1 - br label %lre_js_is_ident_next.exit + %51 = shl nuw i32 1, %50 + %52 = and i32 %49, %51 + %53 = icmp eq i32 %52, 0 + br i1 %53, label %.loopexit, label %58 -53: ; preds = %44 +lre_js_is_ident_next.exit: ; preds = %44 %54 = call i32 @lre_is_id_continue(i32 noundef range(i32 0, 1114112) %.02837) #17 - %55 = icmp ne i32 %54, 0 + %55 = icmp eq i32 %54, 0 %56 = and i32 %.02837, 2097150 - %57 = icmp eq i32 %56, 8204 - %narrow.i = or i1 %57, %55 - %58 = zext i1 %narrow.i to i32 - br label %lre_js_is_ident_next.exit - -lre_js_is_ident_next.exit: ; preds = %45, %53 - %.0.i35 = phi i32 [ %52, %45 ], [ %58, %53 ] - %.not32 = icmp eq i32 %.0.i35, 0 - br i1 %.not32, label %.loopexit, label %59 - -59: ; preds = %lre_js_is_ident_next.exit, %lre_js_is_ident_first.exit - %60 = ptrtoint ptr %.0 to i64 - %reass.sub = sub i64 %60, %6 - %61 = add i64 %reass.sub, 7 - %62 = icmp sgt i64 %61, 128 - br i1 %62, label %.loopexit, label %63 - -63: ; preds = %59 - %64 = icmp samesign ult i32 %.02837, 128 - br i1 %64, label %65, label %68 - -65: ; preds = %63 - %66 = trunc nuw nsw i32 %.02837 to i8 - %67 = getelementptr i8, ptr %.0, i64 1 - store i8 %66, ptr %.0, align 1 - br label %72 - -68: ; preds = %63 - %69 = call i32 @unicode_to_utf8(ptr noundef %.0, i32 noundef %.02837) #17 - %70 = sext i32 %69 to i64 - %71 = getelementptr i8, ptr %.0, i64 %70 - br label %72 - -72: ; preds = %68, %65 - %.1 = phi ptr [ %67, %65 ], [ %71, %68 ] + %57 = icmp ne i32 %56, 8204 + %narrow.i.not = and i1 %57, %55 + br i1 %narrow.i.not, label %.loopexit, label %58 + +58: ; preds = %45, %lre_js_is_ident_next.exit, %lre_js_is_ident_first.exit + %59 = ptrtoint ptr %.0 to i64 + %reass.sub = sub i64 %59, %6 + %60 = add i64 %reass.sub, 7 + %61 = icmp sgt i64 %60, 128 + br i1 %61, label %.loopexit, label %62 + +62: ; preds = %58 + %63 = icmp samesign ult i32 %.02837, 128 + br i1 %63, label %64, label %67 + +64: ; preds = %62 + %65 = trunc nuw nsw i32 %.02837 to i8 + %66 = getelementptr i8, ptr %.0, i64 1 + store i8 %65, ptr %.0, align 1 + br label %71 + +67: ; preds = %62 + %68 = call i32 @unicode_to_utf8(ptr noundef %.0, i32 noundef %.02837) #17 + %69 = sext i32 %68 to i64 + %70 = getelementptr i8, ptr %.0, i64 %69 + br label %71 + +71: ; preds = %67, %64 + %.1 = phi ptr [ %66, %64 ], [ %70, %67 ] %.pre = load ptr, ptr %3, align 8 br label %7 -73: ; preds = %7 - %74 = icmp eq ptr %.0, %0 - br i1 %74, label %.loopexit, label %75 +72: ; preds = %7 + %73 = icmp eq ptr %.0, %0 + br i1 %73, label %.loopexit, label %74 -75: ; preds = %73 +74: ; preds = %72 store i8 0, ptr %.0, align 1 - %76 = load ptr, ptr %3, align 8 - %77 = getelementptr i8, ptr %76, i64 1 - store ptr %77, ptr %1, align 8 + %75 = load ptr, ptr %3, align 8 + %76 = getelementptr i8, ptr %75, i64 1 + store ptr %76, ptr %1, align 8 br label %.loopexit -.loopexit: ; preds = %59, %lre_js_is_ident_next.exit, %lre_js_is_ident_first.exit, %29, %11, %73, %75 - %.027 = phi i32 [ 0, %75 ], [ -1, %73 ], [ -1, %11 ], [ -1, %29 ], [ -1, %lre_js_is_ident_first.exit ], [ -1, %lre_js_is_ident_next.exit ], [ -1, %59 ] +.loopexit: ; preds = %58, %lre_js_is_ident_next.exit, %lre_js_is_ident_first.exit, %29, %11, %45, %72, %74 + %.027 = phi i32 [ 0, %74 ], [ -1, %72 ], [ -1, %45 ], [ -1, %11 ], [ -1, %29 ], [ -1, %lre_js_is_ident_first.exit ], [ -1, %lre_js_is_ident_next.exit ], [ -1, %58 ] ret i32 %.027 } diff --git a/bench/redis/optimized/liolib.ll b/bench/redis/optimized/liolib.ll index 0a694dc1485..882c06f5207 100644 --- a/bench/redis/optimized/liolib.ll +++ b/bench/redis/optimized/liolib.ll @@ -855,14 +855,13 @@ entry: for.body: ; preds = %entry, %for.body.backedge %nargs.028 = phi i32 [ %nargs.028.be, %for.body.backedge ], [ %nargs.024, %entry ] %arg.addr.027 = phi i32 [ %arg.addr.027.be, %for.body.backedge ], [ %arg, %entry ] - %status.026 = phi i32 [ %status.026.be, %for.body.backedge ], [ 1, %entry ] + %status.026 = phi i1 [ %status.026.be, %for.body.backedge ], [ false, %entry ] %call1 = call i32 @lua_type(ptr noundef %L, i32 noundef %arg.addr.027) #9 %cmp = icmp eq i32 %call1, 3 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %for.body - %tobool2.not = icmp eq i32 %status.026, 0 - br i1 %tobool2.not, label %for.inc.thread, label %land.rhs + br i1 %status.026, label %for.inc.thread, label %land.rhs land.rhs: ; preds = %if.then %call3 = call double @lua_tonumber(ptr noundef %L, i32 noundef %arg.addr.027) #9 @@ -873,8 +872,7 @@ land.rhs: ; preds = %if.then if.else: ; preds = %for.body call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %l) #9 %call6 = call ptr @luaL_checklstring(ptr noundef %L, i32 noundef %arg.addr.027, ptr noundef nonnull %l) #9 - %tobool7.not = icmp eq i32 %status.026, 0 - br i1 %tobool7.not, label %land.end11, label %land.rhs8 + br i1 %status.026, label %land.end11, label %land.rhs8 land.rhs8: ; preds = %if.else %0 = load i64, ptr %l, align 8, !tbaa !19 @@ -890,21 +888,21 @@ land.end11: ; preds = %land.rhs8, %if.else for.inc: ; preds = %land.end11, %land.rhs %status.1.in = phi i1 [ %2, %land.end11 ], [ %cmp5, %land.rhs ] - %status.1 = zext i1 %status.1.in to i32 %nargs.0 = add nsw i32 %nargs.028, -1 %tobool.not = icmp eq i32 %nargs.0, 0 + %3 = xor i1 %status.1.in, true br i1 %tobool.not, label %for.end, label %for.body.backedge for.body.backedge: ; preds = %for.inc, %for.inc.thread - %nargs.028.be = phi i32 [ %nargs.0, %for.inc ], [ %nargs.04, %for.inc.thread ] - %status.026.be = phi i32 [ %status.1, %for.inc ], [ 0, %for.inc.thread ] + %nargs.028.be = phi i32 [ %nargs.0, %for.inc ], [ %nargs.03, %for.inc.thread ] + %status.026.be = phi i1 [ %3, %for.inc ], [ true, %for.inc.thread ] %arg.addr.027.be = add nuw nsw i32 %arg.addr.027, 1 br label %for.body, !llvm.loop !21 for.inc.thread: ; preds = %if.then - %nargs.04 = add nsw i32 %nargs.028, -1 - %tobool.not5 = icmp eq i32 %nargs.04, 0 - br i1 %tobool.not5, label %if.else.i, label %for.body.backedge + %nargs.03 = add nsw i32 %nargs.028, -1 + %tobool.not4 = icmp eq i32 %nargs.03, 0 + br i1 %tobool.not4, label %if.else.i, label %for.body.backedge for.end: ; preds = %for.inc br i1 %status.1.in, label %if.then.i, label %if.else.i @@ -915,11 +913,11 @@ if.then.i: ; preds = %for.end, %entry if.else.i: ; preds = %for.inc.thread, %for.end %call.i = tail call ptr @__errno_location() #10 - %3 = load i32, ptr %call.i, align 4, !tbaa !8 + %4 = load i32, ptr %call.i, align 4, !tbaa !8 call void @lua_pushnil(ptr noundef %L) #9 - %call6.i = call ptr @strerror(i32 noundef %3) #9 + %call6.i = call ptr @strerror(i32 noundef %4) #9 %call7.i = call ptr (ptr, ptr, ...) @lua_pushfstring(ptr noundef %L, ptr noundef nonnull @.str.19, ptr noundef %call6.i) #9 - %conv.i = sext i32 %3 to i64 + %conv.i = sext i32 %4 to i64 call void @lua_pushinteger(ptr noundef %L, i64 noundef %conv.i) #9 br label %pushresult.exit diff --git a/bench/redis/optimized/lstrlib.ll b/bench/redis/optimized/lstrlib.ll index 1d68b29e7c5..4a3d4b5056d 100644 --- a/bench/redis/optimized/lstrlib.ll +++ b/bench/redis/optimized/lstrlib.ll @@ -2161,34 +2161,35 @@ sw.bb1.i62: ; preds = %land.rhs.i %77 = load i8, ptr %add.ptr.i.i25, align 1, !tbaa !8 %conv2.i64 = zext i8 %77 to i32 %call.i65 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i, i32 noundef %conv2.i64), !range !42 - br label %singlematch.exit70 + %78 = icmp eq i32 %call.i65, 0 + br i1 %78, label %while.end.i, label %while.body.i321 sw.bb3.i23: ; preds = %land.rhs.i - %78 = load i8, ptr %add.ptr.i.i25, align 1, !tbaa !8 - %cmp.i.i26 = icmp eq i8 %78, 94 + %79 = load i8, ptr %add.ptr.i.i25, align 1, !tbaa !8 + %cmp.i.i26 = icmp eq i8 %79, 94 %spec.select.i.i27 = select i1 %cmp.i.i26, ptr %add.ptr.i.i25, ptr %p.addr.0 %not.cmp.i.i28 = xor i1 %cmp.i.i26, true %incdec.ptr260.i.i29 = getelementptr inbounds nuw i8, ptr %spec.select.i.i27, i64 1 %cmp361.i.i30 = icmp ult ptr %incdec.ptr260.i.i29, %add.ptr4.i24 - br i1 %cmp361.i.i30, label %while.body.i.i36, label %matchbracketclass.exit.i31 + br i1 %cmp361.i.i30, label %while.body.i.i36, label %singlematch.exit70 while.body.i.i36: ; preds = %sw.bb3.i23, %if.end39.i.i46 %incdec.ptr263.i.i37 = phi ptr [ %incdec.ptr2.i.i48, %if.end39.i.i46 ], [ %incdec.ptr260.i.i29, %sw.bb3.i23 ] %p.addr.162.i.i38 = phi ptr [ %p.addr.2.i.i47, %if.end39.i.i46 ], [ %spec.select.i.i27, %sw.bb3.i23 ] - %79 = load i8, ptr %incdec.ptr263.i.i37, align 1, !tbaa !8 - %cmp6.i.i39 = icmp eq i8 %79, 37 + %80 = load i8, ptr %incdec.ptr263.i.i37, align 1, !tbaa !8 + %cmp6.i.i39 = icmp eq i8 %80, 37 %incdec.ptr9.i.i40 = getelementptr inbounds nuw i8, ptr %p.addr.162.i.i38, i64 2 - %80 = load i8, ptr %incdec.ptr9.i.i40, align 1, !tbaa !8 + %81 = load i8, ptr %incdec.ptr9.i.i40, align 1, !tbaa !8 br i1 %cmp6.i.i39, label %if.then8.i.i58, label %if.else.i.i41 if.then8.i.i58: ; preds = %while.body.i.i36 - %conv10.i.i59 = zext i8 %80 to i32 + %conv10.i.i59 = zext i8 %81 to i32 %call.i.i60 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i, i32 noundef %conv10.i.i59), !range !42 %tobool.not.i.i61 = icmp eq i32 %call.i.i60, 0 - br i1 %tobool.not.i.i61, label %if.end39.i.i46, label %matchbracketclass.exit.i31 + br i1 %tobool.not.i.i61, label %if.end39.i.i46, label %matchbracketclass.exit.i31.loopexit if.else.i.i41: ; preds = %while.body.i.i36 - %cmp15.i.i42 = icmp eq i8 %80, 45 + %cmp15.i.i42 = icmp eq i8 %81, 45 br i1 %cmp15.i.i42, label %land.lhs.true.i.i50, label %if.else32.i.i43 land.lhs.true.i.i50: ; preds = %if.else.i.i41 @@ -2197,46 +2198,42 @@ land.lhs.true.i.i50: ; preds = %if.else.i.i41 br i1 %cmp18.i.i52, label %if.then20.i.i53, label %if.else32.i.i43 if.then20.i.i53: ; preds = %land.lhs.true.i.i50 - %cmp24.not.i.i55 = icmp ult i8 %76, %79 + %cmp24.not.i.i55 = icmp ult i8 %76, %80 br i1 %cmp24.not.i.i55, label %if.end39.i.i46, label %land.lhs.true26.i.i56 land.lhs.true26.i.i56: ; preds = %if.then20.i.i53 - %81 = load i8, ptr %add.ptr17.i.i51, align 1, !tbaa !8 - %cmp28.not.i.i57 = icmp ult i8 %81, %76 - br i1 %cmp28.not.i.i57, label %if.end39.i.i46, label %matchbracketclass.exit.i31 + %82 = load i8, ptr %add.ptr17.i.i51, align 1, !tbaa !8 + %cmp28.not.i.i57 = icmp ult i8 %82, %76 + br i1 %cmp28.not.i.i57, label %if.end39.i.i46, label %matchbracketclass.exit.i31.loopexit if.else32.i.i43: ; preds = %land.lhs.true.i.i50, %if.else.i.i41 - %cmp34.i.i45 = icmp eq i8 %76, %79 - br i1 %cmp34.i.i45, label %matchbracketclass.exit.i31, label %if.end39.i.i46 + %cmp34.i.i45 = icmp eq i8 %76, %80 + br i1 %cmp34.i.i45, label %matchbracketclass.exit.i31.loopexit, label %if.end39.i.i46 if.end39.i.i46: ; preds = %if.else32.i.i43, %land.lhs.true26.i.i56, %if.then20.i.i53, %if.then8.i.i58 %p.addr.2.i.i47 = phi ptr [ %incdec.ptr9.i.i40, %if.then8.i.i58 ], [ %add.ptr17.i.i51, %land.lhs.true26.i.i56 ], [ %add.ptr17.i.i51, %if.then20.i.i53 ], [ %incdec.ptr263.i.i37, %if.else32.i.i43 ] %incdec.ptr2.i.i48 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i47, i64 1 %cmp3.i.i49 = icmp ult ptr %incdec.ptr2.i.i48, %add.ptr4.i24 - br i1 %cmp3.i.i49, label %while.body.i.i36, label %matchbracketclass.exit.i31, !llvm.loop !43 + br i1 %cmp3.i.i49, label %while.body.i.i36, label %matchbracketclass.exit.i31.loopexit, !llvm.loop !43 -matchbracketclass.exit.i31: ; preds = %if.end39.i.i46, %if.else32.i.i43, %land.lhs.true26.i.i56, %if.then8.i.i58, %sw.bb3.i23 - %retval.0.in.i.i32 = phi i1 [ %cmp.i.i26, %sw.bb3.i23 ], [ %not.cmp.i.i28, %if.then8.i.i58 ], [ %not.cmp.i.i28, %land.lhs.true26.i.i56 ], [ %not.cmp.i.i28, %if.else32.i.i43 ], [ %cmp.i.i26, %if.end39.i.i46 ] - %retval.0.i.i33 = zext i1 %retval.0.in.i.i32 to i32 - br label %singlematch.exit70 +matchbracketclass.exit.i31.loopexit: ; preds = %if.then8.i.i58, %land.lhs.true26.i.i56, %if.else32.i.i43, %if.end39.i.i46 + %retval.0.in.i.i32.ph = phi i1 [ %cmp.i.i26, %if.end39.i.i46 ], [ %not.cmp.i.i28, %if.else32.i.i43 ], [ %not.cmp.i.i28, %land.lhs.true26.i.i56 ], [ %not.cmp.i.i28, %if.then8.i.i58 ] + br i1 %retval.0.in.i.i32.ph, label %while.body.i321, label %while.end.i sw.default.i66: ; preds = %land.rhs.i - %cmp.i68 = icmp eq i8 %76, %75 - %conv7.i69 = zext i1 %cmp.i68 to i32 - br label %singlematch.exit70 + %cmp.i68.not = icmp eq i8 %76, %75 + br i1 %cmp.i68.not, label %while.body.i321, label %while.end.i -singlematch.exit70: ; preds = %sw.bb1.i62, %matchbracketclass.exit.i31, %sw.default.i66 - %retval.0.i34 = phi i32 [ %conv7.i69, %sw.default.i66 ], [ %retval.0.i.i33, %matchbracketclass.exit.i31 ], [ %call.i65, %sw.bb1.i62 ] - %tobool.not.i320 = icmp eq i32 %retval.0.i34, 0 - br i1 %tobool.not.i320, label %while.end.i, label %while.body.i321 +singlematch.exit70: ; preds = %sw.bb3.i23 + br i1 %cmp.i.i26, label %while.body.i321, label %while.end.i -while.body.i321: ; preds = %land.rhs.i, %singlematch.exit70 +while.body.i321: ; preds = %matchbracketclass.exit.i31.loopexit, %sw.bb1.i62, %sw.default.i66, %land.rhs.i, %singlematch.exit70 %inc.i322 = add nuw i64 %i.0.i458, 1 %exitcond513.not = icmp eq i64 %inc.i322, %74 br i1 %exitcond513.not, label %while.end.i, label %land.rhs.i, !llvm.loop !44 -while.end.i: ; preds = %while.body.i321, %singlematch.exit70, %while.cond.i.preheader - %i.0.i.lcssa = phi i64 [ 0, %while.cond.i.preheader ], [ %74, %while.body.i321 ], [ %i.0.i458, %singlematch.exit70 ] +while.end.i: ; preds = %while.body.i321, %singlematch.exit70, %sw.default.i66, %sw.bb1.i62, %matchbracketclass.exit.i31.loopexit, %while.cond.i.preheader + %i.0.i.lcssa = phi i64 [ 0, %while.cond.i.preheader ], [ %i.0.i458, %matchbracketclass.exit.i31.loopexit ], [ %i.0.i458, %sw.bb1.i62 ], [ %i.0.i458, %sw.default.i66 ], [ %74, %while.body.i321 ], [ %i.0.i458, %singlematch.exit70 ] %add.ptr7.i = getelementptr inbounds nuw i8, ptr %retval.0.i296, i64 1 br label %while.cond2.i @@ -2262,9 +2259,9 @@ cond.true97: ; preds = %sw.bb95 br i1 %cmp.i327452, label %land.rhs.i342.preheader, label %while.end.i328 land.rhs.i342.preheader: ; preds = %cond.true97 - %82 = xor i64 %s.addr.0.ph.lcssa506510, -1 - %83 = add i64 %.lcssa491509, %82 - %84 = load i8, ptr %p.addr.0, align 1, !tbaa !8 + %83 = xor i64 %s.addr.0.ph.lcssa506510, -1 + %84 = add i64 %.lcssa491509, %83 + %85 = load i8, ptr %p.addr.0, align 1, !tbaa !8 %add.ptr4.i72 = getelementptr inbounds i8, ptr %retval.0.i296, i64 -1 %add.ptr.i.i73 = getelementptr inbounds nuw i8, ptr %p.addr.0, i64 1 br label %land.rhs.i342 @@ -2272,46 +2269,47 @@ land.rhs.i342.preheader: ; preds = %cond.true97 land.rhs.i342: ; preds = %while.body.i346, %land.rhs.i342.preheader %i.0.i324453 = phi i64 [ %inc.i347, %while.body.i346 ], [ 0, %land.rhs.i342.preheader ] %add.ptr.i325454 = getelementptr inbounds i8, ptr %add.ptr84, i64 %i.0.i324453 - %85 = load i8, ptr %add.ptr.i325454, align 1, !tbaa !8 - %conv.i343 = zext i8 %85 to i32 - switch i8 %84, label %sw.default.i114 [ + %86 = load i8, ptr %add.ptr.i325454, align 1, !tbaa !8 + %conv.i343 = zext i8 %86 to i32 + switch i8 %85, label %sw.default.i114 [ i8 46, label %while.body.i346 i8 37, label %sw.bb1.i110 i8 91, label %sw.bb3.i71 ] sw.bb1.i110: ; preds = %land.rhs.i342 - %86 = load i8, ptr %add.ptr.i.i73, align 1, !tbaa !8 - %conv2.i112 = zext i8 %86 to i32 + %87 = load i8, ptr %add.ptr.i.i73, align 1, !tbaa !8 + %conv2.i112 = zext i8 %87 to i32 %call.i113 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i343, i32 noundef %conv2.i112), !range !42 - br label %singlematch.exit118 + %88 = icmp eq i32 %call.i113, 0 + br i1 %88, label %while.end.i328, label %while.body.i346 sw.bb3.i71: ; preds = %land.rhs.i342 - %87 = load i8, ptr %add.ptr.i.i73, align 1, !tbaa !8 - %cmp.i.i74 = icmp eq i8 %87, 94 + %89 = load i8, ptr %add.ptr.i.i73, align 1, !tbaa !8 + %cmp.i.i74 = icmp eq i8 %89, 94 %spec.select.i.i75 = select i1 %cmp.i.i74, ptr %add.ptr.i.i73, ptr %p.addr.0 %not.cmp.i.i76 = xor i1 %cmp.i.i74, true %incdec.ptr260.i.i77 = getelementptr inbounds nuw i8, ptr %spec.select.i.i75, i64 1 %cmp361.i.i78 = icmp ult ptr %incdec.ptr260.i.i77, %add.ptr4.i72 - br i1 %cmp361.i.i78, label %while.body.i.i84, label %matchbracketclass.exit.i79 + br i1 %cmp361.i.i78, label %while.body.i.i84, label %singlematch.exit118 while.body.i.i84: ; preds = %sw.bb3.i71, %if.end39.i.i94 %incdec.ptr263.i.i85 = phi ptr [ %incdec.ptr2.i.i96, %if.end39.i.i94 ], [ %incdec.ptr260.i.i77, %sw.bb3.i71 ] %p.addr.162.i.i86 = phi ptr [ %p.addr.2.i.i95, %if.end39.i.i94 ], [ %spec.select.i.i75, %sw.bb3.i71 ] - %88 = load i8, ptr %incdec.ptr263.i.i85, align 1, !tbaa !8 - %cmp6.i.i87 = icmp eq i8 %88, 37 + %90 = load i8, ptr %incdec.ptr263.i.i85, align 1, !tbaa !8 + %cmp6.i.i87 = icmp eq i8 %90, 37 %incdec.ptr9.i.i88 = getelementptr inbounds nuw i8, ptr %p.addr.162.i.i86, i64 2 - %89 = load i8, ptr %incdec.ptr9.i.i88, align 1, !tbaa !8 + %91 = load i8, ptr %incdec.ptr9.i.i88, align 1, !tbaa !8 br i1 %cmp6.i.i87, label %if.then8.i.i106, label %if.else.i.i89 if.then8.i.i106: ; preds = %while.body.i.i84 - %conv10.i.i107 = zext i8 %89 to i32 + %conv10.i.i107 = zext i8 %91 to i32 %call.i.i108 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i343, i32 noundef %conv10.i.i107), !range !42 %tobool.not.i.i109 = icmp eq i32 %call.i.i108, 0 - br i1 %tobool.not.i.i109, label %if.end39.i.i94, label %matchbracketclass.exit.i79 + br i1 %tobool.not.i.i109, label %if.end39.i.i94, label %matchbracketclass.exit.i79.loopexit if.else.i.i89: ; preds = %while.body.i.i84 - %cmp15.i.i90 = icmp eq i8 %89, 45 + %cmp15.i.i90 = icmp eq i8 %91, 45 br i1 %cmp15.i.i90, label %land.lhs.true.i.i98, label %if.else32.i.i91 land.lhs.true.i.i98: ; preds = %if.else.i.i89 @@ -2320,46 +2318,42 @@ land.lhs.true.i.i98: ; preds = %if.else.i.i89 br i1 %cmp18.i.i100, label %if.then20.i.i101, label %if.else32.i.i91 if.then20.i.i101: ; preds = %land.lhs.true.i.i98 - %cmp24.not.i.i103 = icmp ult i8 %85, %88 + %cmp24.not.i.i103 = icmp ult i8 %86, %90 br i1 %cmp24.not.i.i103, label %if.end39.i.i94, label %land.lhs.true26.i.i104 land.lhs.true26.i.i104: ; preds = %if.then20.i.i101 - %90 = load i8, ptr %add.ptr17.i.i99, align 1, !tbaa !8 - %cmp28.not.i.i105 = icmp ult i8 %90, %85 - br i1 %cmp28.not.i.i105, label %if.end39.i.i94, label %matchbracketclass.exit.i79 + %92 = load i8, ptr %add.ptr17.i.i99, align 1, !tbaa !8 + %cmp28.not.i.i105 = icmp ult i8 %92, %86 + br i1 %cmp28.not.i.i105, label %if.end39.i.i94, label %matchbracketclass.exit.i79.loopexit if.else32.i.i91: ; preds = %land.lhs.true.i.i98, %if.else.i.i89 - %cmp34.i.i93 = icmp eq i8 %85, %88 - br i1 %cmp34.i.i93, label %matchbracketclass.exit.i79, label %if.end39.i.i94 + %cmp34.i.i93 = icmp eq i8 %86, %90 + br i1 %cmp34.i.i93, label %matchbracketclass.exit.i79.loopexit, label %if.end39.i.i94 if.end39.i.i94: ; preds = %if.else32.i.i91, %land.lhs.true26.i.i104, %if.then20.i.i101, %if.then8.i.i106 %p.addr.2.i.i95 = phi ptr [ %incdec.ptr9.i.i88, %if.then8.i.i106 ], [ %add.ptr17.i.i99, %land.lhs.true26.i.i104 ], [ %add.ptr17.i.i99, %if.then20.i.i101 ], [ %incdec.ptr263.i.i85, %if.else32.i.i91 ] %incdec.ptr2.i.i96 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i95, i64 1 %cmp3.i.i97 = icmp ult ptr %incdec.ptr2.i.i96, %add.ptr4.i72 - br i1 %cmp3.i.i97, label %while.body.i.i84, label %matchbracketclass.exit.i79, !llvm.loop !43 + br i1 %cmp3.i.i97, label %while.body.i.i84, label %matchbracketclass.exit.i79.loopexit, !llvm.loop !43 -matchbracketclass.exit.i79: ; preds = %if.end39.i.i94, %if.else32.i.i91, %land.lhs.true26.i.i104, %if.then8.i.i106, %sw.bb3.i71 - %retval.0.in.i.i80 = phi i1 [ %cmp.i.i74, %sw.bb3.i71 ], [ %not.cmp.i.i76, %if.then8.i.i106 ], [ %not.cmp.i.i76, %land.lhs.true26.i.i104 ], [ %not.cmp.i.i76, %if.else32.i.i91 ], [ %cmp.i.i74, %if.end39.i.i94 ] - %retval.0.i.i81 = zext i1 %retval.0.in.i.i80 to i32 - br label %singlematch.exit118 +matchbracketclass.exit.i79.loopexit: ; preds = %if.then8.i.i106, %land.lhs.true26.i.i104, %if.else32.i.i91, %if.end39.i.i94 + %retval.0.in.i.i80.ph = phi i1 [ %cmp.i.i74, %if.end39.i.i94 ], [ %not.cmp.i.i76, %if.else32.i.i91 ], [ %not.cmp.i.i76, %land.lhs.true26.i.i104 ], [ %not.cmp.i.i76, %if.then8.i.i106 ] + br i1 %retval.0.in.i.i80.ph, label %while.body.i346, label %while.end.i328 sw.default.i114: ; preds = %land.rhs.i342 - %cmp.i116 = icmp eq i8 %85, %84 - %conv7.i117 = zext i1 %cmp.i116 to i32 - br label %singlematch.exit118 + %cmp.i116.not = icmp eq i8 %86, %85 + br i1 %cmp.i116.not, label %while.body.i346, label %while.end.i328 -singlematch.exit118: ; preds = %sw.bb1.i110, %matchbracketclass.exit.i79, %sw.default.i114 - %retval.0.i82 = phi i32 [ %conv7.i117, %sw.default.i114 ], [ %retval.0.i.i81, %matchbracketclass.exit.i79 ], [ %call.i113, %sw.bb1.i110 ] - %tobool.not.i345 = icmp eq i32 %retval.0.i82, 0 - br i1 %tobool.not.i345, label %while.end.i328, label %while.body.i346 +singlematch.exit118: ; preds = %sw.bb3.i71 + br i1 %cmp.i.i74, label %while.body.i346, label %while.end.i328 -while.body.i346: ; preds = %land.rhs.i342, %singlematch.exit118 +while.body.i346: ; preds = %matchbracketclass.exit.i79.loopexit, %sw.bb1.i110, %sw.default.i114, %land.rhs.i342, %singlematch.exit118 %inc.i347 = add nuw i64 %i.0.i324453, 1 - %exitcond.not = icmp eq i64 %inc.i347, %83 + %exitcond.not = icmp eq i64 %inc.i347, %84 br i1 %exitcond.not, label %while.end.i328, label %land.rhs.i342, !llvm.loop !44 -while.end.i328: ; preds = %while.body.i346, %singlematch.exit118, %cond.true97 - %i.0.i324.lcssa = phi i64 [ 0, %cond.true97 ], [ %83, %while.body.i346 ], [ %i.0.i324453, %singlematch.exit118 ] +while.end.i328: ; preds = %while.body.i346, %singlematch.exit118, %sw.default.i114, %sw.bb1.i110, %matchbracketclass.exit.i79.loopexit, %cond.true97 + %i.0.i324.lcssa = phi i64 [ 0, %cond.true97 ], [ %i.0.i324453, %matchbracketclass.exit.i79.loopexit ], [ %i.0.i324453, %sw.bb1.i110 ], [ %i.0.i324453, %sw.default.i114 ], [ %84, %while.body.i346 ], [ %i.0.i324453, %singlematch.exit118 ] %add.ptr7.i336 = getelementptr inbounds nuw i8, ptr %retval.0.i296, i64 1 br label %while.cond2.i329 @@ -2375,7 +2369,7 @@ while.body5.i334: ; preds = %while.cond2.i329 %dec.i339 = add nsw i64 %i.1.i330, -1 br i1 %tobool9.not.i338, label %while.cond2.i329, label %return, !llvm.loop !45 -for.cond.i: ; preds = %land.lhs.true.i356, %singlematch.exit166 +for.cond.i: ; preds = %matchbracketclass.exit.i127.loopexit, %sw.bb1.i158, %sw.default.i162, %land.lhs.true.i356, %singlematch.exit166 %incdec.ptr.i359 = getelementptr inbounds nuw i8, ptr %s.addr.0.i449, i64 1 %call.i351 = tail call fastcc ptr @match(ptr noundef nonnull %ms, ptr noundef nonnull %incdec.ptr.i359, ptr noundef nonnull %add.ptr.i350) %cmp.not.i352 = icmp eq ptr %call.i351, null @@ -2383,52 +2377,53 @@ for.cond.i: ; preds = %land.lhs.true.i356, if.else.i354: ; preds = %if.else.i354.preheader, %for.cond.i %s.addr.0.i449 = phi ptr [ %incdec.ptr.i359, %for.cond.i ], [ %s.addr.0.ph.ph, %if.else.i354.preheader ] - %91 = load ptr, ptr %src_end.i, align 8, !tbaa !25 - %cmp1.i = icmp ult ptr %s.addr.0.i449, %91 + %93 = load ptr, ptr %src_end.i, align 8, !tbaa !25 + %cmp1.i = icmp ult ptr %s.addr.0.i449, %93 br i1 %cmp1.i, label %land.lhs.true.i356, label %return land.lhs.true.i356: ; preds = %if.else.i354 - %92 = load i8, ptr %s.addr.0.i449, align 1, !tbaa !8 - %conv.i357 = zext i8 %92 to i32 - %93 = load i8, ptr %p.addr.0, align 1, !tbaa !8 - switch i8 %93, label %sw.default.i162 [ + %94 = load i8, ptr %s.addr.0.i449, align 1, !tbaa !8 + %conv.i357 = zext i8 %94 to i32 + %95 = load i8, ptr %p.addr.0, align 1, !tbaa !8 + switch i8 %95, label %sw.default.i162 [ i8 46, label %for.cond.i i8 37, label %sw.bb1.i158 i8 91, label %sw.bb3.i119 ] sw.bb1.i158: ; preds = %land.lhs.true.i356 - %94 = load i8, ptr %add.ptr.i.i121, align 1, !tbaa !8 - %conv2.i160 = zext i8 %94 to i32 + %96 = load i8, ptr %add.ptr.i.i121, align 1, !tbaa !8 + %conv2.i160 = zext i8 %96 to i32 %call.i161 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i357, i32 noundef %conv2.i160), !range !42 - br label %singlematch.exit166 + %97 = icmp eq i32 %call.i161, 0 + br i1 %97, label %return, label %for.cond.i sw.bb3.i119: ; preds = %land.lhs.true.i356 - %95 = load i8, ptr %add.ptr.i.i121, align 1, !tbaa !8 - %cmp.i.i122 = icmp eq i8 %95, 94 + %98 = load i8, ptr %add.ptr.i.i121, align 1, !tbaa !8 + %cmp.i.i122 = icmp eq i8 %98, 94 %spec.select.i.i123 = select i1 %cmp.i.i122, ptr %add.ptr.i.i121, ptr %p.addr.0 %not.cmp.i.i124 = xor i1 %cmp.i.i122, true %incdec.ptr260.i.i125 = getelementptr inbounds nuw i8, ptr %spec.select.i.i123, i64 1 %cmp361.i.i126 = icmp ult ptr %incdec.ptr260.i.i125, %add.ptr4.i120 - br i1 %cmp361.i.i126, label %while.body.i.i132, label %matchbracketclass.exit.i127 + br i1 %cmp361.i.i126, label %while.body.i.i132, label %singlematch.exit166 while.body.i.i132: ; preds = %sw.bb3.i119, %if.end39.i.i142 %incdec.ptr263.i.i133 = phi ptr [ %incdec.ptr2.i.i144, %if.end39.i.i142 ], [ %incdec.ptr260.i.i125, %sw.bb3.i119 ] %p.addr.162.i.i134 = phi ptr [ %p.addr.2.i.i143, %if.end39.i.i142 ], [ %spec.select.i.i123, %sw.bb3.i119 ] - %96 = load i8, ptr %incdec.ptr263.i.i133, align 1, !tbaa !8 - %cmp6.i.i135 = icmp eq i8 %96, 37 + %99 = load i8, ptr %incdec.ptr263.i.i133, align 1, !tbaa !8 + %cmp6.i.i135 = icmp eq i8 %99, 37 %incdec.ptr9.i.i136 = getelementptr inbounds nuw i8, ptr %p.addr.162.i.i134, i64 2 - %97 = load i8, ptr %incdec.ptr9.i.i136, align 1, !tbaa !8 + %100 = load i8, ptr %incdec.ptr9.i.i136, align 1, !tbaa !8 br i1 %cmp6.i.i135, label %if.then8.i.i154, label %if.else.i.i137 if.then8.i.i154: ; preds = %while.body.i.i132 - %conv10.i.i155 = zext i8 %97 to i32 + %conv10.i.i155 = zext i8 %100 to i32 %call.i.i156 = tail call fastcc i32 @match_class(i32 noundef range(i32 0, 256) %conv.i357, i32 noundef %conv10.i.i155), !range !42 %tobool.not.i.i157 = icmp eq i32 %call.i.i156, 0 - br i1 %tobool.not.i.i157, label %if.end39.i.i142, label %matchbracketclass.exit.i127 + br i1 %tobool.not.i.i157, label %if.end39.i.i142, label %matchbracketclass.exit.i127.loopexit if.else.i.i137: ; preds = %while.body.i.i132 - %cmp15.i.i138 = icmp eq i8 %97, 45 + %cmp15.i.i138 = icmp eq i8 %100, 45 br i1 %cmp15.i.i138, label %land.lhs.true.i.i146, label %if.else32.i.i139 land.lhs.true.i.i146: ; preds = %if.else.i.i137 @@ -2437,38 +2432,34 @@ land.lhs.true.i.i146: ; preds = %if.else.i.i137 br i1 %cmp18.i.i148, label %if.then20.i.i149, label %if.else32.i.i139 if.then20.i.i149: ; preds = %land.lhs.true.i.i146 - %cmp24.not.i.i151 = icmp ult i8 %92, %96 + %cmp24.not.i.i151 = icmp ult i8 %94, %99 br i1 %cmp24.not.i.i151, label %if.end39.i.i142, label %land.lhs.true26.i.i152 land.lhs.true26.i.i152: ; preds = %if.then20.i.i149 - %98 = load i8, ptr %add.ptr17.i.i147, align 1, !tbaa !8 - %cmp28.not.i.i153 = icmp ult i8 %98, %92 - br i1 %cmp28.not.i.i153, label %if.end39.i.i142, label %matchbracketclass.exit.i127 + %101 = load i8, ptr %add.ptr17.i.i147, align 1, !tbaa !8 + %cmp28.not.i.i153 = icmp ult i8 %101, %94 + br i1 %cmp28.not.i.i153, label %if.end39.i.i142, label %matchbracketclass.exit.i127.loopexit if.else32.i.i139: ; preds = %land.lhs.true.i.i146, %if.else.i.i137 - %cmp34.i.i141 = icmp eq i8 %92, %96 - br i1 %cmp34.i.i141, label %matchbracketclass.exit.i127, label %if.end39.i.i142 + %cmp34.i.i141 = icmp eq i8 %94, %99 + br i1 %cmp34.i.i141, label %matchbracketclass.exit.i127.loopexit, label %if.end39.i.i142 if.end39.i.i142: ; preds = %if.else32.i.i139, %land.lhs.true26.i.i152, %if.then20.i.i149, %if.then8.i.i154 %p.addr.2.i.i143 = phi ptr [ %incdec.ptr9.i.i136, %if.then8.i.i154 ], [ %add.ptr17.i.i147, %land.lhs.true26.i.i152 ], [ %add.ptr17.i.i147, %if.then20.i.i149 ], [ %incdec.ptr263.i.i133, %if.else32.i.i139 ] %incdec.ptr2.i.i144 = getelementptr inbounds nuw i8, ptr %p.addr.2.i.i143, i64 1 %cmp3.i.i145 = icmp ult ptr %incdec.ptr2.i.i144, %add.ptr4.i120 - br i1 %cmp3.i.i145, label %while.body.i.i132, label %matchbracketclass.exit.i127, !llvm.loop !43 + br i1 %cmp3.i.i145, label %while.body.i.i132, label %matchbracketclass.exit.i127.loopexit, !llvm.loop !43 -matchbracketclass.exit.i127: ; preds = %if.end39.i.i142, %if.else32.i.i139, %land.lhs.true26.i.i152, %if.then8.i.i154, %sw.bb3.i119 - %retval.0.in.i.i128 = phi i1 [ %cmp.i.i122, %sw.bb3.i119 ], [ %not.cmp.i.i124, %if.then8.i.i154 ], [ %not.cmp.i.i124, %land.lhs.true26.i.i152 ], [ %not.cmp.i.i124, %if.else32.i.i139 ], [ %cmp.i.i122, %if.end39.i.i142 ] - %retval.0.i.i129 = zext i1 %retval.0.in.i.i128 to i32 - br label %singlematch.exit166 +matchbracketclass.exit.i127.loopexit: ; preds = %if.then8.i.i154, %land.lhs.true26.i.i152, %if.else32.i.i139, %if.end39.i.i142 + %retval.0.in.i.i128.ph = phi i1 [ %cmp.i.i122, %if.end39.i.i142 ], [ %not.cmp.i.i124, %if.else32.i.i139 ], [ %not.cmp.i.i124, %land.lhs.true26.i.i152 ], [ %not.cmp.i.i124, %if.then8.i.i154 ] + br i1 %retval.0.in.i.i128.ph, label %for.cond.i, label %return sw.default.i162: ; preds = %land.lhs.true.i356 - %cmp.i164 = icmp eq i8 %92, %93 - %conv7.i165 = zext i1 %cmp.i164 to i32 - br label %singlematch.exit166 + %cmp.i164.not = icmp eq i8 %94, %95 + br i1 %cmp.i164.not, label %for.cond.i, label %return -singlematch.exit166: ; preds = %sw.bb1.i158, %matchbracketclass.exit.i127, %sw.default.i162 - %retval.0.i130 = phi i32 [ %conv7.i165, %sw.default.i162 ], [ %retval.0.i.i129, %matchbracketclass.exit.i127 ], [ %call.i161, %sw.bb1.i158 ] - %tobool.not.i358 = icmp eq i32 %retval.0.i130, 0 - br i1 %tobool.not.i358, label %return, label %for.cond.i +singlematch.exit166: ; preds = %sw.bb3.i119 + br i1 %cmp.i.i122, label %for.cond.i, label %return sw.default105: ; preds = %land.end br i1 %72, label %init.outer.outer.backedge, label %return @@ -2478,8 +2469,8 @@ init.outer.outer.backedge: ; preds = %sw.default105, %if. %s.addr.0.ph.ph.be = phi ptr [ %add.ptr.i275, %if.end55 ], [ %add.ptr22.i, %if.end ], [ %add.ptr84, %sw.default105 ] br label %init.outer.outer -return: ; preds = %sw.default105, %land.lhs.true.i273, %check_capture.exit.i, %if.else.i, %if.end.i204, %land.lhs.true, %matchbracketclass.exit265, %matchbracketclass.exit, %cond.end, %init, %if.end30.i, %singlematch.exit166, %if.else.i354, %for.cond.i, %while.body5.i334, %while.cond2.i329, %while.body5.i, %while.cond2.i, %sw.bb95, %for.cond.i.preheader, %if.then64, %if.then.i202, %capture_to_close.exit, %if.then9.i189, %if.end.i181, %if.then9.i, %if.end.i - %retval.4 = phi ptr [ %cond70, %if.then64 ], [ %call6.i, %if.end.i ], [ null, %if.then9.i ], [ %call6.i187, %if.end.i181 ], [ null, %if.then9.i189 ], [ %call4.i, %capture_to_close.exit ], [ null, %if.then.i202 ], [ null, %sw.bb95 ], [ %call.i351447, %for.cond.i.preheader ], [ null, %while.cond2.i ], [ %call8.i, %while.body5.i ], [ null, %while.cond2.i329 ], [ %call8.i337, %while.body5.i334 ], [ null, %if.else.i354 ], [ null, %singlematch.exit166 ], [ %call.i351, %for.cond.i ], [ null, %if.end30.i ], [ %call86, %land.lhs.true ], [ null, %matchbracketclass.exit ], [ null, %matchbracketclass.exit265 ], [ %s.addr.0.ph.ph, %init ], [ null, %cond.end ], [ null, %if.end.i204 ], [ null, %if.else.i ], [ null, %check_capture.exit.i ], [ null, %land.lhs.true.i273 ], [ null, %sw.default105 ] +return: ; preds = %sw.default105, %land.lhs.true.i273, %check_capture.exit.i, %if.else.i, %if.end.i204, %land.lhs.true, %matchbracketclass.exit265, %matchbracketclass.exit, %cond.end, %init, %if.end30.i, %singlematch.exit166, %if.else.i354, %for.cond.i, %sw.default.i162, %sw.bb1.i158, %matchbracketclass.exit.i127.loopexit, %while.body5.i334, %while.cond2.i329, %while.body5.i, %while.cond2.i, %sw.bb95, %for.cond.i.preheader, %if.then64, %if.then.i202, %capture_to_close.exit, %if.then9.i189, %if.end.i181, %if.then9.i, %if.end.i + %retval.4 = phi ptr [ %cond70, %if.then64 ], [ %call6.i, %if.end.i ], [ null, %if.then9.i ], [ %call6.i187, %if.end.i181 ], [ null, %if.then9.i189 ], [ %call4.i, %capture_to_close.exit ], [ null, %if.then.i202 ], [ null, %sw.bb95 ], [ %call.i351447, %for.cond.i.preheader ], [ null, %while.cond2.i ], [ %call8.i, %while.body5.i ], [ null, %while.cond2.i329 ], [ %call8.i337, %while.body5.i334 ], [ null, %matchbracketclass.exit.i127.loopexit ], [ null, %sw.bb1.i158 ], [ null, %sw.default.i162 ], [ null, %if.else.i354 ], [ null, %singlematch.exit166 ], [ %call.i351, %for.cond.i ], [ null, %if.end30.i ], [ %call86, %land.lhs.true ], [ null, %matchbracketclass.exit ], [ null, %matchbracketclass.exit265 ], [ %s.addr.0.ph.ph, %init ], [ null, %cond.end ], [ null, %if.end.i204 ], [ null, %if.else.i ], [ null, %check_capture.exit.i ], [ null, %land.lhs.true.i273 ], [ null, %sw.default105 ] ret ptr %retval.4 } diff --git a/bench/ruby/optimized/error.ll b/bench/ruby/optimized/error.ll index e5bc638e4c4..a9d94a66454 100644 --- a/bench/ruby/optimized/error.ll +++ b/bench/ruby/optimized/error.ll @@ -5279,12 +5279,12 @@ define internal range(i64 0, 21) i64 @syserr_eqq(i64 noundef %0, i64 noundef %1) %6 = load i64, ptr @id_errno, align 8 %7 = tail call i32 @rb_respond_to(i64 noundef %1, i64 noundef %6) #29 %.not14 = icmp eq i32 %7, 0 - br i1 %.not14, label %30, label %11 + br i1 %.not14, label %29, label %11 8: ; preds = %2 %9 = load i64, ptr @rb_eSystemCallError, align 8 %10 = icmp eq i64 %0, %9 - br i1 %10, label %30, label %11 + br i1 %10, label %29, label %11 11: ; preds = %8, %5 %12 = load i64, ptr @id_errno, align 8 @@ -5303,25 +5303,24 @@ define internal range(i64 0, 21) i64 @syserr_eqq(i64 noundef %0, i64 noundef %1) %20 = tail call i64 @rb_const_get(i64 noundef %0, i64 noundef %19) #29 %21 = and i64 %.013, 1 %.not16 = icmp eq i64 %21, 0 - br i1 %.not16, label %25, label %22 + br i1 %.not16, label %24, label %22 22: ; preds = %18 - %23 = icmp eq i64 %.013, %20 - %24 = zext i1 %23 to i64 + %23 = icmp ne i64 %.013, %20 br label %27 -25: ; preds = %18 - %26 = tail call i64 @rb_equal(i64 noundef %.013, i64 noundef %20) #29 +24: ; preds = %18 + %25 = tail call i64 @rb_equal(i64 noundef %.013, i64 noundef %20) #29 + %26 = icmp eq i64 %25, 0 br label %27 -27: ; preds = %25, %22 - %28 = phi i64 [ %24, %22 ], [ %26, %25 ] - %.not15 = icmp eq i64 %28, 0 - %29 = select i1 %.not15, i64 0, i64 20 - br label %30 +27: ; preds = %24, %22 + %.not15 = phi i1 [ %23, %22 ], [ %26, %24 ] + %28 = select i1 %.not15, i64 0, i64 20 + br label %29 -30: ; preds = %8, %5, %27 - %.0 = phi i64 [ %29, %27 ], [ 0, %5 ], [ 20, %8 ] +29: ; preds = %8, %5, %27 + %.0 = phi i64 [ %28, %27 ], [ 0, %5 ], [ 20, %8 ] ret i64 %.0 } diff --git a/bench/ruby/optimized/gc.ll b/bench/ruby/optimized/gc.ll index b4d0f61b3dd..c761ba91b6a 100644 --- a/bench/ruby/optimized/gc.ll +++ b/bench/ruby/optimized/gc.ll @@ -13915,7 +13915,7 @@ is_pointer_to_heap.exit.thread: ; preds = %60, %heap_page_for_ 137: ; preds = %135 %138 = trunc i64 %136 to i32 %139 = and i32 %138, 31 - switch i32 %139, label %150 [ + switch i32 %139, label %internal_object_p.exit [ i32 27, label %140 i32 0, label %RB_SYMBOL_P.exit i32 30, label %RB_SYMBOL_P.exit @@ -13945,21 +13945,16 @@ is_pointer_to_heap.exit.thread: ; preds = %60, %heap_page_for_ 148: ; preds = %144 %149 = tail call i32 @rb_singleton_class_internal_p(i64 noundef %2) #39 - br label %internal_object_p.exit + %150 = icmp eq i32 %149, 0 + br i1 %150, label %internal_object_p.exit.thread104, label %RB_SYMBOL_P.exit -150: ; preds = %137 +internal_object_p.exit: ; preds = %137 %151 = getelementptr inbounds nuw i8, ptr %51, i64 8 %152 = load i64, ptr %151, align 8 - %.not19.not.i = icmp eq i64 %152, 0 - %.mux.i = zext i1 %.not19.not.i to i32 - br label %internal_object_p.exit + %.not19.not.i.not = icmp eq i64 %152, 0 + br i1 %.not19.not.i.not, label %RB_SYMBOL_P.exit, label %internal_object_p.exit.thread104 -internal_object_p.exit: ; preds = %148, %150 - %.0.i96 = phi i32 [ %149, %148 ], [ %.mux.i, %150 ] - %.not89 = icmp eq i32 %.0.i96, 0 - br i1 %.not89, label %internal_object_p.exit.thread104, label %RB_SYMBOL_P.exit - -internal_object_p.exit.thread104: ; preds = %internal_object_p.exit +internal_object_p.exit.thread104: ; preds = %internal_object_p.exit, %148 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %51, i64 8 %.pre = load i64, ptr %.phi.trans.insert, align 8 %153 = icmp eq i64 %.pre, 0 @@ -14007,8 +14002,8 @@ RSTRING_PTR.exit: ; preds = %163, %170 %173 = add nsw i64 %.1, %172 br label %RB_SYMBOL_P.exit -RB_SYMBOL_P.exit: ; preds = %135, %137, %137, %137, %137, %137, %141, %21, %RSTRING_PTR.exit, %24, %14, %156, %160, %internal_object_p.exit.thread104.thread, %internal_object_p.exit, %154, %is_pointer_to_heap.exit.thread, %127, %8 - %.0 = phi i64 [ %11, %8 ], [ %20, %14 ], [ %31, %24 ], [ %131, %127 ], [ %.1, %internal_object_p.exit ], [ %.1, %154 ], [ %.1, %156 ], [ %.1, %160 ], [ %173, %RSTRING_PTR.exit ], [ %.1, %internal_object_p.exit.thread104.thread ], [ %134, %is_pointer_to_heap.exit.thread ], [ %11, %21 ], [ %.1, %141 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %135 ] +RB_SYMBOL_P.exit: ; preds = %148, %135, %137, %137, %137, %137, %137, %141, %21, %RSTRING_PTR.exit, %24, %14, %156, %160, %internal_object_p.exit.thread104.thread, %internal_object_p.exit, %154, %is_pointer_to_heap.exit.thread, %127, %8 + %.0 = phi i64 [ %11, %8 ], [ %20, %14 ], [ %31, %24 ], [ %131, %127 ], [ %.1, %internal_object_p.exit ], [ %.1, %154 ], [ %.1, %156 ], [ %.1, %160 ], [ %173, %RSTRING_PTR.exit ], [ %.1, %internal_object_p.exit.thread104.thread ], [ %134, %is_pointer_to_heap.exit.thread ], [ %11, %21 ], [ %.1, %141 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %137 ], [ %.1, %135 ], [ %.1, %148 ] ret i64 %.0 } @@ -28818,7 +28813,7 @@ define internal noundef i32 @os_obj_of_i(ptr noundef %0, ptr noundef %1, i64 nou 11: ; preds = %8 %12 = trunc i64 %10 to i32 %13 = and i32 %12, 31 - switch i32 %13, label %29 [ + switch i32 %13, label %internal_object_p.exit [ i32 27, label %14 i32 0, label %internal_object_p.exit.thread i32 30, label %internal_object_p.exit.thread @@ -28855,21 +28850,16 @@ define internal noundef i32 @os_obj_of_i(ptr noundef %0, ptr noundef %1, i64 nou 27: ; preds = %23 %28 = tail call i32 @rb_singleton_class_internal_p(i64 noundef %.028) #39 - br label %internal_object_p.exit + %29 = icmp eq i32 %28, 0 + br i1 %29, label %internal_object_p.exit.thread22, label %internal_object_p.exit.thread -29: ; preds = %11 +internal_object_p.exit: ; preds = %11 %30 = getelementptr inbounds nuw i8, ptr %9, i64 8 %31 = load i64, ptr %30, align 8 - %.not19.not.i = icmp eq i64 %31, 0 - %.mux.i = zext i1 %.not19.not.i to i32 - br label %internal_object_p.exit - -internal_object_p.exit: ; preds = %27, %29 - %.0.i = phi i32 [ %28, %27 ], [ %.mux.i, %29 ] - %.not13 = icmp eq i32 %.0.i, 0 - br i1 %.not13, label %internal_object_p.exit.thread22, label %internal_object_p.exit.thread + %.not19.not.i.not = icmp eq i64 %31, 0 + br i1 %.not19.not.i.not, label %internal_object_p.exit.thread, label %internal_object_p.exit.thread22 -internal_object_p.exit.thread22: ; preds = %23, %18, %internal_object_p.exit +internal_object_p.exit.thread22: ; preds = %27, %23, %18, %internal_object_p.exit %32 = load i64, ptr %7, align 8 %.not14 = icmp eq i64 %32, 0 br i1 %.not14, label %35, label %33 @@ -28908,7 +28898,7 @@ rb_ractor_shareable_p.exit.thread: ; preds = %42, %37, %rb_ractor store i64 %48, ptr %3, align 8 br label %internal_object_p.exit.thread -internal_object_p.exit.thread: ; preds = %8, %11, %11, %11, %11, %11, %15, %internal_object_p.exit, %rb_ractor_shareable_p.exit, %rb_ractor_shareable_p.exit.thread, %33 +internal_object_p.exit.thread: ; preds = %27, %8, %11, %11, %11, %11, %11, %15, %internal_object_p.exit, %rb_ractor_shareable_p.exit, %rb_ractor_shareable_p.exit.thread, %33 %49 = add i64 %.028, %2 %.not = icmp eq i64 %49, %5 br i1 %.not, label %._crit_edge, label %8, !llvm.loop !194 diff --git a/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll b/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll index 2ca65d25dce..33d7ca25305 100644 --- a/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll +++ b/bench/rust-analyzer-rs/optimized/573qgtnkdp36rz9h.ll @@ -1132,57 +1132,57 @@ define { i32, i32 } @_ZN3vfs3Vfs7file_id17h0b6c396968d10fa1E(ptr noalias noundef tail call void @llvm.experimental.noalias.scope.decl(metadata !287) %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8, !alias.scope !290, !noalias !291, !noundef !22 - switch i64 %5, label %6 [ + switch i64 %5, label %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit [ i64 0, label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit" - i64 1, label %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit + i64 1, label %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i" ] -6: ; preds = %2 +"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i": ; preds = %2 + %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %7 = load ptr, ptr %6, align 8, !alias.scope !290, !noalias !291, !nonnull !22, !noundef !22 + %8 = tail call noundef zeroext i1 @"_ZN67_$LT$vfs..vfs_path..VfsPathRepr$u20$as$u20$core..cmp..PartialEq$GT$2eq17h40321e497a0fa59dE.llvm.5655766238960710218"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %7), !noalias !290 + br i1 %8, label %14, label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit" + +_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit: ; preds = %2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !294 store i64 0, ptr %3, align 8, !noalias !294 call void @"_ZN63_$LT$vfs..vfs_path..VfsPathRepr$u20$as$u20$core..hash..Hash$GT$4hash17h5d37719b5fcb7280E.llvm.5655766238960710218"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1, ptr noalias noundef nonnull align 8 dereferenceable(8) %3), !noalias !290 - %7 = load i64, ptr %3, align 8, !alias.scope !297, !noalias !294, !noundef !22 + %9 = load i64, ptr %3, align 8, !alias.scope !297, !noalias !294, !noundef !22 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !294 - %8 = call { i64, i64 } @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$12get_index_of17h4986bb8d417055baE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %0, i64 noundef %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) - %9 = extractvalue { i64, i64 } %8, 0 - %10 = extractvalue { i64, i64 } %8, 1 - %11 = trunc i64 %10 to i32 - %.not = icmp eq i64 %9, 0 - br i1 %.not, label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit", label %15 - -_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit: ; preds = %2 - %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %13 = load ptr, ptr %12, align 8, !alias.scope !290, !noalias !291, !nonnull !22, !noundef !22 - %14 = tail call noundef zeroext i1 @"_ZN67_$LT$vfs..vfs_path..VfsPathRepr$u20$as$u20$core..cmp..PartialEq$GT$2eq17h40321e497a0fa59dE.llvm.5655766238960710218"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %13), !noalias !290 - br i1 %14, label %15, label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit" - -15: ; preds = %6, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit - %16 = phi i32 [ %11, %6 ], [ 0, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ] + %10 = call { i64, i64 } @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$12get_index_of17h4986bb8d417055baE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %0, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) + %11 = extractvalue { i64, i64 } %10, 0 + %12 = extractvalue { i64, i64 } %10, 1 + %.not = icmp eq i64 %11, 0 + %13 = trunc i64 %12 to i32 + br i1 %.not, label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit", label %14 + +14: ; preds = %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i", %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit + %15 = phi i32 [ 0, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i" ], [ %13, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ] %.val110.in = getelementptr inbounds nuw i8, ptr %0, i64 72 %.val110 = load i64, ptr %.val110.in, align 8 - %17 = zext i32 %16 to i64 - %18 = icmp ugt i64 %.val110, %17 - br i1 %18, label %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i", label %19, !prof !300 + %16 = zext i32 %15 to i64 + %17 = icmp ugt i64 %.val110, %16 + br i1 %17, label %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i", label %18, !prof !300 -19: ; preds = %15 - call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %17, i64 noundef %.val110, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.33.llvm.12041220681261970885) #22, !noalias !301 +18: ; preds = %14 + call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %16, i64 noundef %.val110, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7855ef78f73ea6488ff6900a1ea4815f.33.llvm.12041220681261970885) #22, !noalias !301 unreachable -"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i": ; preds = %15 +"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i": ; preds = %14 %.val9.in = getelementptr inbounds nuw i8, ptr %0, i64 64 %.val9 = load ptr, ptr %.val9.in, align 8, !nonnull !22, !noundef !22 - %20 = getelementptr inbounds nuw [0 x i8], ptr %.val9, i64 0, i64 %17 - %21 = load i8, ptr %20, align 1, !range !304, !noalias !301, !noundef !22 - %switch.i.i = icmp samesign ult i8 %21, 2 + %19 = getelementptr inbounds nuw [0 x i8], ptr %.val9, i64 0, i64 %16 + %20 = load i8, ptr %19, align 1, !range !304, !noalias !301, !noundef !22 + %switch.i.i = icmp samesign ult i8 %20, 2 %spec.select2.i = zext i1 %switch.i.i to i32 br label %"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit" -"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit": ; preds = %2, %6, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" - %.sroa.33.0.i = phi i32 [ undef, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ], [ %16, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" ], [ undef, %6 ], [ undef, %2 ] - %.sroa.02.0.i = phi i32 [ 0, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ], [ %spec.select2.i, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" ], [ 0, %6 ], [ 0, %2 ] - %22 = insertvalue { i32, i32 } poison, i32 %.sroa.02.0.i, 0 - %23 = insertvalue { i32, i32 } %22, i32 %.sroa.33.0.i, 1 - ret { i32, i32 } %23 +"_ZN4core6option15Option$LT$T$GT$6filter17h7b8d4edcdbf59eabE.exit": ; preds = %2, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i", %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" + %.sroa.33.0.i = phi i32 [ undef, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ], [ %15, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" ], [ undef, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i" ], [ undef, %2 ] + %.sroa.02.0.i = phi i32 [ 0, %_ZN3vfs13path_interner12PathInterner3get17hff490a5fdea2d6faE.exit ], [ %spec.select2.i, %"_ZN3vfs3Vfs7file_id28_$u7b$$u7b$closure$u7d$$u7d$17hafd88f902d402bbaE.exit.i" ], [ 0, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h25449d48e2516cfeE.exit.i" ], [ 0, %2 ] + %21 = insertvalue { i32, i32 } poison, i32 %.sroa.02.0.i, 0 + %22 = insertvalue { i32, i32 } %21, i32 %.sroa.33.0.i, 1 + ret { i32, i32 } %22 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rustfmt-rs/optimized/3sx1t619hmuq0zz7.ll b/bench/rustfmt-rs/optimized/3sx1t619hmuq0zz7.ll index 62ab48aefd0..c95bc7f7ba1 100644 --- a/bench/rustfmt-rs/optimized/3sx1t619hmuq0zz7.ll +++ b/bench/rustfmt-rs/optimized/3sx1t619hmuq0zz7.ll @@ -38339,18 +38339,16 @@ _ZN15rustfmt_nightly7rewrite14RewriteContext7snippet17h7d81c3a187049865E.exit: ; _ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i: ; preds = %213, %211 %.sroa.4.1.i.ph.i.i.i = phi i32 [ %212, %211 ], [ %217, %213 ] - br i1 %187, label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i", label %238 + %238 = icmp eq i32 %.sroa.4.1.i.ph.i.i.i, 1114112 + %or.cond = select i1 %187, i1 true, i1 %238 + br i1 %or.cond, label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i.loopexit", label %240 .thread.i.i.i: ; preds = %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.i.i", %.lr.ph.i.i138 %.lcssa4.i = phi i1 [ %185, %.lr.ph.i.i138 ], [ %247, %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.i.i" ] - %spec.select104 = zext i1 %.lcssa4.i to i64 + %239 = xor i1 %.lcssa4.i, true br label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i" -238: ; preds = %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i - %239 = icmp eq i32 %.sroa.4.1.i.ph.i.i.i, 1114112 - br i1 %239, label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i", label %240 - -240: ; preds = %238 +240: ; preds = %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i %241 = icmp samesign ult i32 %.sroa.4.1.i.ph.i.i.i, 128 br i1 %241, label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.i.i", label %242 @@ -38390,18 +38388,22 @@ thread-pre-split: ; preds = %.invoke %.pr = load i64, ptr %35, align 8, !noalias !5813 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %35, i64 8 %.pre = load i64, ptr %.phi.trans.insert, align 8, !noalias !5813 + %261 = icmp eq i64 %.pr, 0 + br label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i" + +"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i.loopexit": ; preds = %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i + %switch.ph = xor i1 %187, true br label %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i" -"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i": ; preds = %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i, %238, %.thread.i.i.i, %.preheader.i.i, %thread-pre-split - %261 = phi i64 [ %.pre, %thread-pre-split ], [ undef, %.preheader.i.i ], [ 0, %.thread.i.i.i ], [ %188, %238 ], [ %188, %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i ] - %262 = phi i64 [ %.pr, %thread-pre-split ], [ 0, %.preheader.i.i ], [ %spec.select104, %.thread.i.i.i ], [ 1, %_ZN4core3str11validations23next_code_point_reverse17h6c1ce942d36db8edE.exit.thread.i.i.i ], [ 0, %238 ] +"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i": ; preds = %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i.loopexit", %.thread.i.i.i, %.preheader.i.i, %thread-pre-split + %262 = phi i64 [ %.pre, %thread-pre-split ], [ undef, %.preheader.i.i ], [ 0, %.thread.i.i.i ], [ %188, %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i.loopexit" ] + %switch = phi i1 [ %261, %thread-pre-split ], [ true, %.preheader.i.i ], [ %239, %.thread.i.i.i ], [ %switch.ph, %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i.loopexit" ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35), !noalias !5813 call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %34), !noalias !5813 - %switch = icmp eq i64 %262, 0 br i1 %switch, label %.invoke102, label %263 263: ; preds = %"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hb4a8c03155d43c77E.exit.thread7.i.i" - %264 = add i64 %261, 2 + %264 = add i64 %262, 2 %265 = icmp eq i64 %264, 0 br i1 %265, label %273, label %266 diff --git a/bench/slurm/optimized/preempt.ll b/bench/slurm/optimized/preempt.ll index b2e9a560b29..3fe6228e104 100644 --- a/bench/slurm/optimized/preempt.ll +++ b/bench/slurm/optimized/preempt.ll @@ -513,128 +513,122 @@ define i32 @slurm_job_preempt(ptr noundef %0, ptr noundef %1, i16 noundef zeroex %10 = getelementptr inbounds nuw i8, ptr %0, i64 384 %11 = load ptr, ptr %10, align 8 %.not.i = icmp eq ptr %11, null - br i1 %.not.i, label %16, label %12 + br i1 %.not.i, label %_job_check_grace.exit, label %12 12: ; preds = %9 %13 = tail call i32 @list_for_each_nobreak(ptr noundef nonnull %11, ptr noundef nonnull @_job_check_grace_internal, ptr noundef %1) #8 - %14 = icmp slt i32 %13, 1 - %15 = zext i1 %14 to i32 - br label %_job_check_grace.exit + %14 = icmp sgt i32 %13, 0 + br i1 %14, label %17, label %.critedge -16: ; preds = %9 - %17 = tail call i32 @_job_check_grace_internal(ptr noundef nonnull %0, ptr noundef %1) - %.lobit.i = lshr i32 %17, 31 - br label %_job_check_grace.exit +_job_check_grace.exit: ; preds = %9 + %15 = tail call i32 @_job_check_grace_internal(ptr noundef nonnull %0, ptr noundef %1) + %16 = icmp sgt i32 %15, -1 + br i1 %16, label %17, label %.critedge -_job_check_grace.exit: ; preds = %12, %16 - %.0.i = phi i32 [ %15, %12 ], [ %.lobit.i, %16 ] - %.not = icmp eq i32 %.0.i, 0 - br i1 %.not, label %18, label %.critedge +17: ; preds = %12, %_job_check_grace.exit + %18 = load i8, ptr @preempt_send_user_signal, align 1 + %19 = trunc i8 %18 to i1 + br i1 %19, label %20, label %25 -18: ; preds = %_job_check_grace.exit - %19 = load i8, ptr @preempt_send_user_signal, align 1 - %20 = trunc i8 %19 to i1 - br i1 %20, label %21, label %26 - -21: ; preds = %18 - %22 = load ptr, ptr %10, align 8 - %.not32 = icmp eq ptr %22, null - br i1 %.not32, label %25, label %23 +20: ; preds = %17 + %21 = load ptr, ptr %10, align 8 + %.not32 = icmp eq ptr %21, null + br i1 %.not32, label %24, label %22 -23: ; preds = %21 - %24 = call i32 @list_for_each(ptr noundef nonnull %22, ptr noundef nonnull @_job_warn_signal_wrapper, ptr noundef nonnull %5) #8 - br label %26 +22: ; preds = %20 + %23 = call i32 @list_for_each(ptr noundef nonnull %21, ptr noundef nonnull @_job_warn_signal_wrapper, ptr noundef nonnull %5) #8 + br label %25 -25: ; preds = %21 +24: ; preds = %20 tail call void @send_job_warn_signal(ptr noundef nonnull %0, i1 noundef zeroext %3) #8 - br label %26 + br label %25 -26: ; preds = %23, %25, %18 - switch i16 %2, label %48 [ - i16 8, label %27 - i16 2, label %39 +25: ; preds = %22, %24, %17 + switch i16 %2, label %47 [ + i16 8, label %26 + i16 2, label %38 ] -27: ; preds = %26 - %28 = load ptr, ptr %10, align 8 - %.not33 = icmp eq ptr %28, null - br i1 %.not33, label %31, label %29 +26: ; preds = %25 + %27 = load ptr, ptr %10, align 8 + %.not33 = icmp eq ptr %27, null + br i1 %.not33, label %30, label %28 -29: ; preds = %27 - %30 = call i32 @het_job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 - br label %33 +28: ; preds = %26 + %29 = call i32 @het_job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 + br label %32 -31: ; preds = %27 - %32 = call i32 @job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 - br label %33 +30: ; preds = %26 + %31 = call i32 @job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 + br label %32 -33: ; preds = %31, %29 - %.0 = phi i32 [ %30, %29 ], [ %32, %31 ] - %34 = icmp eq i32 %.0, 0 - br i1 %34, label %35, label %48 +32: ; preds = %30, %28 + %.0 = phi i32 [ %29, %28 ], [ %31, %30 ] + %33 = icmp eq i32 %.0, 0 + br i1 %33, label %34, label %47 -35: ; preds = %33 - %36 = call i32 @get_log_level() #8 - %37 = icmp sgt i32 %36, 2 - br i1 %37, label %38, label %.critedge +34: ; preds = %32 + %35 = call i32 @get_log_level() #8 + %36 = icmp sgt i32 %35, 2 + br i1 %36, label %37, label %.critedge -38: ; preds = %35 +37: ; preds = %34 call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.12, ptr noundef nonnull %0, ptr noundef %1) #8 br label %.critedge -39: ; preds = %26 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 392 - %41 = load i32, ptr %40, align 8 - %42 = call i32 @job_requeue(i32 noundef 0, i32 noundef %41, ptr noundef null, i1 noundef zeroext true, i32 noundef 0) #8 - %43 = icmp eq i32 %42, 0 - br i1 %43, label %44, label %48 +38: ; preds = %25 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 392 + %40 = load i32, ptr %39, align 8 + %41 = call i32 @job_requeue(i32 noundef 0, i32 noundef %40, ptr noundef null, i1 noundef zeroext true, i32 noundef 0) #8 + %42 = icmp eq i32 %41, 0 + br i1 %42, label %43, label %47 -44: ; preds = %39 - %45 = call i32 @get_log_level() #8 - %46 = icmp sgt i32 %45, 2 - br i1 %46, label %47, label %.critedge +43: ; preds = %38 + %44 = call i32 @get_log_level() #8 + %45 = icmp sgt i32 %44, 2 + br i1 %45, label %46, label %.critedge -47: ; preds = %44 +46: ; preds = %43 call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.13, ptr noundef nonnull %0, ptr noundef %1) #8 br label %.critedge -48: ; preds = %33, %39, %26 - %49 = load ptr, ptr %10, align 8 - %.not35 = icmp eq ptr %49, null - br i1 %.not35, label %52, label %50 +47: ; preds = %32, %38, %25 + %48 = load ptr, ptr %10, align 8 + %.not35 = icmp eq ptr %48, null + br i1 %.not35, label %51, label %49 -50: ; preds = %48 - %51 = call i32 @het_job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 - br label %54 +49: ; preds = %47 + %50 = call i32 @het_job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 + br label %53 -52: ; preds = %48 - %53 = call i32 @job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 - br label %54 +51: ; preds = %47 + %52 = call i32 @job_signal(ptr noundef nonnull %0, i16 noundef zeroext 9, i16 noundef zeroext 0, i32 noundef 0, i1 noundef zeroext true) #8 + br label %53 -54: ; preds = %52, %50 - %.3 = phi i32 [ %51, %50 ], [ %53, %52 ] - %55 = icmp eq i32 %.3, 0 - %56 = call i32 @get_log_level() #8 - %57 = icmp sgt i32 %56, 2 - br i1 %55, label %58, label %60 +53: ; preds = %51, %49 + %.3 = phi i32 [ %50, %49 ], [ %52, %51 ] + %54 = icmp eq i32 %.3, 0 + %55 = call i32 @get_log_level() #8 + %56 = icmp sgt i32 %55, 2 + br i1 %54, label %57, label %59 -58: ; preds = %54 - br i1 %57, label %59, label %.critedge +57: ; preds = %53 + br i1 %56, label %58, label %.critedge -59: ; preds = %58 +58: ; preds = %57 call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.14, ptr noundef nonnull @__func__.slurm_job_preempt, ptr noundef nonnull %0) #8 br label %.critedge -60: ; preds = %54 - br i1 %57, label %61, label %.critedge +59: ; preds = %53 + br i1 %56, label %60, label %.critedge -61: ; preds = %60 - %62 = call ptr @slurm_strerror(i32 noundef %.3) #8 - call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.15, ptr noundef nonnull @__func__.slurm_job_preempt, ptr noundef nonnull %0, ptr noundef %62) #8 +60: ; preds = %59 + %61 = call ptr @slurm_strerror(i32 noundef %.3) #8 + call void (i32, ptr, ...) @log_var(i32 noundef 3, ptr noundef nonnull @.str.15, ptr noundef nonnull @__func__.slurm_job_preempt, ptr noundef nonnull %0, ptr noundef %61) #8 br label %.critedge -.critedge: ; preds = %60, %61, %58, %59, %44, %47, %35, %38, %_job_check_grace.exit, %4 - %.027 = phi i32 [ -1, %4 ], [ -1, %_job_check_grace.exit ], [ 0, %59 ], [ 0, %58 ], [ %.3, %61 ], [ %.3, %60 ], [ 0, %44 ], [ 0, %47 ], [ 0, %35 ], [ 0, %38 ] +.critedge: ; preds = %12, %59, %60, %57, %58, %43, %46, %34, %37, %_job_check_grace.exit, %4 + %.027 = phi i32 [ -1, %4 ], [ -1, %_job_check_grace.exit ], [ 0, %58 ], [ 0, %57 ], [ %.3, %60 ], [ %.3, %59 ], [ 0, %43 ], [ 0, %46 ], [ 0, %34 ], [ 0, %37 ], [ -1, %12 ] ret i32 %.027 } diff --git a/bench/spike/optimized/s_sub256M.ll b/bench/spike/optimized/s_sub256M.ll index d0d7be56f24..c653fdbd665 100644 --- a/bench/spike/optimized/s_sub256M.ll +++ b/bench/spike/optimized/s_sub256M.ll @@ -13,26 +13,25 @@ define void @softfloat_sub256M(ptr nocapture noundef readonly %0, ptr nocapture 7: ; preds = %3, %7 %indvars.iv = phi i64 [ 0, %3 ], [ %indvars.iv.next, %7 ] - %8 = phi i64 [ %5, %3 ], [ %16, %7 ] - %9 = phi i64 [ %4, %3 ], [ %14, %7 ] - %.01519 = phi i8 [ 0, %3 ], [ %12, %7 ] - %.not = icmp eq i8 %.01519, 0 + %8 = phi i64 [ %5, %3 ], [ %15, %7 ] + %9 = phi i64 [ %4, %3 ], [ %13, %7 ] + %.01519 = phi i1 [ true, %3 ], [ %19, %7 ] %10 = icmp ule i64 %9, %8 %11 = icmp ult i64 %9, %8 - %.in = select i1 %.not, i1 %11, i1 %10 - %12 = zext i1 %.in to i8 + %.in = select i1 %.01519, i1 %11, i1 %10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %13 = getelementptr inbounds nuw i64, ptr %0, i64 %indvars.iv.next - %14 = load i64, ptr %13, align 8 - %15 = getelementptr inbounds nuw i64, ptr %1, i64 %indvars.iv.next - %16 = load i64, ptr %15, align 8 + %12 = getelementptr inbounds nuw i64, ptr %0, i64 %indvars.iv.next + %13 = load i64, ptr %12, align 8 + %14 = getelementptr inbounds nuw i64, ptr %1, i64 %indvars.iv.next + %15 = load i64, ptr %14, align 8 %.neg21 = sext i1 %.in to i64 - %.neg17 = add i64 %14, %.neg21 - %17 = sub i64 %.neg17, %16 - %18 = getelementptr inbounds nuw i64, ptr %2, i64 %indvars.iv.next - store i64 %17, ptr %18, align 8 - %19 = icmp eq i64 %indvars.iv.next, 3 - br i1 %19, label %20, label %7 + %.neg17 = add i64 %13, %.neg21 + %16 = sub i64 %.neg17, %15 + %17 = getelementptr inbounds nuw i64, ptr %2, i64 %indvars.iv.next + store i64 %16, ptr %17, align 8 + %18 = icmp eq i64 %indvars.iv.next, 3 + %19 = xor i1 %.in, true + br i1 %18, label %20, label %7 20: ; preds = %7 ret void diff --git a/bench/verilator/optimized/V3Fork.cpp.ll b/bench/verilator/optimized/V3Fork.cpp.ll index a8d5778251e..0ed6e3c6643 100644 --- a/bench/verilator/optimized/V3Fork.cpp.ll +++ b/bench/verilator/optimized/V3Fork.cpp.ll @@ -5178,14 +5178,14 @@ _ZN15DynScopeVisitor7frameOfEP7AstNode.exit: ; preds = %_ZNSt3mapIP7AstNode %28 = trunc i64 %27 to i32 %.sroa.0.0.extract.trunc.i.i = select i1 %25, i32 %28, i32 0 %29 = icmp sgt i32 %21, %.sroa.0.0.extract.trunc.i.i - br i1 %29, label %30, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread + br i1 %29, label %30, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14 30: ; preds = %19 %31 = getelementptr inbounds nuw i8, ptr %6, i64 260 %32 = load i64, ptr %31, align 4 %33 = and i64 %32, 16384 - %.not9.i = icmp eq i64 %33, 0 - br i1 %.not9.i, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread, label %34 + %.not.i = icmp eq i64 %33, 0 + br i1 %.not.i, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14, label %34 34: ; preds = %30 %35 = getelementptr inbounds nuw i8, ptr %6, i64 64 @@ -5224,47 +5224,43 @@ _ZNK7AstNode18isClassHandleValueEv.exit.thread7.i: ; preds = %_ZNK7AstNode18isCl %50 = getelementptr inbounds nuw i8, ptr %1, i64 116 %51 = load i32, ptr %50, align 4 %52 = load i32, ptr @_ZN12VNUser2InUse12s_userCntGblE, align 4 - %53 = icmp eq i32 %51, %52 + %53 = icmp ne i32 %51, %52 %54 = getelementptr inbounds nuw i8, ptr %1, i64 120 %55 = load i64, ptr %54, align 8 - %56 = trunc i64 %55 to i32 - br i1 %53, label %select.unfold.i, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit + %56 = and i64 %55, 4294967295 + %57 = icmp eq i64 %56, 0 + %58 = select i1 %53, i1 true, i1 %57 + br i1 %58, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread _ZNK7AstNode18isClassHandleValueEv.exit.thread.i: ; preds = %_ZNK7AstNode18isClassHandleValueEv.exit.i, %43, %40 - %57 = getelementptr inbounds nuw i8, ptr %1, i64 176 - %.sroa.0.0.copyload.i.i = load i8, ptr %57, align 8 - %58 = add i8 %.sroa.0.0.copyload.i.i, -1 - %spec.select.i.i = icmp ult i8 %58, 2 - %59 = zext i1 %spec.select.i.i to i32 - br label %select.unfold.i - -select.unfold.i: ; preds = %_ZNK7AstNode18isClassHandleValueEv.exit.thread.i, %_ZNK7AstNode18isClassHandleValueEv.exit.thread7.i - %60 = phi i32 [ %59, %_ZNK7AstNode18isClassHandleValueEv.exit.thread.i ], [ %56, %_ZNK7AstNode18isClassHandleValueEv.exit.thread7.i ] - %.not.i = icmp eq i32 %60, 0 - br i1 %.not.i, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread13 - -_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit: ; preds = %_ZNK7AstNode18isClassHandleValueEv.exit.thread7.i, %select.unfold.i + %59 = getelementptr inbounds nuw i8, ptr %1, i64 176 + %.sroa.0.0.copyload.i.i = load i8, ptr %59, align 8 + %60 = add i8 %.sroa.0.0.copyload.i.i, -3 + %spec.select.i.i = icmp ult i8 %60, -2 + br i1 %spec.select.i.i, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread + +_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit: ; preds = %_ZNK7AstNode18isClassHandleValueEv.exit.thread7.i, %_ZNK7AstNode18isClassHandleValueEv.exit.thread.i %61 = getelementptr inbounds nuw i8, ptr %0, i64 236 %62 = load i8, ptr %61, align 4 %63 = trunc i8 %62 to i1 - br i1 %63, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread13, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread + br i1 %63, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread, label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14 -_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread13: ; preds = %select.unfold.i, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit +_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread: ; preds = %_ZNK7AstNode18isClassHandleValueEv.exit.thread7.i, %_ZNK7AstNode18isClassHandleValueEv.exit.thread.i, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit %64 = getelementptr inbounds nuw i8, ptr %18, i64 144 %65 = load ptr, ptr %64, align 8 - %.not14 = icmp eq ptr %65, null - br i1 %.not14, label %66, label %68 + %.not15 = icmp eq ptr %65, null + br i1 %.not15, label %66, label %68 -66: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread13 +66: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread %67 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN17ForkDynScopeFrame23createInstancePrototypeEv(ptr noundef nonnull align 8 dereferenceable(184) %18) br label %68 -68: ; preds = %66, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread13 +68: ; preds = %66, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread %69 = load ptr, ptr %5, align 8 tail call void @_ZN17ForkDynScopeFrame16captureVarInsertEP6AstVar(ptr noundef nonnull align 8 dereferenceable(184) %18, ptr noundef %69) - br label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread + br label %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14 -_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread: ; preds = %19, %30, %68, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit +_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14: ; preds = %19, %30, %68, %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) store ptr %1, ptr %3, align 8 @@ -5275,7 +5271,7 @@ _ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread: ; preds = %19, %3 %73 = trunc i8 %72 to i1 br i1 %73, label %74, label %_ZN15DynScopeVisitor18bindNodeToDynScopeEP7AstNodeP17ForkDynScopeFrame.exit -74: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread +74: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14 %75 = getelementptr inbounds nuw i8, ptr %0, i64 104 %76 = load ptr, ptr %75, align 8 %77 = getelementptr inbounds nuw i8, ptr %0, i64 120 @@ -5297,7 +5293,7 @@ _ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread: ; preds = %19, %3 call void @_ZNSt5dequeIP7AstNodeSaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(80) %85, ptr noundef nonnull align 8 dereferenceable(8) %3) br label %_ZN15DynScopeVisitor18bindNodeToDynScopeEP7AstNodeP17ForkDynScopeFrame.exit -_ZN15DynScopeVisitor18bindNodeToDynScopeEP7AstNodeP17ForkDynScopeFrame.exit: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread, %80, %84 +_ZN15DynScopeVisitor18bindNodeToDynScopeEP7AstNodeP17ForkDynScopeFrame.exit: ; preds = %_ZNK15DynScopeVisitor13needsDynScopeEPK9AstVarRef.exit.thread14, %80, %84 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) br label %_ZN15DynScopeVisitor7frameOfEP7AstNode.exit.thread diff --git a/bench/wasmtime-rs/optimized/37pex3k1sj15o95m.ll b/bench/wasmtime-rs/optimized/37pex3k1sj15o95m.ll index fd913d1eb0b..ac374688684 100644 --- a/bench/wasmtime-rs/optimized/37pex3k1sj15o95m.ll +++ b/bench/wasmtime-rs/optimized/37pex3k1sj15o95m.ll @@ -27495,7 +27495,7 @@ define hidden void @_ZN17cranelift_codegen14alias_analysis13AliasAnalysis26compu ._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i: ; preds = %15 %.pre.i = load ptr, ptr %10, align 8, !alias.scope !4728 - br label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i + br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit default.unreachable.i: ; preds = %15 unreachable @@ -27513,7 +27513,7 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i.i = select i1 %.not.i.i.i, ptr %24, ptr %25 %26 = load i32, ptr %.0.i.i.i.i, align 4, !noalias !4739, !noundef !4 %.not.i = icmp eq i32 %26, -1 - br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i + br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %15, %15 %.sroa.4.0.i11.i = phi i32 [ %26, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ], [ %16, %15 ], [ %16, %15 ] @@ -27529,29 +27529,27 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i = select i1 %.not.i.i, ptr %33, ptr %34 %35 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 %36 = load i32, ptr %35, align 4, !noalias !4722, !noundef !4 - %37 = icmp ne i32 %36, -1 - %.sroa.0.0.i.i.i = zext i1 %37 to i32 - br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit - -_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i - %38 = phi ptr [ %.pre.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i ], [ %18, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ] - %39 = getelementptr inbounds nuw i8, ptr %38, i64 720 - %40 = load i32, ptr %39, align 8, !range !274, !alias.scope !4748, !noalias !4722, !noundef !4 - %41 = getelementptr inbounds nuw i8, ptr %38, i64 724 - %42 = load i32, ptr %41, align 4, !alias.scope !4748, !noalias !4722 - br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit - -_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i - %.sroa.0.0.i.i.pn.i = phi i32 [ %.sroa.0.0.i.i.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %40, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %.pn16.i = phi i32 [ %36, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %42, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %switch.not.not.i = icmp eq i32 %.sroa.0.0.i.i.pn.i, 0 - %..i = select i1 %switch.not.not.i, i32 0, i32 2 - %..pn16.i = select i1 %switch.not.not.i, i32 undef, i32 %.pn16.i + %.not19 = icmp eq i32 %36, -1 + %..i138 = select i1 %.not19, i32 0, i32 2 + store i32 %..i138, ptr %8, align 8, !alias.scope !4722 + store i32 %36, ptr %11, align 4, !alias.scope !4722 + br i1 %.not19, label %79, label %43 + +_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; preds = %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i + %37 = phi ptr [ %.pre.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i ], [ %18, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ] + %38 = getelementptr inbounds nuw i8, ptr %37, i64 720 + %39 = load i32, ptr %38, align 8, !range !274, !alias.scope !4748, !noalias !4722, !noundef !4 + %40 = getelementptr inbounds nuw i8, ptr %37, i64 724 + %41 = load i32, ptr %40, align 4, !alias.scope !4748, !noalias !4722 + %42 = icmp eq i32 %39, 0 + %..i = select i1 %42, i32 0, i32 2 + %..pn16.i = select i1 %42, i32 undef, i32 %41 store i32 %..i, ptr %8, align 8, !alias.scope !4722 store i32 %..pn16.i, ptr %11, align 4, !alias.scope !4722 - br i1 %switch.not.not.i, label %79, label %43 + br i1 %42, label %79, label %43 -43: ; preds = %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit +43: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit + %.pn16.i139 = phi i32 [ %36, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %41, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) call void @llvm.experimental.noalias.scope.decl(metadata !4751) call void @llvm.experimental.noalias.scope.decl(metadata !4754) @@ -27561,7 +27559,7 @@ _ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; pre br i1 %45, label %select.unfold.i, label %46 46: ; preds = %43 - %47 = zext i32 %.pn16.i to i64 + %47 = zext i32 %.pn16.i139 to i64 %48 = mul i64 %47, 5871781006564002453 call void @llvm.experimental.noalias.scope.decl(metadata !4762) call void @llvm.experimental.noalias.scope.decl(metadata !4765) @@ -27606,7 +27604,7 @@ _ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; pre %68 = sub nsw i64 0, %67 %gep.i.i.i.i = getelementptr { i32, { i32, i32, i32, i32 } }, ptr %invariant.gep.i.i.i.i, i64 %68 %.val4.i.i.i.i.i = load i32, ptr %gep.i.i.i.i, align 4, !alias.scope !4779, !noalias !4784, !noundef !4 - %69 = icmp eq i32 %.pn16.i, %.val4.i.i.i.i.i + %69 = icmp eq i32 %.pn16.i139, %.val4.i.i.i.i.i br i1 %69, label %73, label %57 70: ; preds = %58 @@ -27630,7 +27628,7 @@ _ZN17cranelift_codegen14alias_analysis13AliasAnalysis20block_starting_state17hd9 %78 = icmp eq i32 %77, 1 br i1 %78, label %.lr.ph, label %._crit_edge -79: ; preds = %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit +79: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) ret void @@ -27789,13 +27787,13 @@ default.unreachable: ; preds = %"_ZN103_$LT$craneli 156: ; preds = %"_ZN103_$LT$cranelift_entity..primary..PrimaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..Index$LT$K$GT$$GT$5index17h379db47cd18b4f20E.exit.i.i.i.i" %157 = and i64 %154, 280375465082880 - %.not84 = icmp eq i64 %157, 0 - br i1 %.not84, label %"_ZN128_$LT$cranelift_codegen..ir..dfg..ValueDataPacked$u20$as$u20$core..convert..From$LT$cranelift_codegen..ir..dfg..ValueData$GT$$GT$4from17he9f26a0a242f9a2fE.exit.i", label %.split29.i + %.not85 = icmp eq i64 %157, 0 + br i1 %.not85, label %"_ZN128_$LT$cranelift_codegen..ir..dfg..ValueDataPacked$u20$as$u20$core..convert..From$LT$cranelift_codegen..ir..dfg..ValueData$GT$$GT$4from17he9f26a0a242f9a2fE.exit.i", label %.split29.i 158: ; preds = %"_ZN103_$LT$cranelift_entity..primary..PrimaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..Index$LT$K$GT$$GT$5index17h379db47cd18b4f20E.exit.i.i.i.i" %159 = and i64 %154, 280375465082880 - %.not83 = icmp eq i64 %159, 0 - br i1 %.not83, label %"_ZN128_$LT$cranelift_codegen..ir..dfg..ValueDataPacked$u20$as$u20$core..convert..From$LT$cranelift_codegen..ir..dfg..ValueData$GT$$GT$4from17he9f26a0a242f9a2fE.exit.i", label %.split34.i + %.not84 = icmp eq i64 %159, 0 + br i1 %.not84, label %"_ZN128_$LT$cranelift_codegen..ir..dfg..ValueDataPacked$u20$as$u20$core..convert..From$LT$cranelift_codegen..ir..dfg..ValueData$GT$$GT$4from17he9f26a0a242f9a2fE.exit.i", label %.split34.i .split29.i: ; preds = %156 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %3), !noalias !4834 diff --git a/bench/wasmtime-rs/optimized/sa4imocsqq56n3l.ll b/bench/wasmtime-rs/optimized/sa4imocsqq56n3l.ll index d3bd2407cbf..2ce45f5c379 100644 --- a/bench/wasmtime-rs/optimized/sa4imocsqq56n3l.ll +++ b/bench/wasmtime-rs/optimized/sa4imocsqq56n3l.ll @@ -20220,10 +20220,10 @@ define void @_ZN17cranelift_codegen2ir6layout6Layout11split_block17h09c10018b256 %.0.i17 = select i1 %.not49, ptr %98, ptr %10 %99 = getelementptr inbounds nuw i8, ptr %.0.i17, i64 8 %100 = load i32, ptr %99, align 4, !noundef !4 - %.not51 = icmp eq i32 %100, -1 - br i1 %.not51, label %101, label %88 + %101 = icmp eq i32 %100, -1 + br i1 %101, label %102, label %88 -101: ; preds = %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17h53eb04971bdf7e44E.llvm.5781664634918412060.exit" +102: ; preds = %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17h53eb04971bdf7e44E.llvm.5781664634918412060.exit" ret void } @@ -23513,8 +23513,8 @@ define hidden void @_ZN17cranelift_codegen9legalizer15simple_legalize17he35c6ac9 br label %40 thread-pre-split: ; preds = %thread-pre-split.backedge, %40 - %73 = phi i32 [ %.pre, %40 ], [ %.be1082, %thread-pre-split.backedge ] - %74 = phi i32 [ 0, %40 ], [ %.be1083, %thread-pre-split.backedge ] + %73 = phi i32 [ %.pre, %40 ], [ %.be1085, %thread-pre-split.backedge ] + %74 = phi i32 [ 0, %40 ], [ %.be1086, %thread-pre-split.backedge ] call void @llvm.experimental.noalias.scope.decl(metadata !2469) call void @llvm.experimental.noalias.scope.decl(metadata !2470) switch i32 %74, label %default.unreachable [ @@ -23526,9 +23526,9 @@ thread-pre-split: ; preds = %thread-pre-split.ba ._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i: ; preds = %thread-pre-split %.pre.i = load ptr, ptr %42, align 8, !alias.scope !2471 - br label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i + br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit -default.unreachable: ; preds = %thread-pre-split, %.preheader +default.unreachable: ; preds = %thread-pre-split, %.backedge unreachable _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i: ; preds = %thread-pre-split @@ -23544,7 +23544,7 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i.i = select i1 %.not.i.i.i, ptr %81, ptr %82 %83 = load i32, ptr %.0.i.i.i.i, align 4, !noalias !2482, !noundef !4 %.not.i = icmp eq i32 %83, -1 - br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i + br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %thread-pre-split, %thread-pre-split %.sroa.4.0.i11.i = phi i32 [ %83, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ], [ %73, %thread-pre-split ], [ %73, %thread-pre-split ] @@ -23560,31 +23560,32 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i = select i1 %.not.i.i, ptr %90, ptr %91 %92 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 %93 = load i32, ptr %92, align 4, !noalias !2469, !noundef !4 - %94 = icmp ne i32 %93, -1 - %.sroa.0.0.i.i.i = zext i1 %94 to i32 - br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit - -_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i - %95 = phi ptr [ %.pre.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i ], [ %75, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ] - %96 = getelementptr inbounds nuw i8, ptr %95, i64 720 - %97 = load i32, ptr %96, align 8, !range !59, !alias.scope !2491, !noalias !2469, !noundef !4 - %98 = getelementptr inbounds nuw i8, ptr %95, i64 724 - %99 = load i32, ptr %98, align 4, !alias.scope !2491, !noalias !2469 - br label %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit - -_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i - %.sroa.0.0.i.i.pn.i = phi i32 [ %.sroa.0.0.i.i.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %97, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %.pn16.i = phi i32 [ %93, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %99, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %switch.not.not.i = icmp eq i32 %.sroa.0.0.i.i.pn.i, 0 - %..i = select i1 %switch.not.not.i, i32 0, i32 2 - %..pn16.i = select i1 %switch.not.not.i, i32 undef, i32 %.pn16.i + %.not = icmp eq i32 %93, -1 + %..i557 = select i1 %.not, i32 0, i32 2 + store i32 %..i557, ptr %33, align 8, !alias.scope !2469 + store i32 %93, ptr %43, align 4, !alias.scope !2469 + br i1 %.not, label %777, label %.backedge.preheader + +_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; preds = %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i + %94 = phi ptr [ %.pre.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i ], [ %75, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ] + %95 = getelementptr inbounds nuw i8, ptr %94, i64 720 + %96 = load i32, ptr %95, align 8, !range !59, !alias.scope !2491, !noalias !2469, !noundef !4 + %97 = getelementptr inbounds nuw i8, ptr %94, i64 724 + %98 = load i32, ptr %97, align 4, !alias.scope !2491, !noalias !2469 + %99 = icmp eq i32 %96, 0 + %..i = select i1 %99, i32 0, i32 2 + %..pn16.i = select i1 %99, i32 undef, i32 %98 store i32 %..i, ptr %33, align 8, !alias.scope !2469 store i32 %..pn16.i, ptr %43, align 4, !alias.scope !2469 - br i1 %switch.not.not.i, label %777, label %.preheader + br i1 %99, label %777, label %.backedge.preheader -.preheader: ; preds = %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit, %.preheader.backedge - %100 = phi i32 [ %.be, %.preheader.backedge ], [ 2, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit ] - %101 = phi i32 [ %.be1080, %.preheader.backedge ], [ %.pn16.i, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit ] +.backedge.preheader: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit + %.ph = phi i32 [ %98, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit ], [ %93, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ] + br label %.backedge + +.backedge: ; preds = %.backedge.backedge, %.backedge.preheader + %100 = phi i32 [ 2, %.backedge.preheader ], [ %.be, %.backedge.backedge ] + %101 = phi i32 [ %.ph, %.backedge.preheader ], [ %.be1083, %.backedge.backedge ] call void @llvm.experimental.noalias.scope.decl(metadata !2494) switch i32 %100, label %default.unreachable [ i32 0, label %thread-pre-split.backedge @@ -23593,7 +23594,7 @@ _ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; pre i32 3, label %thread-pre-split.backedge ] -102: ; preds = %.preheader +102: ; preds = %.backedge %103 = load ptr, ptr %42, align 8, !alias.scope !2497, !nonnull !4, !align !15, !noundef !4 %104 = getelementptr inbounds nuw i8, ptr %103, i64 688 %105 = load ptr, ptr %104, align 8, !alias.scope !2500, !noalias !2494, !nonnull !4, !noundef !4 @@ -23609,7 +23610,7 @@ _ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; pre %.not22.i = icmp eq i32 %112, -1 br i1 %.not22.i, label %124, label %129 -113: ; preds = %.preheader +113: ; preds = %.backedge %114 = load ptr, ptr %42, align 8, !alias.scope !2505, !nonnull !4, !align !15, !noundef !4 %115 = getelementptr inbounds nuw i8, ptr %114, i64 640 %116 = load ptr, ptr %115, align 8, !alias.scope !2508, !noalias !2494, !nonnull !4, !noundef !4 @@ -23639,9 +23640,9 @@ _ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit: ; pre store i32 %125, ptr %43, align 4, !alias.scope !2513 br label %thread-pre-split.backedge -thread-pre-split.backedge: ; preds = %.preheader, %.preheader, %127, %128 - %.be1082 = phi i32 [ %125, %127 ], [ %101, %128 ], [ %101, %.preheader ], [ %101, %.preheader ] - %.be1083 = phi i32 [ 3, %127 ], [ 3, %128 ], [ %100, %.preheader ], [ %100, %.preheader ] +thread-pre-split.backedge: ; preds = %.backedge, %.backedge, %127, %128 + %.be1085 = phi i32 [ %125, %127 ], [ %101, %128 ], [ %101, %.backedge ], [ %101, %.backedge ] + %.be1086 = phi i32 [ 3, %127 ], [ 3, %128 ], [ %100, %.backedge ], [ %100, %.backedge ] br label %thread-pre-split 128: ; preds = %113 @@ -23670,7 +23671,7 @@ thread-pre-split.backedge: ; preds = %.preheader, %.prehe %138 = load ptr, ptr %137, align 8, !alias.scope !2525, !noalias !2526, !nonnull !4, !noundef !4 %139 = getelementptr inbounds nuw [0 x { i8, [15 x i8] }], ptr %138, i64 0, i64 %132 %140 = load i8, ptr %139, align 8, !range !2529, !noundef !4 - switch i8 %140, label %.preheader.backedge [ + switch i8 %140, label %.backedge.backedge [ i8 2, label %141 i8 3, label %145 i8 9, label %157 @@ -23682,10 +23683,10 @@ thread-pre-split.backedge: ; preds = %.preheader, %.prehe i8 32, label %180 ] -.preheader.backedge: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit", %157, %160, %164, %168, %172, %176, %180, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit +.backedge.backedge: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit", %157, %160, %164, %168, %172, %176, %180, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit %.be = phi i32 [ %.sroa.019.2, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit ], [ 1, %180 ], [ 1, %176 ], [ 1, %172 ], [ 1, %168 ], [ 1, %164 ], [ 1, %160 ], [ 1, %157 ], [ 1, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" ] - %.be1080 = phi i32 [ %.sroa.520.2, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit ], [ %131, %180 ], [ %131, %176 ], [ %131, %172 ], [ %131, %168 ], [ %131, %164 ], [ %131, %160 ], [ %131, %157 ], [ %131, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" ] - br label %.preheader + %.be1083 = phi i32 [ %.sroa.520.2, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit ], [ %131, %180 ], [ %131, %176 ], [ %131, %172 ], [ %131, %168 ], [ %131, %164 ], [ %131, %160 ], [ %131, %157 ], [ %131, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" ] + br label %.backedge 141: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %142 = getelementptr inbounds nuw i8, ptr %139, i64 1 @@ -23724,7 +23725,7 @@ thread-pre-split.backedge: ; preds = %.preheader, %.prehe 157: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %158 = getelementptr inbounds nuw i8, ptr %139, i64 1 %159 = load i8, ptr %158, align 1, !range !2530, !noundef !4 - switch i8 %159, label %.preheader.backedge [ + switch i8 %159, label %.backedge.backedge [ i8 6, label %258 i8 8, label %258 i8 9, label %258 @@ -23734,37 +23735,37 @@ thread-pre-split.backedge: ; preds = %.preheader, %.prehe %161 = getelementptr inbounds nuw i8, ptr %139, i64 1 %162 = load i8, ptr %161, align 1, !range !2530, !noundef !4 %163 = icmp eq i8 %162, 50 - br i1 %163, label %454, label %.preheader.backedge + br i1 %163, label %454, label %.backedge.backedge 164: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %165 = getelementptr inbounds nuw i8, ptr %139, i64 1 %166 = load i8, ptr %165, align 1, !range !2530, !noundef !4 %167 = icmp eq i8 %166, 51 - br i1 %167, label %538, label %.preheader.backedge + br i1 %167, label %538, label %.backedge.backedge 168: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %169 = getelementptr inbounds nuw i8, ptr %139, i64 1 %170 = load i8, ptr %169, align 1, !range !2530, !noundef !4 %171 = icmp eq i8 %170, 76 - br i1 %171, label %601, label %.preheader.backedge + br i1 %171, label %601, label %.backedge.backedge 172: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %173 = getelementptr inbounds nuw i8, ptr %139, i64 1 %174 = load i8, ptr %173, align 1, !range !2530, !noundef !4 %175 = icmp eq i8 %174, 47 - br i1 %175, label %639, label %.preheader.backedge + br i1 %175, label %639, label %.backedge.backedge 176: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %177 = getelementptr inbounds nuw i8, ptr %139, i64 1 %178 = load i8, ptr %177, align 1, !range !2530, !noundef !4 %179 = icmp eq i8 %178, 48 - br i1 %179, label %721, label %.preheader.backedge + br i1 %179, label %721, label %.backedge.backedge 180: ; preds = %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit" %181 = getelementptr inbounds nuw i8, ptr %139, i64 1 %182 = load i8, ptr %181, align 1, !range !2530, !noundef !4 %183 = icmp eq i8 %182, 53 - br i1 %183, label %774, label %.preheader.backedge + br i1 %183, label %774, label %.backedge.backedge 184: ; preds = %141 %185 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder4bnot17h60203ab3bd225a7bE(ptr noalias noundef nonnull align 8 dereferenceable(24) %33, i32 noundef %.sroa.616.0.copyload) @@ -23789,7 +23790,7 @@ _ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit: ; %.sroa.520.2 = phi i32 [ %101, %774 ], [ %101, %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit128 ], [ %101, %_ZN17cranelift_codegen2ir7builder11InstBuilder4load17habafee347fd3309cE.exit107 ], [ %101, %_ZN17cranelift_codegen9legalizer9imm_const17h3d2c7ca0cae3b681E.exit79 ], [ %101, %_ZN17cranelift_codegen2ir7builder11InstBuilder4load17habafee347fd3309cE.exit ], [ %101, %_ZN17cranelift_codegen9flowgraph16ControlFlowGraph15recompute_block17hf1708e89ffac3640E.exit ], [ %101, %192 ], [ %101, %188 ], [ %101, %184 ], [ %227, %225 ], [ %101, %256 ], [ %101, %254 ], [ %101, %252 ], [ %101, %250 ], [ %101, %248 ], [ %101, %246 ], [ %101, %244 ], [ %101, %242 ], [ %101, %240 ], [ %101, %238 ], [ %101, %236 ], [ %101, %234 ], [ %101, %232 ], [ %101, %230 ], [ %101, %228 ], [ %101, %_ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exit.i68 ], [ %101, %596 ], [ %131, %141 ] store i32 %.sroa.019.2, ptr %33, align 8, !alias.scope !2542 store i32 %.sroa.520.2, ptr %43, align 4, !alias.scope !2542 - br label %.preheader.backedge + br label %.backedge.backedge 196: ; preds = %145 call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %153, i64 noundef %155, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ff4fb00eed5659504e0ec1f2ac65c1d3.339.llvm.15230283897121687862) #39, !noalias !2545 @@ -24568,8 +24569,8 @@ _ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exi "_ZN50_$LT$dyn$u20$cranelift_codegen..isa..TargetIsa$GT$13pointer_width17hc9fc41ea479fefb5E.llvm.6092180546091225645.exit.i.i": ; preds = %490 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5), !noalias !2861 - %narrow1079 = add nuw nsw i8 %493, 119 - %switch.offset = zext nneg i8 %narrow1079 to i16 + %narrow1082 = add nuw nsw i8 %493, 119 + %switch.offset = zext nneg i8 %narrow1082 to i16 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) %496 = load ptr, ptr %42, align 8, !nonnull !4, !align !15, !noundef !4 store i32 1, ptr %30, align 8, !alias.scope !2862 @@ -24706,8 +24707,8 @@ _ZN17cranelift_codegen2ir7builder11InstBuilder4load17habafee347fd3309cE.exit: ; "_ZN50_$LT$dyn$u20$cranelift_codegen..isa..TargetIsa$GT$13pointer_width17hc9fc41ea479fefb5E.llvm.6092180546091225645.exit.i.i62": ; preds = %538 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5), !noalias !2929 - %narrow1078 = add nuw nsw i8 %559, 119 - %switch.offset1070 = zext nneg i8 %narrow1078 to i16 + %narrow1081 = add nuw nsw i8 %559, 119 + %switch.offset1073 = zext nneg i8 %narrow1081 to i16 %562 = load ptr, ptr %42, align 8, !nonnull !4, !align !15, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !2930) call void @llvm.experimental.noalias.scope.decl(metadata !2933) @@ -24735,7 +24736,7 @@ _ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exi unreachable 574: ; preds = %_ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exit67 - %575 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder18dynamic_stack_addr17hbdd748c34f03e212E(ptr noalias noundef nonnull align 8 dereferenceable(24) %33, i16 noundef %switch.offset1070, i32 noundef %542) + %575 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder18dynamic_stack_addr17hbdd748c34f03e212E(ptr noalias noundef nonnull align 8 dereferenceable(24) %33, i16 noundef %switch.offset1073, i32 noundef %542) %576 = call noundef i16 @_ZN17cranelift_codegen2ir8memflags8MemFlags14with_trap_code17h523ab09698224c2aE(i16 noundef 0, i16 noundef 14, i16 undef), !noalias !2939 %577 = load ptr, ptr %42, align 8, !nonnull !4, !align !15, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !2942) @@ -24938,8 +24939,8 @@ _ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exi "_ZN50_$LT$dyn$u20$cranelift_codegen..isa..TargetIsa$GT$13pointer_width17hc9fc41ea479fefb5E.llvm.6092180546091225645.exit.i.i84": ; preds = %_ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exit83 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5), !noalias !3012 - %narrow1077 = add nuw nsw i8 %677, 119 - %switch.offset1073 = zext nneg i8 %narrow1077 to i16 + %narrow1080 = add nuw nsw i8 %677, 119 + %switch.offset1076 = zext nneg i8 %narrow1080 to i16 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) %680 = load ptr, ptr %42, align 8, !nonnull !4, !align !15, !noundef !4 store i32 1, ptr %32, align 8, !alias.scope !3013 @@ -24968,7 +24969,7 @@ _ZN17cranelift_codegen2ir3dfg13DataFlowGraph10value_type17h3e8c85df69a903a8E.exi %694 = add i32 %691, %.0.i1.i.i90 %.0.i2.i.i94 = select i1 %or.cond.i.i.i93, i32 -1, i32 %694 store i32 %.0.i2.i.i94, ptr %.sroa.7.0..sroa_idx, align 8, !alias.scope !3017 - %695 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder10stack_addr17h279d3538d94d987bE(ptr noalias noundef nonnull align 8 dereferenceable(24) %32, i16 noundef %switch.offset1073, i32 noundef %641, i32 noundef %643) + %695 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder10stack_addr17h279d3538d94d987bE(ptr noalias noundef nonnull align 8 dereferenceable(24) %32, i16 noundef %switch.offset1076, i32 noundef %641, i32 noundef %643) %696 = call noundef i16 @_ZN17cranelift_codegen2ir8memflags8MemFlags14with_trap_code17h523ab09698224c2aE(i16 noundef 0, i16 noundef 14, i16 undef), !noalias !3031 %697 = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !4, !align !15, !noundef !4 %698 = getelementptr inbounds nuw i8, ptr %697, i64 32 @@ -25056,7 +25057,7 @@ _ZN17cranelift_codegen2ir7builder11InstBuilder4load17habafee347fd3309cE.exit107: "_ZN50_$LT$dyn$u20$cranelift_codegen..isa..TargetIsa$GT$13pointer_width17hc9fc41ea479fefb5E.llvm.6092180546091225645.exit.i.i108": ; preds = %721 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5), !noalias !3069 %narrow = add nuw nsw i8 %730, 119 - %switch.offset1076 = zext nneg i8 %narrow to i16 + %switch.offset1079 = zext nneg i8 %narrow to i16 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) %733 = load ptr, ptr %42, align 8, !nonnull !4, !align !15, !noundef !4 store i32 1, ptr %31, align 8, !alias.scope !3070 @@ -25085,7 +25086,7 @@ _ZN17cranelift_codegen2ir7builder11InstBuilder4load17habafee347fd3309cE.exit107: %747 = add i32 %744, %.0.i1.i.i114 %.0.i2.i.i118 = select i1 %or.cond.i.i.i117, i32 -1, i32 %747 store i32 %.0.i2.i.i118, ptr %.sroa.7183.0..sroa_idx, align 8, !alias.scope !3074 - %748 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder10stack_addr17h279d3538d94d987bE(ptr noalias noundef nonnull align 8 dereferenceable(24) %31, i16 noundef %switch.offset1076, i32 noundef %725, i32 noundef %727) + %748 = call noundef i32 @_ZN17cranelift_codegen2ir7builder11InstBuilder10stack_addr17h279d3538d94d987bE(ptr noalias noundef nonnull align 8 dereferenceable(24) %31, i16 noundef %switch.offset1079, i32 noundef %725, i32 noundef %727) %749 = call noundef i16 @_ZN17cranelift_codegen2ir8memflags8MemFlags14with_trap_code17h523ab09698224c2aE(i16 noundef 0, i16 noundef 14, i16 undef), !noalias !3088 %750 = load ptr, ptr %.sroa.6182.0..sroa_idx, align 8, !nonnull !4, !align !15, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !3091) @@ -25148,7 +25149,7 @@ _ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit128 call void @_ZN17cranelift_codegen9legalizer11globalvalue19expand_global_value17hb8a62b3c8171dbe8E(i32 noundef %131, ptr noalias noundef nonnull align 8 dereferenceable(872) %130, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3, i32 noundef %776) br label %_ZN17cranelift_codegen2ir7builder11InstBuilder5store17h0287ce68be1a402eE.exit -777: ; preds = %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit +777: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %_ZN17cranelift_codegen6cursor6Cursor10next_block17hbee0edff1560e72dE.exit %778 = load atomic i64, ptr @_ZN3log20MAX_LOG_LEVEL_FILTER17h410246c97b67d9dfE monotonic, align 8 %779 = icmp ult i64 %778, 6 call void @llvm.assume(i1 %779) @@ -25236,8 +25237,8 @@ _ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit: ; pre to label %common.resume unwind label %112 thread-pre-split: ; preds = %thread-pre-split.backedge, %_ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit - %18 = phi i32 [ undef, %_ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit ], [ %.be56, %thread-pre-split.backedge ] - %19 = phi i32 [ 0, %_ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit ], [ %.be57, %thread-pre-split.backedge ] + %18 = phi i32 [ undef, %_ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit ], [ %.be59, %thread-pre-split.backedge ] + %19 = phi i32 [ 0, %_ZN17cranelift_codegen6timing17canonicalize_nans17h15f81e839a5a8d07E.exit ], [ %.be60, %thread-pre-split.backedge ] call void @llvm.experimental.noalias.scope.decl(metadata !3126) call void @llvm.experimental.noalias.scope.decl(metadata !3129) switch i32 %19, label %default.unreachable.i [ @@ -25249,7 +25250,7 @@ thread-pre-split: ; preds = %thread-pre-split.ba ._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i: ; preds = %thread-pre-split %.pre.i = load ptr, ptr %15, align 8, !alias.scope !3132 - br label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i + br label %39 default.unreachable.i: ; preds = %thread-pre-split unreachable @@ -25267,7 +25268,7 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i.i = select i1 %.not.i.i.i, ptr %26, ptr %27 %28 = load i32, ptr %.0.i.i.i.i, align 4, !noalias !3143, !noundef !4 %.not.i = icmp eq i32 %28, -1 - br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i + br i1 %.not.i, label %39, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %thread-pre-split, %thread-pre-split %.sroa.4.0.i11.i = phi i32 [ %28, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ], [ %18, %thread-pre-split ], [ %18, %thread-pre-split ] @@ -25283,29 +25284,30 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i = select i1 %.not.i.i, ptr %35, ptr %36 %37 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 %38 = load i32, ptr %37, align 4, !noalias !3126, !noundef !4 - %39 = icmp ne i32 %38, -1 - %.sroa.0.0.i.i.i = zext i1 %39 to i32 - br label %45 + %.not = icmp eq i32 %38, -1 + %..i25 = select i1 %.not, i32 0, i32 2 + store i32 %..i25, ptr %5, align 8, !alias.scope !3126 + store i32 %38, ptr %16, align 4, !alias.scope !3126 + br i1 %.not, label %46, label %.preheader.preheader -_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i +39: ; preds = %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i %40 = phi ptr [ %.pre.i, %._ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12_crit_edge.i ], [ %20, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ] %41 = getelementptr inbounds nuw i8, ptr %40, i64 720 %42 = load i32, ptr %41, align 8, !range !59, !alias.scope !3152, !noalias !3126, !noundef !4 %43 = getelementptr inbounds nuw i8, ptr %40, i64 724 %44 = load i32, ptr %43, align 4, !alias.scope !3152, !noalias !3126 - br label %45 - -45: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i - %.sroa.0.0.i.i.pn.i = phi i32 [ %.sroa.0.0.i.i.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %42, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %.pn16.i = phi i32 [ %38, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %44, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %switch.not.not.i = icmp eq i32 %.sroa.0.0.i.i.pn.i, 0 - %..i = select i1 %switch.not.not.i, i32 0, i32 2 - %..pn16.i = select i1 %switch.not.not.i, i32 undef, i32 %.pn16.i + %45 = icmp eq i32 %42, 0 + %..i = select i1 %45, i32 0, i32 2 + %..pn16.i = select i1 %45, i32 undef, i32 %44 store i32 %..i, ptr %5, align 8, !alias.scope !3126 store i32 %..pn16.i, ptr %16, align 4, !alias.scope !3126 - br i1 %switch.not.not.i, label %46, label %.preheader + br i1 %45, label %46, label %.preheader.preheader -46: ; preds = %45 +.preheader.preheader: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %39 + %.ph = phi i32 [ %44, %39 ], [ %38, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ] + br label %.preheader + +46: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %39 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) %47 = load ptr, ptr %11, align 8, !invariant.load !4, !noalias !3155, !nonnull !4 invoke void %47(ptr noundef nonnull align 1 %8) @@ -25349,9 +25351,9 @@ common.resume: ; preds = %17, %48, %"_ZN63_$L call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) ret void -.preheader: ; preds = %45, %.preheader.backedge - %63 = phi i32 [ %.be, %.preheader.backedge ], [ %.pn16.i, %45 ] - %64 = phi i32 [ %.be55, %.preheader.backedge ], [ 2, %45 ] +.preheader: ; preds = %.preheader.backedge, %.preheader.preheader + %63 = phi i32 [ %.ph, %.preheader.preheader ], [ %.be, %.preheader.backedge ] + %64 = phi i32 [ 2, %.preheader.preheader ], [ %.be58, %.preheader.backedge ] call void @llvm.experimental.noalias.scope.decl(metadata !3164) switch i32 %64, label %default.unreachable.i7 [ i32 0, label %thread-pre-split.backedge @@ -25413,8 +25415,8 @@ default.unreachable.i7: ; preds = %.preheader br label %thread-pre-split.backedge thread-pre-split.backedge: ; preds = %.preheader, %.preheader, %90, %91 - %.be56 = phi i32 [ %88, %90 ], [ %63, %91 ], [ %63, %.preheader ], [ %63, %.preheader ] - %.be57 = phi i32 [ 3, %90 ], [ 3, %91 ], [ %64, %.preheader ], [ %64, %.preheader ] + %.be59 = phi i32 [ %88, %90 ], [ %63, %91 ], [ %63, %.preheader ], [ %63, %.preheader ] + %.be60 = phi i32 [ 3, %90 ], [ 3, %91 ], [ %64, %.preheader ], [ %64, %.preheader ] br label %thread-pre-split 91: ; preds = %76 @@ -25494,7 +25496,7 @@ _ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.ll .preheader.backedge: ; preds = %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread14._ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread_crit_edge, %106, %103, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit.i", %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit %.be = phi i32 [ %.pre.pre, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread14._ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread_crit_edge ], [ %storemerge, %106 ], [ %storemerge, %103 ], [ %storemerge, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit.i" ], [ %storemerge, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit ] - %.be55 = phi i32 [ %.pr9.pre, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread14._ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread_crit_edge ], [ 1, %106 ], [ 1, %103 ], [ 1, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit.i" ], [ 1, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit ] + %.be58 = phi i32 [ %.pr9.pre, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread14._ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit.thread_crit_edge ], [ 1, %106 ], [ 1, %103 ], [ 1, %"_ZN122_$LT$cranelift_codegen..ir..dfg..Insts$u20$as$u20$core..ops..index..Index$LT$cranelift_codegen..ir..entities..Inst$GT$$GT$5index17h3099bfddb000823eE.exit.i" ], [ 1, %_ZN17cranelift_codegen20nan_canonicalization11is_fp_arith17hc76b4575843e19ffE.llvm.5781664634918412060.exit ] br label %.preheader 112: ; preds = %17 @@ -27203,7 +27205,7 @@ define void @_ZN17cranelift_codegen16unreachable_code26eliminate_unreachable_cod %.sroa.7.0 = phi i32 [ undef, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$13with_capacity17h82400837a24af1dcE.exit" ], [ %.sroa.7.0.be, %.backedge ] %.sroa.0.0 = phi i32 [ 0, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$13with_capacity17h82400837a24af1dcE.exit" ], [ %.sroa.0.0.be, %.backedge ] switch i32 %.sroa.0.0, label %default.unreachable [ - i32 0, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i + i32 0, label %92 i32 1, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i i32 2, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i i32 3, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i @@ -27221,7 +27223,7 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i.i = select i1 %.not.i.i.i, ptr %84, ptr %51 %85 = load i32, ptr %.0.i.i.i.i, align 4, !noalias !3550, !noundef !4 %.not.i = icmp eq i32 %85, -1 - br i1 %.not.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i + br i1 %.not.i, label %92, label %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %80, %80 %.sroa.4.0.i11.i = phi i32 [ %85, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i ], [ %.sroa.7.0, %80 ], [ %.sroa.7.0, %80 ] @@ -27233,14 +27235,8 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 %.0.i.i.i = select i1 %.not.i.i, ptr %89, ptr %54 %90 = getelementptr inbounds nuw i8, ptr %.0.i.i.i, i64 4 %91 = load i32, ptr %90, align 4, !noalias !3560, !noundef !4 - %92 = icmp ne i32 %91, -1 - %.sroa.0.0.i.i.i = zext i1 %92 to i32 - br label %95 - -_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i: ; preds = %80, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i - %93 = load i32, ptr %55, align 8, !range !59, !alias.scope !3561, !noalias !3560, !noundef !4 - %94 = load i32, ptr %56, align 4, !alias.scope !3561, !noalias !3560 - br label %95 + %.not = icmp eq i32 %91, -1 + br i1 %.not, label %255, label %96 .loopexit: ; preds = %260, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit.thread", %.noexc81 %lpad.loopexit = landingpad { ptr, i32 } @@ -27267,16 +27263,17 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 invoke void @"_ZN4core3ptr103drop_in_place$LT$cranelift_entity..set..EntitySet$LT$cranelift_codegen..ir..entities..JumpTable$GT$$GT$17h456d0ee4b168f660E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %17) #41 to label %23 unwind label %305 -95: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i - %.sroa.0.0.i.i.pn.i = phi i32 [ %.sroa.0.0.i.i.i, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %93, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %.pn16.i = phi i32 [ %91, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %94, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread12.i ] - %switch.not.not.i = icmp eq i32 %.sroa.0.0.i.i.pn.i, 0 - br i1 %switch.not.not.i, label %255, label %96 +92: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.i, %80 + %93 = load i32, ptr %55, align 8, !range !59, !alias.scope !3561, !noalias !3560, !noundef !4 + %94 = load i32, ptr %56, align 4, !alias.scope !3561, !noalias !3560 + %95 = icmp eq i32 %93, 0 + br i1 %95, label %255, label %96 -96: ; preds = %95 +96: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %92 + %..pn16.i145 = phi i32 [ %91, %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i ], [ %94, %92 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) - store i32 %.pn16.i, ptr %16, align 4 - %97 = zext i32 %.pn16.i to i64 + store i32 %..pn16.i145, ptr %16, align 4 + %97 = zext i32 %..pn16.i145 to i64 %.not.i28 = icmp ugt i64 %60, %97 %98 = getelementptr inbounds nuw { i32, i32 }, ptr %58, i64 %97 %.0.i.i = select i1 %.not.i28, ptr %98, ptr %61 @@ -27286,10 +27283,10 @@ _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.578 _ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i30: ; preds = %109, %114 %.pre-phi = phi i64 [ %97, %109 ], [ %.pre141, %114 ] - %100 = phi i32 [ %.pn16.i, %109 ], [ %.pre, %114 ] + %100 = phi i32 [ %..pn16.i145, %109 ], [ %.pre, %114 ] %101 = load ptr, ptr %52, align 8, !alias.scope !3564, !noalias !3569, !nonnull !4, !noundef !4 %102 = load i64, ptr %53, align 8, !alias.scope !3564, !noalias !3569, !noundef !4 - %103 = zext i32 %.pn16.i to i64 + %103 = zext i32 %..pn16.i145 to i64 %.not.i.i32 = icmp ugt i64 %102, %103 %104 = getelementptr inbounds nuw { i32, i32, i32, i32, i8, [3 x i8] }, ptr %101, i64 %103 %.0.i.i.i33 = select i1 %.not.i.i32, ptr %104, ptr %54 @@ -27580,7 +27577,7 @@ _ZN17cranelift_codegen2ir6layout6Layout11remove_inst17ha518a64ce21b86a8E.exit: ; br label %.backedge .backedge: ; preds = %202, %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17hb1d57a8581728360E.llvm.5781664634918412060.exit.i66", %226, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$6insert17h8028f5707b09aedeE.exit" - %.sroa.7.0.be = phi i32 [ %.pn16.i, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$6insert17h8028f5707b09aedeE.exit" ], [ %.pn16.i, %226 ], [ %105, %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17hb1d57a8581728360E.llvm.5781664634918412060.exit.i66" ], [ %105, %202 ] + %.sroa.7.0.be = phi i32 [ %..pn16.i145, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$6insert17h8028f5707b09aedeE.exit" ], [ %..pn16.i145, %226 ], [ %105, %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17hb1d57a8581728360E.llvm.5781664634918412060.exit.i66" ], [ %105, %202 ] %.sroa.0.0.be = phi i32 [ 2, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$6insert17h8028f5707b09aedeE.exit" ], [ 2, %226 ], [ %..i38, %"_ZN104_$LT$cranelift_entity..map..SecondaryMap$LT$K$C$V$GT$$u20$as$u20$core..ops..index..IndexMut$LT$K$GT$$GT$9index_mut17hb1d57a8581728360E.llvm.5781664634918412060.exit.i66" ], [ %..i38, %202 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) br label %80 @@ -27675,7 +27672,7 @@ _ZN17cranelift_codegen2ir6layout6Layout11remove_inst17ha518a64ce21b86a8E.exit: ; store i64 %254, ptr %250, align 8 br label %.backedge -255: ; preds = %95 +255: ; preds = %_ZN17cranelift_codegen6cursor6Cursor13current_block17h58dd51c08ecfd105E.llvm.5781664634918412060.exit.thread.i, %92 %256 = getelementptr inbounds nuw i8, ptr %0, i64 352 %257 = load ptr, ptr %256, align 8, !alias.scope !3646, !noalias !3649, !nonnull !4, !noundef !4 %258 = load i64, ptr %30, align 8, !alias.scope !3646, !noalias !3649, !noundef !4 @@ -27688,7 +27685,7 @@ _ZN17cranelift_codegen2ir6layout6Layout11remove_inst17ha518a64ce21b86a8E.exit: ; store i64 0, ptr %.sroa.3.0..sroa_idx, align 8 br label %260 -260: ; preds = %.backedge155, %255 +260: ; preds = %.backedge159, %255 %261 = invoke noundef align 8 dereferenceable_or_null(24) ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1464102f325cca20E.llvm.17595789031839490487"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) to label %.noexc78 unwind label %.loopexit @@ -27787,7 +27784,7 @@ common.resume: ; preds = %23, %284, %"_ZN63_$ %302 = and i64 %273, 63 %303 = lshr i64 %301, %302 %304 = trunc i64 %303 to i1 - br i1 %304, label %.backedge155, label %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit.thread" + br i1 %304, label %.backedge159, label %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit.thread" "_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit.thread": ; preds = %272, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit" call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5), !noalias !3677 @@ -27800,9 +27797,9 @@ common.resume: ; preds = %23, %284, %"_ZN63_$ _ZN17cranelift_codegen2ir9jumptable13JumpTableData5clear17h3ba30f6f8828107bE.exit: ; preds = %.noexc81 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !3677 - br label %.backedge155 + br label %.backedge159 -.backedge155: ; preds = %_ZN17cranelift_codegen2ir9jumptable13JumpTableData5clear17h3ba30f6f8828107bE.exit, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit" +.backedge159: ; preds = %_ZN17cranelift_codegen2ir9jumptable13JumpTableData5clear17h3ba30f6f8828107bE.exit, %"_ZN16cranelift_entity3set18EntitySet$LT$K$GT$8contains17hccc4b96a2d82f35fE.exit" br label %260 305: ; preds = %.loopexit.split-lp, %23 diff --git a/bench/wireshark/optimized/packet-alljoyn.c.ll b/bench/wireshark/optimized/packet-alljoyn.c.ll index 9daf7e338c4..f138e388f28 100644 --- a/bench/wireshark/optimized/packet-alljoyn.c.ll +++ b/bench/wireshark/optimized/packet-alljoyn.c.ll @@ -2713,17 +2713,16 @@ define internal fastcc void @advance_to_end_of_signature(ptr noundef %0, ptr noc store i8 %9, ptr %2, align 1 switch i8 %7, label %thread-pre-split.backedge [ i8 97, label %thread-pre-split.backedgethread-pre-split - i8 40, label %18 - i8 123, label %19 + i8 40, label %19 + i8 123, label %20 ] .lr.ph.split: ; preds = %.lr.ph, %12 - %.01926 = phi i32 [ %spec.select, %12 ], [ %.019.ph.be, %.lr.ph ] + %.01926 = phi i1 [ %17, %12 ], [ %18, %.lr.ph ] %10 = load ptr, ptr %1, align 8 %11 = load i8, ptr %10, align 1 %.not22 = icmp ne i8 %11, 0 - %.not23 = icmp eq i32 %.01926, 0 - %or.cond = select i1 %.not22, i1 %.not23, i1 false + %or.cond = select i1 %.not22, i1 %.01926, i1 false br i1 %or.cond, label %12, label %.critedge 12: ; preds = %.lr.ph.split @@ -2733,30 +2732,30 @@ define internal fastcc void @advance_to_end_of_signature(ptr noundef %0, ptr noc %15 = load i8, ptr %2, align 1 %16 = add i8 %15, -1 store i8 %16, ptr %2, align 1 - %17 = icmp eq i8 %.0.ph.be, %14 - %spec.select = zext i1 %17 to i32 + %17 = icmp ne i8 %.0.ph.be, %14 %.not = icmp eq i8 %16, 0 br i1 %.not, label %.critedge, label %.lr.ph.split, !llvm.loop !19 -thread-pre-split.backedgethread-pre-split: ; preds = %.split.us, %18, %19 - %.not24.be.ph = phi i1 [ false, %18 ], [ false, %19 ], [ true, %.split.us ] - %.0.ph.be.ph = phi i8 [ 41, %18 ], [ 125, %19 ], [ 0, %.split.us ] +thread-pre-split.backedgethread-pre-split: ; preds = %.split.us, %19, %20 + %.not24.be.ph = phi i1 [ false, %19 ], [ false, %20 ], [ true, %.split.us ] + %.0.ph.be.ph = phi i8 [ 41, %19 ], [ 125, %20 ], [ 0, %.split.us ] tail call fastcc void @advance_to_end_of_signature(ptr noundef %0, ptr noundef %1, ptr noundef %2) %.pr.pr = load i8, ptr %2, align 1 br label %thread-pre-split.backedge thread-pre-split.backedge: ; preds = %thread-pre-split.backedgethread-pre-split, %.split.us %.pr = phi i8 [ %.pr.pr, %thread-pre-split.backedgethread-pre-split ], [ %9, %.split.us ] + %18 = phi i1 [ true, %thread-pre-split.backedgethread-pre-split ], [ false, %.split.us ] %.019.ph.be = phi i32 [ 0, %thread-pre-split.backedgethread-pre-split ], [ 1, %.split.us ] %.not24.be = phi i1 [ %.not24.be.ph, %thread-pre-split.backedgethread-pre-split ], [ true, %.split.us ] %.0.ph.be = phi i8 [ %.0.ph.be.ph, %thread-pre-split.backedgethread-pre-split ], [ 0, %.split.us ] %.not25 = icmp eq i8 %.pr, 0 br i1 %.not25, label %.critedge, label %.lr.ph, !llvm.loop !19 -18: ; preds = %.split.us +19: ; preds = %.split.us br label %thread-pre-split.backedgethread-pre-split -19: ; preds = %.split.us +20: ; preds = %.split.us br label %thread-pre-split.backedgethread-pre-split .critedge: ; preds = %.lr.ph.split.us, %thread-pre-split.backedge, %12, %.lr.ph.split, %3 diff --git a/bench/wireshark/optimized/packet-amqp.c.ll b/bench/wireshark/optimized/packet-amqp.c.ll index 4be2f420bfb..29d92191080 100644 --- a/bench/wireshark/optimized/packet-amqp.c.ll +++ b/bench/wireshark/optimized/packet-amqp.c.ll @@ -13517,7 +13517,7 @@ define internal i32 @dissect_amqp_1_0_variable(ptr noundef %0, ptr noundef %1, i 13: ; preds = %6 %14 = tail call ptr (ptr, ptr, ptr, ptr, ...) @expert_add_info_format(ptr noundef %1, ptr noundef %4, ptr noundef nonnull @ei_amqp_unknown_amqp_type, ptr noundef nonnull @.str.1528, i32 noundef %3) #12 - br label %121 + br label %113 15: ; preds = %11, %8 %.028 = phi i32 [ %10, %8 ], [ %12, %11 ] @@ -13593,132 +13593,124 @@ define internal i32 @dissect_amqp_1_0_variable(ptr noundef %0, ptr noundef %1, i br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.thread.i - %59 = phi i32 [ %106, %.thread.i ], [ %58, %.lr.ph.i.preheader ] - %60 = phi ptr [ %107, %.thread.i ], [ %.pre36, %.lr.ph.i.preheader ] + %59 = phi i32 [ %98, %.thread.i ], [ %58, %.lr.ph.i.preheader ] + %60 = phi ptr [ %99, %.thread.i ], [ %.pre36, %.lr.ph.i.preheader ] %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.thread.i ], [ 0, %.lr.ph.i.preheader ] %61 = getelementptr %struct._amqp_message_decode_t, ptr %60, i64 %indvars.iv.i %62 = load i32, ptr %61, align 8 switch i32 %62, label %.thread.i [ i32 0, label %63 - i32 1, label %69 - i32 2, label %75 - i32 3, label %84 - i32 4, label %95 + i32 1, label %67 + i32 2, label %71 + i32 3, label %78 + i32 4, label %83 ] 63: ; preds = %.lr.ph.i %64 = getelementptr inbounds nuw i8, ptr %61, i64 8 %65 = load ptr, ptr %64, align 8 %66 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %57, ptr noundef nonnull dereferenceable(1) %65) #13 - %67 = icmp eq i32 %66, 0 - %68 = zext i1 %67 to i32 - br label %104 - -69: ; preds = %.lr.ph.i - %70 = getelementptr inbounds nuw i8, ptr %61, i64 8 - %71 = load ptr, ptr %70, align 8 - %72 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %57, ptr noundef nonnull dereferenceable(1) %71) #13 - %73 = icmp ne ptr %72, null - %74 = zext i1 %73 to i32 - br label %104 - -75: ; preds = %.lr.ph.i - %76 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #13 - %77 = getelementptr inbounds nuw i8, ptr %61, i64 8 - %78 = load ptr, ptr %77, align 8 - %79 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %78) #13 - %.not59.i = icmp ult i64 %76, %79 - br i1 %.not59.i, label %.thread.i, label %80 - -80: ; preds = %75 - %81 = call i32 @strncmp(ptr noundef %57, ptr noundef %78, i64 noundef %79) #13 - %82 = icmp eq i32 %81, 0 - %83 = zext i1 %82 to i32 - br label %104 - -84: ; preds = %.lr.ph.i - %85 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #13 - %86 = getelementptr inbounds nuw i8, ptr %61, i64 8 - %87 = load ptr, ptr %86, align 8 - %88 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %87) #13 - %.not58.i = icmp ult i64 %85, %88 - br i1 %.not58.i, label %.thread.i, label %89 - -89: ; preds = %84 - %90 = sub nuw i64 %85, %88 - %91 = getelementptr i8, ptr %57, i64 %90 - %92 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %91, ptr noundef nonnull dereferenceable(1) %87) #13 - %93 = icmp eq i32 %92, 0 - %94 = zext i1 %93 to i32 - br label %104 - -95: ; preds = %.lr.ph.i - %96 = getelementptr inbounds nuw i8, ptr %61, i64 16 - %97 = load ptr, ptr %96, align 8 - %.not57.i = icmp eq ptr %97, null - br i1 %.not57.i, label %.thread.i, label %98 - -98: ; preds = %95 + %.not41 = icmp eq i32 %66, 0 + br i1 %.not41, label %find_data_dissector.exit, label %..thread.i_crit_edge + +67: ; preds = %.lr.ph.i + %68 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %69 = load ptr, ptr %68, align 8 + %70 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %57, ptr noundef nonnull dereferenceable(1) %69) #13 + %.not = icmp eq ptr %70, null + br i1 %.not, label %..thread.i_crit_edge, label %find_data_dissector.exit + +71: ; preds = %.lr.ph.i + %72 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #13 + %73 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %74 = load ptr, ptr %73, align 8 + %75 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %74) #13 + %.not59.i = icmp ult i64 %72, %75 + br i1 %.not59.i, label %.thread.i, label %76 + +76: ; preds = %71 + %77 = call i32 @strncmp(ptr noundef %57, ptr noundef %74, i64 noundef %75) #13 + %.not40 = icmp eq i32 %77, 0 + br i1 %.not40, label %find_data_dissector.exit, label %..thread.i_crit_edge + +78: ; preds = %.lr.ph.i + %79 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #13 + %80 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %81 = load ptr, ptr %80, align 8 + %82 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %81) #13 + %.not58.i = icmp ult i64 %79, %82 + br i1 %.not58.i, label %.thread.i, label %93 + +83: ; preds = %.lr.ph.i + %84 = getelementptr inbounds nuw i8, ptr %61, i64 16 + %85 = load ptr, ptr %84, align 8 + %.not57.i = icmp eq ptr %85, null + br i1 %.not57.i, label %.thread.i, label %86 + +86: ; preds = %83 store ptr null, ptr %7, align 8 - %99 = load ptr, ptr %96, align 8 - %100 = call i32 @g_regex_match(ptr noundef %99, ptr noundef %57, i32 noundef 0, ptr noundef nonnull %7) #12 - %101 = load ptr, ptr %7, align 8 - %102 = call i32 @g_match_info_matches(ptr noundef %101) #12 - %103 = load ptr, ptr %7, align 8 - call void @g_match_info_free(ptr noundef %103) #12 + %87 = load ptr, ptr %84, align 8 + %88 = call i32 @g_regex_match(ptr noundef %87, ptr noundef %57, i32 noundef 0, ptr noundef nonnull %7) #12 + %89 = load ptr, ptr %7, align 8 + %90 = call i32 @g_match_info_matches(ptr noundef %89) #12 + %91 = load ptr, ptr %7, align 8 + call void @g_match_info_free(ptr noundef %91) #12 + %92 = icmp eq i32 %90, 0 %.pre = load ptr, ptr @amqp_message_decodes, align 8 - br label %104 + br i1 %92, label %..thread.i_crit_edge, label %find_data_dissector.exit -104: ; preds = %98, %89, %80, %69, %63 - %105 = phi ptr [ %.pre, %98 ], [ %60, %69 ], [ %60, %63 ], [ %60, %80 ], [ %60, %89 ] - %.1.i = phi i32 [ %102, %98 ], [ %74, %69 ], [ %68, %63 ], [ %83, %80 ], [ %94, %89 ] - %.not60.i = icmp eq i32 %.1.i, 0 - br i1 %.not60.i, label %..thread.i_crit_edge, label %find_data_dissector.exit +93: ; preds = %78 + %94 = sub nuw i64 %79, %82 + %95 = getelementptr i8, ptr %57, i64 %94 + %96 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %95, ptr noundef nonnull dereferenceable(1) %81) #13 + %.not39 = icmp eq i32 %96, 0 + br i1 %.not39, label %find_data_dissector.exit, label %..thread.i_crit_edge -..thread.i_crit_edge: ; preds = %104 +..thread.i_crit_edge: ; preds = %76, %63, %67, %86, %93 + %97 = phi ptr [ %.pre, %86 ], [ %60, %93 ], [ %60, %67 ], [ %60, %63 ], [ %60, %76 ] %.pre37 = load i32, ptr @num_amqp_message_decodes, align 4 br label %.thread.i -.thread.i: ; preds = %..thread.i_crit_edge, %95, %84, %75, %.lr.ph.i - %106 = phi i32 [ %.pre37, %..thread.i_crit_edge ], [ %59, %95 ], [ %59, %84 ], [ %59, %75 ], [ %59, %.lr.ph.i ] - %107 = phi ptr [ %105, %..thread.i_crit_edge ], [ %60, %95 ], [ %60, %84 ], [ %60, %75 ], [ %60, %.lr.ph.i ] +.thread.i: ; preds = %..thread.i_crit_edge, %83, %78, %71, %.lr.ph.i + %98 = phi i32 [ %.pre37, %..thread.i_crit_edge ], [ %59, %83 ], [ %59, %78 ], [ %59, %71 ], [ %59, %.lr.ph.i ] + %99 = phi ptr [ %97, %..thread.i_crit_edge ], [ %60, %83 ], [ %60, %78 ], [ %60, %71 ], [ %60, %.lr.ph.i ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %108 = zext i32 %106 to i64 - %109 = icmp samesign ult i64 %indvars.iv.next.i, %108 - br i1 %109, label %.lr.ph.i, label %find_data_dissector.exit.thread32, !llvm.loop !24 + %100 = zext i32 %98 to i64 + %101 = icmp samesign ult i64 %indvars.iv.next.i, %100 + br i1 %101, label %.lr.ph.i, label %find_data_dissector.exit.thread32, !llvm.loop !24 find_data_dissector.exit.thread.sink.split: ; preds = %30, %51, %26 - %110 = tail call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 + %102 = tail call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 br label %.critedge.sink.split find_data_dissector.exit.thread32: ; preds = %.thread.i, %55 - %111 = call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 + %103 = call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 br label %.critedge.sink.split -find_data_dissector.exit: ; preds = %104 - %112 = getelementptr inbounds nuw i8, ptr %61, i64 32 - %113 = load ptr, ptr %112, align 8 - %114 = getelementptr inbounds nuw i8, ptr %61, i64 40 - %115 = load ptr, ptr %114, align 8 - %116 = call i32 @call_dissector_with_data(ptr noundef %113, ptr noundef %20, ptr noundef %1, ptr noundef nonnull %4, ptr noundef %115) #12 - %117 = call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 +find_data_dissector.exit: ; preds = %76, %63, %67, %86, %93 + %104 = getelementptr inbounds nuw i8, ptr %61, i64 32 + %105 = load ptr, ptr %104, align 8 + %106 = getelementptr inbounds nuw i8, ptr %61, i64 40 + %107 = load ptr, ptr %106, align 8 + %108 = call i32 @call_dissector_with_data(ptr noundef %105, ptr noundef %20, ptr noundef %1, ptr noundef nonnull %4, ptr noundef %107) #12 + %109 = call ptr @g_ptr_array_free(ptr noundef nonnull %24, i32 noundef 1) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) - br label %119 + br label %111 .critedge.sink.split: ; preds = %22, %19, %find_data_dissector.exit.thread.sink.split, %find_data_dissector.exit.thread32 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) br label %.critedge .critedge: ; preds = %.critedge.sink.split, %15 - %118 = call ptr @proto_tree_add_item(ptr noundef %4, i32 noundef %5, ptr noundef %0, i32 noundef %16, i32 noundef %.028, i32 noundef 0) #12 - br label %119 + %110 = call ptr @proto_tree_add_item(ptr noundef %4, i32 noundef %5, ptr noundef %0, i32 noundef %16, i32 noundef %.028, i32 noundef 0) #12 + br label %111 -119: ; preds = %find_data_dissector.exit, %.critedge - %120 = add i32 %.028, %3 - br label %121 +111: ; preds = %find_data_dissector.exit, %.critedge + %112 = add i32 %.028, %3 + br label %113 -121: ; preds = %119, %13 - %.0 = phi i32 [ %120, %119 ], [ %3, %13 ] +113: ; preds = %111, %13 + %.0 = phi i32 [ %112, %111 ], [ %3, %13 ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-quic.c.ll b/bench/wireshark/optimized/packet-quic.c.ll index f1388c6d36e..ea6ed5dbc74 100644 --- a/bench/wireshark/optimized/packet-quic.c.ll +++ b/bench/wireshark/optimized/packet-quic.c.ll @@ -7032,8 +7032,8 @@ proto_item_set_generated.exit.thread.i.i: ; preds = %474 %538 = getelementptr inbounds nuw i8, ptr %537, i64 50 %539 = load i16, ptr %538, align 2 %540 = and i16 %539, 8 - %.not242.not.not.i.i = icmp eq i16 %540, 0 - br i1 %.not242.not.not.i.i, label %541, label %.thread261.i.i + %.not242.not.not.not.i.i = icmp eq i16 %540, 0 + br i1 %.not242.not.not.not.i.i, label %541, label %.thread261.i.i 541: ; preds = %536 %542 = load i32, ptr %440, align 4 @@ -7048,7 +7048,7 @@ proto_item_set_generated.exit.thread.i.i: ; preds = %474 %.neg.i.i = sub i32 %546, %545 %547 = call i32 @tvb_reported_length(ptr noundef %388) #15 %548 = add i32 %.neg.i.i, %547 - br i1 %.not242.not.not.i.i, label %549, label %.thread286.i.i + br i1 %.not242.not.not.not.i.i, label %549, label %.thread286.i.i 549: ; preds = %.thread261.i.i, %.thread261.thread326.i.i %.2211336.i.i = phi i32 [ %489, %.thread261.thread326.i.i ], [ %548, %.thread261.i.i ] diff --git a/bench/wolfssl/optimized/api.c.ll b/bench/wolfssl/optimized/api.c.ll index f0e42b0df7e..5abe29911a7 100644 --- a/bench/wolfssl/optimized/api.c.ll +++ b/bench/wolfssl/optimized/api.c.ll @@ -3497,37 +3497,38 @@ do.body10: ; preds = %test_ssl_memio_setu br label %do.end167 while.body.i: ; preds = %while.body.i.preheader, %if.end45.i - %failing_c.05.i = phi i32 [ %failing_c.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] - %failing_s.04.i = phi i32 [ %failing_s.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] - %hs_s.03.i = phi i32 [ %hs_s.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] - %hs_c.02.i = phi i32 [ %hs_c.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] + %failing_c.06.i = phi i32 [ %failing_c.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] + %failing_s.05.i = phi i32 [ %failing_s.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] + %hs_s.04.i = phi i32 [ %hs_s.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] + %hs_c.03.i = phi i32 [ %hs_c.1.i, %if.end45.i ], [ 0, %while.body.i.preheader ] %max_rounds.addr.01.i = phi i32 [ %dec.i, %if.end45.i ], [ 10, %while.body.i.preheader ] - %tobool2.not.i = icmp eq i32 %hs_c.02.i, 0 + %tobool2.not.i = icmp eq i32 %hs_c.03.i, 0 br i1 %tobool2.not.i, label %if.then3.i, label %if.end18.i if.then3.i: ; preds = %while.body.i call void @wolfSSL_SetLoggingPrefix(ptr noundef nonnull @.str.3) #25 %102 = load ptr, ptr %c_ssl464.i, align 8 - %call.i42 = call i32 @wolfSSL_connect(ptr noundef %102) #25 + %call.i41 = call i32 @wolfSSL_connect(ptr noundef %102) #25 call void @wolfSSL_SetLoggingPrefix(ptr noundef null) #25 - %cmp4.i = icmp eq i32 %call.i42, 1 - br i1 %cmp4.i, label %if.end18.i, label %if.else.i43 + %cmp4.i = icmp eq i32 %call.i41, 1 + br i1 %cmp4.i, label %if.end18.i, label %if.else.i42 -if.else.i43: ; preds = %if.then3.i +if.else.i42: ; preds = %if.then3.i %103 = load ptr, ptr %c_ssl464.i, align 8 - %call7.i44 = call i32 @wolfSSL_get_error(ptr noundef %103, i32 noundef %call.i42) #25 - %104 = add i32 %call7.i44, -4 + %call7.i43 = call i32 @wolfSSL_get_error(ptr noundef %103, i32 noundef %call.i41) #25 + %104 = add i32 %call7.i43, -4 %or.cond.i = icmp ult i32 %104, -2 br i1 %or.cond.i, label %if.then10.i, label %if.end18.i -if.then10.i: ; preds = %if.else.i43 - %tobool13.not.i = icmp eq i32 %failing_s.04.i, 0 +if.then10.i: ; preds = %if.else.i42 + %tobool13.not.i = icmp eq i32 %failing_s.05.i, 0 br i1 %tobool13.not.i, label %if.end18.i, label %do.body33 -if.end18.i: ; preds = %if.then10.i, %if.else.i43, %if.then3.i, %while.body.i - %hs_c.1.i = phi i32 [ 1, %while.body.i ], [ 1, %if.then10.i ], [ 0, %if.else.i43 ], [ 1, %if.then3.i ] - %failing_c.1.i = phi i32 [ %failing_c.05.i, %while.body.i ], [ 1, %if.then10.i ], [ %failing_c.05.i, %if.else.i43 ], [ %failing_c.05.i, %if.then3.i ] - %tobool19.not.i = icmp eq i32 %hs_s.03.i, 0 +if.end18.i: ; preds = %if.then10.i, %if.else.i42, %if.then3.i, %while.body.i + %tobool39.i = phi i1 [ false, %while.body.i ], [ false, %if.then10.i ], [ true, %if.else.i42 ], [ false, %if.then3.i ] + %hs_c.1.i = phi i32 [ 1, %while.body.i ], [ 1, %if.then10.i ], [ 0, %if.else.i42 ], [ 1, %if.then3.i ] + %failing_c.1.i = phi i32 [ %failing_c.06.i, %while.body.i ], [ 1, %if.then10.i ], [ %failing_c.06.i, %if.else.i42 ], [ %failing_c.06.i, %if.then3.i ] + %tobool19.not.i = icmp eq i32 %hs_s.04.i, 0 br i1 %tobool19.not.i, label %if.then20.i, label %if.end45.i if.then20.i: ; preds = %if.end18.i @@ -3550,17 +3551,17 @@ if.then30.i: ; preds = %if.else24.i br i1 %tobool31.not.i, label %if.end45.i, label %do.body33 if.end45.i: ; preds = %if.then30.i, %if.else24.i, %if.then20.i, %if.end18.i + %tobool41.i = phi i1 [ false, %if.end18.i ], [ false, %if.then30.i ], [ true, %if.else24.i ], [ false, %if.then20.i ] %hs_s.1.i = phi i32 [ 1, %if.end18.i ], [ 1, %if.then30.i ], [ 0, %if.else24.i ], [ 1, %if.then20.i ] - %failing_s.1.i = phi i32 [ %failing_s.04.i, %if.end18.i ], [ 1, %if.then30.i ], [ %failing_s.04.i, %if.else24.i ], [ %failing_s.04.i, %if.then20.i ] + %failing_s.1.i = phi i32 [ %failing_s.05.i, %if.end18.i ], [ 1, %if.then30.i ], [ %failing_s.05.i, %if.else24.i ], [ %failing_s.05.i, %if.then20.i ] %dec.i = add nsw i32 %max_rounds.addr.01.i, -1 - %land.ext.i = and i32 %hs_s.1.i, %hs_c.1.i - %tobool.not.i41 = icmp eq i32 %land.ext.i, 0 + %.not.i = or i1 %tobool39.i, %tobool41.i %cmp1.i = icmp ugt i32 %max_rounds.addr.01.i, 1 - %108 = select i1 %tobool.not.i41, i1 %cmp1.i, i1 false + %108 = select i1 %.not.i, i1 %cmp1.i, i1 false br i1 %108, label %while.body.i, label %test_ssl_memio_do_handshake.exit, !llvm.loop !9 test_ssl_memio_do_handshake.exit: ; preds = %if.end45.i - br i1 %tobool.not.i41, label %do.body33, label %do.end47 + br i1 %.not.i, label %do.body33, label %do.end47 do.body33: ; preds = %if.then10.i, %if.then30.i, %test_ssl_memio_do_handshake.exit %call34 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull @.str.18, i32 noundef 6475) @@ -3655,11 +3656,11 @@ if.then144: ; preds = %if.end109, %if.then call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %input.i) %c_msg.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 48 %141 = load ptr, ptr %c_msg.i, align 8 - %cmp.not.i45 = icmp eq ptr %141, null + %cmp.not.i44 = icmp eq ptr %141, null %c_msglen.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 56 %142 = load i32, ptr %c_msglen.i, align 8 - %msglen_c.0.i = select i1 %cmp.not.i45, i32 14, i32 %142 - %msg_c.0.i = select i1 %cmp.not.i45, ptr @.str.932, ptr %141 + %msglen_c.0.i = select i1 %cmp.not.i44, i32 14, i32 %142 + %msg_c.0.i = select i1 %cmp.not.i44, ptr @.str.932, ptr %141 %s_msg.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 64 %143 = load ptr, ptr %s_msg.i, align 8 %cmp5.not.i = icmp eq ptr %143, null @@ -3680,7 +3681,7 @@ do.body67.thread78.i: ; preds = %if.then144 %call24.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, ptr noundef nonnull @.str.934, ptr noundef nonnull @.str.935) %148 = load ptr, ptr @stdout, align 8 %149 = call i64 @fwrite(ptr nonnull @.str.23, i64 15, i64 1, ptr %148) - %call26.i48 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef %call13.i, i32 noundef %msglen_c.0.i) + %call26.i47 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef %call13.i, i32 noundef %msglen_c.0.i) %150 = load ptr, ptr @stdout, align 8 %151 = call i64 @fwrite(ptr nonnull @.str.25, i64 2, i64 1, ptr %150) %152 = load ptr, ptr @stdout, align 8 @@ -3692,8 +3693,8 @@ do.body67.thread78.i: ; preds = %if.then144 if.then37.critedge.i: ; preds = %if.then144 call void @wolfSSL_SetLoggingPrefix(ptr noundef nonnull @.str.4) #25 %153 = load ptr, ptr %s_ssl519.i, align 8 - %call39.i51 = call i32 @wolfSSL_read(ptr noundef %153, ptr noundef nonnull %input.i, i32 noundef 1023) #25 - %cmp45.i = icmp sgt i32 %call39.i51, 0 + %call39.i50 = call i32 @wolfSSL_read(ptr noundef %153, ptr noundef nonnull %input.i, i32 noundef 1023) #25 + %cmp45.i = icmp sgt i32 %call39.i50, 0 br i1 %cmp45.i, label %if.then70.i, label %do.end62.i do.end62.i: ; preds = %if.then37.critedge.i @@ -3703,22 +3704,22 @@ do.end62.i: ; preds = %if.then37.critedge. %call51.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.936, ptr noundef nonnull @.str.937, ptr noundef nonnull @.str.938) %156 = load ptr, ptr @stdout, align 8 %157 = call i64 @fwrite(ptr nonnull @.str.23, i64 15, i64 1, ptr %156) - %call53.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.939, i32 noundef %call39.i51, i32 noundef 0) + %call53.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.939, i32 noundef %call39.i50, i32 noundef 0) %158 = load ptr, ptr @stdout, align 8 %159 = call i64 @fwrite(ptr nonnull @.str.25, i64 2, i64 1, ptr %158) %160 = load ptr, ptr @stdout, align 8 %call55.i = call i32 @fflush(ptr noundef %160) - %cmp63.i = icmp sgt i32 %call39.i51, -1 + %cmp63.i = icmp sgt i32 %call39.i50, -1 br i1 %cmp63.i, label %do.body67.thread73.i, label %do.end157.critedge.i do.body67.thread73.i: ; preds = %do.end62.i - %idxprom76.i = zext nneg i32 %call39.i51 to i64 + %idxprom76.i = zext nneg i32 %call39.i50 to i64 %arrayidx77.i = getelementptr inbounds nuw [1024 x i8], ptr %input.i, i64 0, i64 %idxprom76.i store i8 0, ptr %arrayidx77.i, align 1 br label %do.end157.critedge.i if.then70.i: ; preds = %if.then37.critedge.i - %idxprom.i = zext nneg i32 %call39.i51 to i64 + %idxprom.i = zext nneg i32 %call39.i50 to i64 %arrayidx.i = getelementptr inbounds nuw [1024 x i8], ptr %input.i, i64 0, i64 %idxprom.i store i8 0, ptr %arrayidx.i, align 1 %161 = load ptr, ptr @stderr, align 8 @@ -3733,7 +3734,7 @@ do.body82.i: ; preds = %if.then70.i %call85.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.936, ptr noundef nonnull @.str.941, ptr noundef nonnull @.str.938) %164 = load ptr, ptr @stdout, align 8 %165 = call i64 @fwrite(ptr nonnull @.str.23, i64 15, i64 1, ptr %164) - %call87.i52 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.939, i32 noundef %call73.i, i32 noundef 0) + %call87.i51 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.939, i32 noundef %call73.i, i32 noundef 0) %166 = load ptr, ptr @stdout, align 8 %167 = call i64 @fwrite(ptr nonnull @.str.25, i64 2, i64 1, ptr %166) %168 = load ptr, ptr @stdout, align 8 @@ -3769,7 +3770,7 @@ do.end126.i: ; preds = %if.then100.i br i1 %cmp140.i, label %if.then167.i, label %do.body143.i do.body143.i: ; preds = %do.end126.i - %call144.i53 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull @.str.18, i32 noundef 6404) + %call144.i52 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull @.str.18, i32 noundef 6404) %178 = load ptr, ptr @stdout, align 8 %179 = call i64 @fwrite(ptr nonnull @.str.19, i64 15, i64 1, ptr %178) %call146.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.936, ptr noundef nonnull @.str.944, ptr noundef nonnull @.str.938) @@ -3833,7 +3834,7 @@ if.then202.i: ; preds = %do.end193.i br i1 %cmp213.i, label %if.end231.i, label %do.body216.i do.body216.i: ; preds = %if.then202.i - %call217.i54 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull @.str.18, i32 noundef 6412) + %call217.i53 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull @.str.18, i32 noundef 6412) %195 = load ptr, ptr @stdout, align 8 %196 = call i64 @fwrite(ptr nonnull @.str.19, i64 15, i64 1, ptr %195) %call219.i = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20, ptr noundef nonnull @.str.947, ptr noundef nonnull @.str.22) @@ -3894,35 +3895,35 @@ do.body153: ; preds = %do.body254.i, %do.b do.end167: ; preds = %do.body10, %do.body33, %do.body62, %do.body94, %do.body126, %test_ssl_memio_read_write.exit, %do.body153 %_ret.5 = phi i32 [ 0, %do.body153 ], [ 1, %test_ssl_memio_read_write.exit ], [ 0, %do.body126 ], [ 0, %do.body94 ], [ 0, %do.body62 ], [ 0, %do.body33 ], [ 0, %do.body10 ] %218 = load ptr, ptr %c_ssl464.i, align 8 - %call.i56 = call i32 @wolfSSL_get_error(ptr noundef %218, i32 noundef 0) #25 + %call.i55 = call i32 @wolfSSL_get_error(ptr noundef %218, i32 noundef 0) #25 %last_err.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 280 - store i32 %call.i56, ptr %last_err.i, align 8 + store i32 %call.i55, ptr %last_err.i, align 8 %219 = load ptr, ptr %s_ssl519.i, align 8 %call1.i = call i32 @wolfSSL_get_error(ptr noundef %219, i32 noundef 0) #25 %last_err2.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 176 store i32 %call1.i, ptr %last_err2.i, align 8 %on_cleanup.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 216 %220 = load ptr, ptr %on_cleanup.i, align 8 - %cmp.not.i58 = icmp eq ptr %220, null - br i1 %cmp.not.i58, label %if.end.i61, label %if.then.i59 + %cmp.not.i57 = icmp eq ptr %220, null + br i1 %cmp.not.i57, label %if.end.i60, label %if.then.i58 -if.then.i59: ; preds = %do.end167 +if.then.i58: ; preds = %do.end167 %221 = load ptr, ptr %c_ssl464.i, align 8 - %call7.i60 = call i32 %220(ptr noundef %221) #25 - br label %if.end.i61 + %call7.i59 = call i32 %220(ptr noundef %221) #25 + br label %if.end.i60 -if.end.i61: ; preds = %if.then.i59, %do.end167 +if.end.i60: ; preds = %if.then.i58, %do.end167 %on_cleanup9.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 112 %222 = load ptr, ptr %on_cleanup9.i, align 8 %cmp10.not.i = icmp eq ptr %222, null br i1 %cmp10.not.i, label %if.end16.i, label %if.then11.i -if.then11.i: ; preds = %if.end.i61 +if.then11.i: ; preds = %if.end.i60 %223 = load ptr, ptr %s_ssl519.i, align 8 %call15.i = call i32 %222(ptr noundef %223) #25 br label %if.end16.i -if.end16.i: ; preds = %if.then11.i, %if.end.i61 +if.end16.i: ; preds = %if.then11.i, %if.end.i60 %224 = load ptr, ptr %s_ssl519.i, align 8 %call18.i = call i32 @wolfSSL_shutdown(ptr noundef %224) #25 %225 = load ptr, ptr %c_ssl464.i, align 8 @@ -3931,11 +3932,11 @@ if.end16.i: ; preds = %if.then11.i, %if.en call void @wolfSSL_free(ptr noundef %226) #25 %227 = load ptr, ptr %c_ssl464.i, align 8 call void @wolfSSL_free(ptr noundef %227) #25 - %isSharedCtx.i62 = getelementptr inbounds nuw i8, ptr %test_ctx, i64 180 - %bf.load.i63 = load i8, ptr %isSharedCtx.i62, align 4 - %bf.clear.i = and i8 %bf.load.i63, 1 - %tobool.not.i64 = icmp eq i8 %bf.clear.i, 0 - br i1 %tobool.not.i64, label %if.then24.i, label %if.end26.i + %isSharedCtx.i61 = getelementptr inbounds nuw i8, ptr %test_ctx, i64 180 + %bf.load.i62 = load i8, ptr %isSharedCtx.i61, align 4 + %bf.clear.i = and i8 %bf.load.i62, 1 + %tobool.not.i63 = icmp eq i8 %bf.clear.i, 0 + br i1 %tobool.not.i63, label %if.then24.i, label %if.end26.i if.then24.i: ; preds = %if.end16.i %228 = load ptr, ptr %test_ctx, align 8 @@ -3947,8 +3948,8 @@ if.end26.i: ; preds = %if.then24.i, %if.en %isSharedCtx28.i = getelementptr inbounds nuw i8, ptr %test_ctx, i64 284 %bf.load29.i = load i8, ptr %isSharedCtx28.i, align 4 %bf.clear30.i = and i8 %bf.load29.i, 1 - %tobool31.not.i65 = icmp eq i8 %bf.clear30.i, 0 - br i1 %tobool31.not.i65, label %if.then32.i, label %test_ssl_memio_cleanup.exit + %tobool31.not.i64 = icmp eq i8 %bf.clear30.i, 0 + br i1 %tobool31.not.i64, label %if.then32.i, label %test_ssl_memio_cleanup.exit if.then32.i: ; preds = %if.end26.i %229 = load ptr, ptr %c_ctx, align 8 diff --git a/bench/zstd/optimized/zstd_compress_literals.c.ll b/bench/zstd/optimized/zstd_compress_literals.c.ll index d839a9b9589..bd1f76f1a69 100644 --- a/bench/zstd/optimized/zstd_compress_literals.c.ll +++ b/bench/zstd/optimized/zstd_compress_literals.c.ll @@ -116,7 +116,7 @@ entry: %cmp1 = icmp ugt i64 %srcSize, 16383 %conv2 = zext i1 %cmp1 to i64 %add3 = add nuw nsw i64 %add, %conv2 - %cmp5 = icmp ult i64 %srcSize, 256 + %cmp5 = icmp ugt i64 %srcSize, 255 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %nextHuf, ptr noundef nonnull align 8 dereferenceable(2064) %prevHuf, i64 2064, i1 false) %tobool.not = icmp eq i32 %disableLiteralCompression, 0 br i1 %tobool.not, label %if.end, label %if.then @@ -133,7 +133,7 @@ if.then: ; preds = %entry br i1 %cmp7.i, label %return, label %do.end17.i do.end17.i: ; preds = %if.then - switch i32 %add3.i, label %default.unreachable121 [ + switch i32 %add3.i, label %default.unreachable120 [ i32 1, label %sw.bb.i i32 2, label %sw.bb20.i i32 3, label %sw.bb24.i @@ -159,7 +159,7 @@ sw.bb24.i: ; preds = %do.end17.i store i32 %conv27.i, ptr %dst, align 1 br label %sw.epilog.i -default.unreachable121: ; preds = %if.end90, %do.end17.i100, %do.end17.i73, %do.end17.i +default.unreachable120: ; preds = %if.end90, %do.end17.i100, %do.end17.i73, %do.end17.i unreachable sw.epilog.i: ; preds = %sw.bb24.i, %sw.bb20.i, %sw.bb.i @@ -172,10 +172,10 @@ if.end: ; preds = %entry %2 = load i32, ptr %repeatMode, align 8 %sub.i = sub nsw i32 9, %strategy %cond.i = tail call i32 @llvm.smin.i32(i32 %sub.i, i32 3) - %cmp2.i = icmp eq i32 %2, 2 + %cmp2.i = icmp ne i32 %2, 2 %sh_prom.i = zext nneg i32 %cond.i to i64 %shl.i = shl i64 8, %sh_prom.i - %cond6.i = select i1 %cmp2.i, i64 6, i64 %shl.i + %cond6.i = select i1 %cmp2.i, i64 %shl.i, i64 6 %cmp10 = icmp ult i64 %srcSize, %cond6.i br i1 %cmp10, label %if.then12, label %do.body15 @@ -191,7 +191,7 @@ if.then12: ; preds = %if.end br i1 %cmp7.i72, label %return, label %do.end17.i73 do.end17.i73: ; preds = %if.then12 - switch i32 %add3.i69, label %default.unreachable121 [ + switch i32 %add3.i69, label %default.unreachable120 [ i32 1, label %sw.bb.i83 i32 2, label %sw.bb20.i80 i32 3, label %sw.bb24.i74 @@ -241,10 +241,10 @@ do.end29: ; preds = %do.body15 %or37 = or disjoint i32 %cond36, %cond40 %or41 = or disjoint i32 %or37, %cond43 %or44 = or disjoint i32 %or41, %cond - %cmp47 = icmp eq i64 %add3, 3 - %or.cond = select i1 %cmp2.i, i1 %cmp47, i1 false - %narrow = or i1 %cmp5, %or.cond - %cond52 = select i1 %narrow, ptr @HUF_compress1X_repeat, ptr @HUF_compress4X_repeat + %cmp47 = icmp ne i64 %add3, 3 + %or.cond.not = select i1 %cmp2.i, i1 true, i1 %cmp47 + %spec.select = and i1 %cmp5, %or.cond.not + %cond52 = select i1 %spec.select, ptr @HUF_compress4X_repeat, ptr @HUF_compress1X_repeat %add.ptr = getelementptr inbounds nuw i8, ptr %dst, i64 %add3 %sub = sub nuw i64 %dstCapacity, %add3 %call53 = call i64 %cond52(ptr noundef nonnull %add.ptr, i64 noundef %sub, ptr noundef %src, i64 noundef %srcSize, i32 noundef 255, i32 noundef 11, ptr noundef %entropyWorkspace, i64 noundef %entropyWorkspaceSize, ptr noundef nonnull %nextHuf, ptr noundef nonnull %repeat, i32 noundef %or44) #5, !callees !4 @@ -260,8 +260,8 @@ do.end29: ; preds = %do.body15 %cmp66.not = icmp ult i64 %call53, %sub65 %8 = add i64 %call53, -1 %9 = icmp ult i64 %8, -120 - %or.cond120 = select i1 %9, i1 %cmp66.not, i1 false - br i1 %or.cond120, label %if.end73, label %if.then71 + %or.cond = select i1 %9, i1 %cmp66.not, i1 false + br i1 %or.cond, label %if.end73, label %if.then71 if.then71: ; preds = %do.end29 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(2064) %nextHuf, ptr noundef nonnull align 8 dereferenceable(2064) %prevHuf, i64 2064, i1 false) @@ -276,7 +276,7 @@ if.then71: ; preds = %do.end29 br i1 %cmp7.i99, label %return, label %do.end17.i100 do.end17.i100: ; preds = %if.then71 - switch i32 %add3.i96, label %default.unreachable121 [ + switch i32 %add3.i96, label %default.unreachable120 [ i32 1, label %sw.bb.i110 i32 2, label %sw.bb20.i107 i32 3, label %sw.bb24.i101 @@ -346,25 +346,24 @@ if.then88: ; preds = %if.end85 br label %if.end90 if.end90: ; preds = %if.then88, %if.end85 - switch i64 %add3, label %default.unreachable121 [ + switch i64 %add3, label %default.unreachable120 [ i64 3, label %sw.bb i64 4, label %sw.bb102 i64 5, label %sw.bb111 ] sw.bb: ; preds = %if.end90 - %lnot.ext = select i1 %narrow, i32 4, i32 0 + %shl = select i1 %spec.select, i32 4, i32 0 %conv96 = trunc i64 %srcSize to i32 %shl97 = shl i32 %conv96, 4 - %14 = or disjoint i32 %lnot.ext, %shl97 - %15 = or disjoint i32 %hType.0, %14 - %add98 = xor i32 %15, 4 + %14 = or disjoint i32 %shl, %shl97 %conv99 = trunc i64 %call53 to i32 %shl100 = shl i32 %conv99, 14 - %add101 = add i32 %add98, %shl100 + %add98 = add i32 %14, %shl100 + %add101 = or disjoint i32 %add98, %hType.0 %conv.i116 = trunc i32 %add101 to i16 store i16 %conv.i116, ptr %dst, align 1 - %shr.i117 = lshr i32 %add101, 16 + %shr.i117 = lshr i32 %add98, 16 %conv1.i = trunc i32 %shr.i117 to i8 %arrayidx.i = getelementptr inbounds nuw i8, ptr %dst, i64 2 store i8 %conv1.i, ptr %arrayidx.i, align 1 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..faf2759bfc9 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/121767 export COMPTIME_MODE=0 # Please rebase manually