diff --git a/bench/miniaudio/optimized/unity.ll b/bench/miniaudio/optimized/unity.ll index 94c29511642..23ed934b702 100644 --- a/bench/miniaudio/optimized/unity.ll +++ b/bench/miniaudio/optimized/unity.ll @@ -3077,49 +3077,44 @@ define range(i32 -4, 1) i32 @ma_slot_allocator_alloc(ptr noundef captures(addres .preheader59: ; preds = %.preheader60, %53 %7 = phi i1 [ true, %.preheader60 ], [ false, %53 ] %8 = load i32, ptr %5, align 4, !tbaa !60 - %9 = lshr i32 %8, 5 - %10 = and i32 %8, 31 - %.not.i65 = icmp ne i32 %10, 0 - %11 = zext i1 %.not.i65 to i32 - %12 = or i32 %9, %11 - %.not69 = icmp eq i32 %12, 0 - br i1 %.not69, label %._crit_edge, label %.preheader58 - -.preheader58: ; preds = %.preheader59, %44 - %indvars.iv = phi i64 [ %indvars.iv.next, %44 ], [ 0, %.preheader59 ] - br label %13 + %.not69 = icmp eq i32 %8, 0 + br i1 %.not69, label %.thread54, label %13 -13: ; preds = %.preheader58, %ma_ffs_32.exit - %14 = load ptr, ptr %0, align 8, !tbaa !58 - %15 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %14, i64 %indvars.iv - %16 = load atomic i32, ptr %15 seq_cst, align 4 - %17 = icmp eq i32 %16, -1 - br i1 %17, label %44, label %.preheader - -.preheader: ; preds = %13, %20 - %.08.i = phi i32 [ %21, %20 ], [ 0, %13 ] - %18 = shl nuw i32 1, %.08.i - %19 = and i32 %18, %16 - %.not.i46.not = icmp eq i32 %19, 0 - br i1 %.not.i46.not, label %ma_ffs_32.exit, label %20 - -20: ; preds = %.preheader - %21 = add nuw nsw i32 %.08.i, 1 - %exitcond.not.i = icmp eq i32 %21, 32 +13: ; preds = %.preheader59, %40 + %indvars.iv = phi i64 [ %indvars.iv.next, %40 ], [ 0, %.preheader59 ] + br label %9 + +9:; preds = %13, %ma_ffs_32.exit + %10 = load ptr, ptr %0, align 8, !tbaa !58 + %11 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %10, i64 %indvars.iv + %12 = load atomic i32, ptr %11 seq_cst, align 4 + %13 = icmp eq i32 %12, -1 + br i1 %13, label %40, label %.preheader + +.preheader:; preds = %9, %16 + %.08.i = phi i32 [ %17, %16 ], [ 0, %9 ] + %14 = shl nuw i32 1, %.08.i + %15 = and i32 %14, %12 + %.not.i46.not = icmp eq i32 %15, 0 + br i1 %.not.i46.not, label %ma_ffs_32.exit, label %16 + +16: ; preds = %.preheader + %17 = add nuw nsw i32 %.08.i, 1 + %exitcond.not.i = icmp eq i32 %17, 32 br i1 %exitcond.not.i, label %.ma_ffs_32.exit_crit_edge, label %.preheader, !llvm.loop !62 -.ma_ffs_32.exit_crit_edge: ; preds = %20 +.ma_ffs_32.exit_crit_edge: ; preds = %16 br label %ma_ffs_32.exit, !llvm.loop !62 ma_ffs_32.exit: ; preds = %.preheader, %.ma_ffs_32.exit_crit_edge %.0.lcssa.i = phi i32 [ 32, %.ma_ffs_32.exit_crit_edge ], [ %.08.i, %.preheader ] %22 = shl nuw i32 1, %.0.lcssa.i - %23 = or i32 %22, %16 + %23 = or i32 %22, %12 %24 = load ptr, ptr %0, align 8, !tbaa !58 %25 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %24, i64 %indvars.iv - %26 = cmpxchg volatile ptr %25, i32 %16, i32 %23 seq_cst seq_cst, align 4 + %26 = cmpxchg volatile ptr %25, i32 %12, i32 %23 seq_cst seq_cst, align 4 %27 = extractvalue { i32, i1 } %26, 1 - br i1 %27, label %28, label %13 + br i1 %27, label %28, label %9 28: ; preds = %ma_ffs_32.exit %29 = trunc nuw nsw i64 %indvars.iv to i32 @@ -3144,7 +3139,7 @@ ma_ffs_32.exit: ; preds = %.preheader, %.ma_ff store i64 %43, ptr %1, align 8, !tbaa !63 br label %.thread54 -44: ; preds = %13 +44: ; preds = %9 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %45 = load i32, ptr %5, align 4, !tbaa !60 %46 = lshr i32 %45, 5 @@ -3156,18 +3151,17 @@ ma_ffs_32.exit: ; preds = %.preheader, %.ma_ff %50 = icmp samesign ult i64 %indvars.iv.next, %49 br i1 %50, label %.preheader58, label %._crit_edge, !llvm.loop !65 -._crit_edge: ; preds = %44, %.preheader59 - %.lcssa = phi i32 [ %8, %.preheader59 ], [ %45, %44 ] - %51 = load i32, ptr %6, align 8, !tbaa !66 - %52 = icmp ult i32 %51, %.lcssa - br i1 %52, label %53, label %.thread54 +._crit_edge: ; preds = %44 + %47 = load i32, ptr %6, align 8, !tbaa !66 + %52 = icmp ult i32 %47, %41 + br i1 %52, label %49, label %.thread54 -53: ; preds = %._crit_edge +49: ; preds = %._crit_edge tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %7, label %.preheader59, label %.thread54, !llvm.loop !67 -.thread54: ; preds = %._crit_edge, %53, %34, %28, %2 - %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %53 ], [ -4, %._crit_edge ] +.thread54: ; preds = %.preheader59, %._crit_edge, %53, %34, %28, %2 + %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %30 ], [ -4, %53 ], [ -4, %._crit_edge ], [ -4, %.preheader59 ] ret i32 %.0 } @@ -3422,38 +3416,33 @@ ma_semaphore_init.exit: ; preds = %56, %59, %52, %33 %62 = getelementptr inbounds nuw i8, ptr %2, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %108, %ma_semaphore_init.exit - %63 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %108 ] +.preheader59.i: ; preds = %104, %ma_semaphore_init.exit + %63 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %104 ] %64 = load i32, ptr %48, align 4, !tbaa !60 - %65 = lshr i32 %64, 5 - %66 = and i32 %64, 31 - %.not.i65.i = icmp ne i32 %66, 0 - %67 = zext i1 %.not.i65.i to i32 - %68 = or i32 %65, %67 - %.not69.i = icmp eq i32 %68, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %99 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %99 ], [ 0, %.preheader59.i ] - br label %69 + %.not69.i = icmp eq i32 %64, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit, label %15 + +69: ; preds = %.preheader59.i, %95 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %95 ], [ 0, %.preheader59.i ] + br label %65 -69: ; preds = %ma_ffs_32.exit.i, %.preheader58.i +65:; preds = %ma_ffs_32.exit.i, %15 %70 = load ptr, ptr %31, align 8, !tbaa !58 - %71 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %70, i64 %indvars.iv.i - %72 = load atomic i32, ptr %71 seq_cst, align 4 - %73 = icmp eq i32 %72, -1 - br i1 %73, label %99, label %.preheader.i - -.preheader.i: ; preds = %69, %76 - %.08.i.i = phi i32 [ %77, %76 ], [ 0, %69 ] - %74 = shl nuw i32 1, %.08.i.i - %75 = and i32 %74, %72 - %.not.i46.not.i = icmp eq i32 %75, 0 - br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %76 - -76: ; preds = %.preheader.i - %77 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %77, 32 + %67 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %66, i64 %indvars.iv.i + %68 = load atomic i32, ptr %67 seq_cst, align 4 + %73 = icmp eq i32 %76, -1 + br i1 %69, label %95, label %.preheader.i + +.preheader.i:; preds = %65, %72 + %.08.i.i = phi i32 [ %73, %72 ], [ 0, %65 ] + %70 = shl nuw i32 1, %.08.i.i + %71 = and i32 %70, %68 + %.not.i46.not.i = icmp eq i32 %71, 0 + br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %72 + +72: ; preds = %.preheader.i + %73 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %73, 32 br i1 %exitcond.not.i.i, label %.ma_ffs_32.exit_crit_edge.i, label %.preheader.i, !llvm.loop !62 .ma_ffs_32.exit_crit_edge.i: ; preds = %76 @@ -3503,17 +3492,16 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ %105 = icmp samesign ult i64 %indvars.iv.next.i, %104 br i1 %105, label %.preheader58.i, label %._crit_edge.i, !llvm.loop !65 -._crit_edge.i: ; preds = %99, %.preheader59.i - %.lcssa.i = phi i32 [ %64, %.preheader59.i ], [ %100, %99 ] - %106 = load i32, ptr %62, align 8, !tbaa !66 - %107 = icmp ult i32 %106, %.lcssa.i - br i1 %107, label %108, label %ma_slot_allocator_alloc.exit +._crit_edge.i: ; preds = %95 + %102 = load i32, ptr %62, align 8, !tbaa !66 + %103 = icmp ult i32 %102, %96 + br i1 %103, label %104, label %ma_slot_allocator_alloc.exit -108: ; preds = %._crit_edge.i +104: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %63, label %.preheader59.i, label %ma_slot_allocator_alloc.exit, !llvm.loop !67 -ma_slot_allocator_alloc.exit: ; preds = %._crit_edge.i, %108, %84, %90 +ma_slot_allocator_alloc.exit: ; preds = %.preheader59.i, %._crit_edge.i, %104, %84, %90 %109 = load ptr, ptr %30, align 8, !tbaa !79 %110 = load i64, ptr %61, align 8, !tbaa !80 %111 = and i64 %110, 65535 @@ -3712,35 +3700,30 @@ define range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr noundef reado .preheader59.i: ; preds = %45, %5 %9 = phi i1 [ true, %5 ], [ false, %45 ] %10 = load i32, ptr %7, align 4, !tbaa !60 - %11 = lshr i32 %10, 5 - %12 = and i32 %10, 31 - %.not.i65.i = icmp ne i32 %12, 0 - %13 = zext i1 %.not.i65.i to i32 - %14 = or i32 %11, %13 - %.not69.i = icmp eq i32 %14, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %36 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %36 ], [ 0, %.preheader59.i ] - br label %15 + %.not69.i = icmp eq i32 %10, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit.thread, label %73 -15: ; preds = %ma_ffs_32.exit.i, %.preheader58.i - %16 = load ptr, ptr %6, align 8, !tbaa !58 - %17 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %16, i64 %indvars.iv.i - %18 = load atomic i32, ptr %17 seq_cst, align 4 - %19 = icmp eq i32 %18, -1 - br i1 %19, label %36, label %.preheader.i - -.preheader.i: ; preds = %15, %22 - %.08.i.i = phi i32 [ %23, %22 ], [ 0, %15 ] - %20 = shl nuw i32 1, %.08.i.i - %21 = and i32 %20, %18 - %.not.i46.not.i = icmp eq i32 %21, 0 +15: ; preds = %.preheader59.i, %32 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %32 ], [ 0, %.preheader59.i ] + br label %11 + +11:; preds = %ma_ffs_32.exit.i, %15 + %12 = load ptr, ptr %6, align 8, !tbaa !58 + %13 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %12, i64 %indvars.iv.i + %14 = load atomic i32, ptr %13 seq_cst, align 4 + %15 = icmp eq i32 %14, -1 + br i1 %15, label %32, label %.preheader.i + +.preheader.i:; preds = %11, %18 + %.08.i.i = phi i32 [ %19, %22 ], [ 0, %11 ] + %16 = shl nuw i32 1, %.08.i.i + %17 = and i32 %16, %14 + %.not.i46.not.i = icmp eq i32 %17, 0 br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %22 -22: ; preds = %.preheader.i - %23 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %23, 32 +18: ; preds = %.preheader.i + %19 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %19, 32 br i1 %exitcond.not.i.i, label %.ma_ffs_32.exit_crit_edge.i, label %.preheader.i, !llvm.loop !62 .ma_ffs_32.exit_crit_edge.i: ; preds = %22 @@ -3749,23 +3732,23 @@ define range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr noundef reado ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ffs_32.exit_crit_edge.i %.0.lcssa.i.i = phi i32 [ 32, %.ma_ffs_32.exit_crit_edge.i ], [ %.08.i.i, %.preheader.i ] %24 = shl nuw i32 1, %.0.lcssa.i.i - %25 = or i32 %24, %18 + %25 = or i32 %24, %14 %26 = load ptr, ptr %6, align 8, !tbaa !58 %27 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %26, i64 %indvars.iv.i - %28 = cmpxchg volatile ptr %27, i32 %18, i32 %25 seq_cst seq_cst, align 4 + %28 = cmpxchg volatile ptr %27, i32 %14, i32 %25 seq_cst seq_cst, align 4 %29 = extractvalue { i32, i1 } %28, 1 - br i1 %29, label %30, label %15 + br i1 %29, label %30, label %11 -30: ; preds = %ma_ffs_32.exit.i - %31 = trunc nuw nsw i64 %indvars.iv.i to i32 - %32 = atomicrmw add ptr %8, i32 1 seq_cst, align 8 - %33 = shl i32 %31, 5 - %34 = add i32 %.0.lcssa.i.i, %33 - %35 = load i32, ptr %7, align 4, !tbaa !60 - %.not.i = icmp ult i32 %34, %35 - br i1 %.not.i, label %46, label %ma_slot_allocator_alloc.exit.thread +36: ; preds = %ma_ffs_32.exit.i + %27 = trunc nuw nsw i64 %indvars.iv.i to i32 + %28 = atomicrmw add ptr %8, i32 1 seq_cst, align 8 + %29 = shl i32 %27, 5 + %30 = add i32 %.0.lcssa.i.i, %29 + %31 = load i32, ptr %7, align 4, !tbaa !60 + %.not.i = icmp ult i32 %30, %31 + br i1 %.not.i, label %42, label %ma_slot_allocator_alloc.exit.thread -36: ; preds = %15 +32: ; preds = %11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %37 = load i32, ptr %7, align 4, !tbaa !60 %38 = lshr i32 %37, 5 @@ -3777,20 +3760,19 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %.ma_ %42 = icmp samesign ult i64 %indvars.iv.next.i, %41 br i1 %42, label %.preheader58.i, label %._crit_edge.i, !llvm.loop !65 -._crit_edge.i: ; preds = %36, %.preheader59.i - %.lcssa.i = phi i32 [ %10, %.preheader59.i ], [ %37, %36 ] - %43 = load i32, ptr %8, align 8, !tbaa !66 - %44 = icmp ult i32 %43, %.lcssa.i - br i1 %44, label %45, label %ma_slot_allocator_alloc.exit.thread +._crit_edge.i: ; preds = %36 + %39 = load i32, ptr %8, align 8, !tbaa !66 + %40 = icmp ult i32 %39, %33 + br i1 %40, label %41, label %ma_slot_allocator_alloc.exit.thread -45: ; preds = %._crit_edge.i +41: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #66, !srcloc !39 br i1 %9, label %.preheader59.i, label %ma_slot_allocator_alloc.exit.thread, !llvm.loop !67 46: ; preds = %30 %47 = getelementptr inbounds nuw i8, ptr %0, i64 128 %48 = load ptr, ptr %47, align 8, !tbaa !59 - %49 = zext i32 %34 to i64 + %49 = zext i32 %30 to i64 %50 = getelementptr inbounds nuw i32, ptr %48, i64 %49 %51 = load i32, ptr %50, align 4, !tbaa !3 %52 = add i32 %51, 1 @@ -3876,31 +3858,31 @@ ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 .backedge: ; preds = %97, %91, %78 br label %78 -102: ; preds = %91 - %103 = and i64 %79, -4294967296 - %104 = add i64 %103, 4294967296 - %105 = or disjoint i64 %104, %49 - %106 = cmpxchg volatile ptr %77, i64 %79, i64 %105 seq_cst seq_cst, align 8 - store atomic volatile i32 0, ptr %68 release, align 4 - %107 = load i32, ptr %0, align 8, !tbaa !77 - %108 = and i32 %107, 1 - %109 = icmp eq i32 %108, 0 - br i1 %109, label %110, label %ma_slot_allocator_alloc.exit.thread - -110: ; preds = %102 - %111 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %112 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %113 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %112) #66 - %114 = load i32, ptr %111, align 8, !tbaa !41 - %115 = add nsw i32 %114, 1 - store i32 %115, ptr %111, align 8, !tbaa !41 - %116 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %117 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %116) #66 - %118 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %112) #66 +110: ; preds = %91 + %103 = and i64 %75, -4294967296 + %100 = add i64 %103, 4294967296 + %101 = or disjoint i64 %100, %45 + %102 = cmpxchg volatile ptr %73, i64 %75, i64 %101 seq_cst seq_cst, align 8 + store atomic volatile i32 0, ptr %64 release, align 4 + %103 = load i32, ptr %0, align 8, !tbaa !77 + %104 = and i32 %103, 1 + %105 = icmp eq i32 %104, 0 + br i1 %105, label %110, label %ma_slot_allocator_alloc.exit.thread + +106: ; preds = %98 + %107 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %108 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %109 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %108) #66 + %110 = load i32, ptr %107, align 8, !tbaa !41 + %111 = add nsw i32 %110, 1 + store i32 %111, ptr %107, align 8, !tbaa !41 + %112 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %113 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %112) #66 + %114 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %108) #66 br label %ma_slot_allocator_alloc.exit.thread -ma_slot_allocator_alloc.exit.thread: ; preds = %._crit_edge.i, %45, %30, %102, %110, %2 - %.0 = phi i32 [ -2, %2 ], [ 0, %110 ], [ 0, %102 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ] +ma_slot_allocator_alloc.exit.thread: ; preds = %.preheader59.i, %._crit_edge.i, %45, %30, %102, %110, %2 + %.0 = phi i32 [ -2, %2 ], [ 0, %110 ], [ 0, %102 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ], [ -4, %.preheader59.i ] ret i32 %.0 } diff --git a/bench/raylib/optimized/raudio.ll b/bench/raylib/optimized/raudio.ll index d9aeae46275..0563c9b03b9 100644 --- a/bench/raylib/optimized/raudio.ll +++ b/bench/raylib/optimized/raudio.ll @@ -3066,49 +3066,44 @@ define hidden range(i32 -4, 1) i32 @ma_slot_allocator_alloc(ptr noundef captures %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %.preheader59 -.preheader59: ; preds = %.preheader60, %56 - %7 = phi i1 [ true, %.preheader60 ], [ false, %56 ] +.preheader59: ; preds = %.preheader60, %52 + %7 = phi i1 [ true, %.preheader60 ], [ false, %52 ] %8 = load i32, ptr %5, align 4 - %9 = lshr i32 %8, 5 - %10 = and i32 %8, 31 - %.not.i65 = icmp ne i32 %10, 0 - %11 = zext i1 %.not.i65 to i32 - %12 = or i32 %9, %11 - %.not69 = icmp eq i32 %12, 0 - br i1 %.not69, label %._crit_edge, label %.preheader58 - -.preheader58: ; preds = %.preheader59, %47 - %indvars.iv = phi i64 [ %indvars.iv.next, %47 ], [ 0, %.preheader59 ] - br label %13 + %.not69 = icmp eq i32 %8, 0 + br i1 %.not69, label %.thread54, label %13 -13: ; preds = %.preheader58, %ma_ffs_32.exit - %14 = load ptr, ptr %0, align 8 - %15 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %14, i64 %indvars.iv - %16 = load atomic i32, ptr %15 seq_cst, align 4 - %17 = icmp eq i32 %16, -1 - br i1 %17, label %47, label %.preheader - -.preheader: ; preds = %13, %20 - %.08.i = phi i32 [ %21, %20 ], [ 0, %13 ] - %18 = shl nuw i32 1, %.08.i - %19 = and i32 %18, %16 - %.not.i46.not = icmp eq i32 %19, 0 - br i1 %.not.i46.not, label %ma_ffs_32.exit, label %20 - -20: ; preds = %.preheader - %21 = add nuw nsw i32 %.08.i, 1 - %exitcond.not.i = icmp eq i32 %21, 32 +13: ; preds = %.preheader59, %43 + %indvars.iv = phi i64 [ %indvars.iv.next, %43 ], [ 0, %.preheader59 ] + br label %9 + +9:; preds = %13, %ma_ffs_32.exit + %10 = load ptr, ptr %0, align 8 + %11 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %10, i64 %indvars.iv + %12 = load atomic i32, ptr %11 seq_cst, align 4 + %13 = icmp eq i32 %12, -1 + br i1 %13, label %43, label %.preheader + +.preheader:; preds = %9, %16 + %.08.i = phi i32 [ %17, %16 ], [ 0, %9 ] + %14 = shl nuw i32 1, %.08.i + %15 = and i32 %14, %12 + %.not.i46.not = icmp eq i32 %15, 0 + br i1 %.not.i46.not, label %ma_ffs_32.exit, label %16 + +16: ; preds = %.preheader + %17 = add nuw nsw i32 %.08.i, 1 + %exitcond.not.i = icmp eq i32 %17, 32 br i1 %exitcond.not.i, label %ma_ffs_32.exit, label %.preheader -ma_ffs_32.exit: ; preds = %.preheader, %20 - %.0.lcssa.i = phi i32 [ 32, %20 ], [ %.08.i, %.preheader ] +ma_ffs_32.exit: ; preds = %.preheader, %16 + %.0.lcssa.i = phi i32 [ 32, %16 ], [ %.08.i, %.preheader ] %22 = shl nuw i32 1, %.0.lcssa.i - %23 = or i32 %22, %16 + %23 = or i32 %22, %12 %24 = load ptr, ptr %0, align 8 %25 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %24, i64 %indvars.iv - %26 = cmpxchg volatile ptr %25, i32 %16, i32 %23 seq_cst seq_cst, align 4 + %26 = cmpxchg volatile ptr %25, i32 %12, i32 %23 seq_cst seq_cst, align 4 %27 = extractvalue { i32, i1 } %26, 1 - br i1 %27, label %28, label %13 + br i1 %27, label %28, label %9 28: ; preds = %ma_ffs_32.exit %29 = trunc nuw nsw i64 %indvars.iv to i32 @@ -3124,19 +3119,19 @@ ma_ffs_32.exit: ; preds = %.preheader, %20 %36 = load ptr, ptr %35, align 8 %37 = zext i32 %32 to i64 %38 = getelementptr inbounds nuw i32, ptr %36, i64 %37 + %35 = load i32, ptr %34, align 4 + %36 = add i32 %35, 1 + store i32 %36, ptr %34, align 4 + %37 = load ptr, ptr %31, align 8 + %38 = getelementptr inbounds nuw i32, ptr %37, i64 %33 %39 = load i32, ptr %38, align 4 - %40 = add i32 %39, 1 - store i32 %40, ptr %38, align 4 - %41 = load ptr, ptr %35, align 8 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %37 - %43 = load i32, ptr %42, align 4 - %44 = zext i32 %43 to i64 - %45 = shl nuw i64 %44, 32 - %46 = or disjoint i64 %45, %37 - store i64 %46, ptr %1, align 8 + %40 = zext i32 %39 to i64 + %41 = shl nuw i64 %40, 32 + %42 = or disjoint i64 %41, %33 + store i64 %42, ptr %1, align 8 br label %.thread54 -47: ; preds = %13 +47: ; preds = %9 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %48 = load i32, ptr %5, align 4 %49 = lshr i32 %48, 5 @@ -3148,18 +3143,17 @@ ma_ffs_32.exit: ; preds = %.preheader, %20 %53 = icmp samesign ult i64 %indvars.iv.next, %52 br i1 %53, label %.preheader58, label %._crit_edge -._crit_edge: ; preds = %47, %.preheader59 - %.lcssa = phi i32 [ %8, %.preheader59 ], [ %48, %47 ] - %54 = load i32, ptr %6, align 8 - %55 = icmp ult i32 %54, %.lcssa - br i1 %55, label %56, label %.thread54 +._crit_edge: ; preds = %47 + %50 = load i32, ptr %6, align 8 + %51 = icmp ult i32 %50, %48 + br i1 %51, label %52, label %.thread54 -56: ; preds = %._crit_edge +52: ; preds = %._crit_edge tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %7, label %.preheader59, label %.thread54 -.thread54: ; preds = %._crit_edge, %56, %34, %28, %2 - %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %56 ], [ -4, %._crit_edge ] +.thread54: ; preds = %.preheader59, %._crit_edge, %52, %34, %28, %2 + %.0 = phi i32 [ -2, %2 ], [ -4, %28 ], [ 0, %34 ], [ -4, %52 ], [ -4, %._crit_edge ], [ -4, %.preheader59 ] ret i32 %.0 } @@ -3414,20 +3408,15 @@ ma_semaphore_init.exit: ; preds = %57, %60, %53, %34 %63 = getelementptr inbounds nuw i8, ptr %2, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %112, %ma_semaphore_init.exit - %64 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %112 ] +.preheader59.i: ; preds = %108, %ma_semaphore_init.exit + %64 = phi i1 [ true, %ma_semaphore_init.exit ], [ false, %108 ] %65 = load i32, ptr %49, align 4 - %66 = lshr i32 %65, 5 - %67 = and i32 %65, 31 - %.not.i65.i = icmp ne i32 %67, 0 - %68 = zext i1 %.not.i65.i to i32 - %69 = or i32 %66, %68 - %.not69.i = icmp eq i32 %69, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %103 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %103 ], [ 0, %.preheader59.i ] - br label %70 + %.not69.i = icmp eq i32 %65, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit, label %15 + +15:; preds = %.preheader59.i, %103 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %99 ], [ 0, %.preheader59.i ] + br label %66 70: ; preds = %ma_ffs_32.exit.i, %.preheader58.i %71 = load ptr, ptr %32, align 8 @@ -3437,7 +3426,7 @@ ma_semaphore_init.exit: ; preds = %57, %60, %53, %34 br i1 %74, label %103, label %.preheader.i .preheader.i: ; preds = %70, %77 - %.08.i.i = phi i32 [ %78, %77 ], [ 0, %70 ] + %.08.i.i = phi i32 [ %78, %77 ], [ 0, %66 ] %75 = shl nuw i32 1, %.08.i.i %76 = and i32 %75, %73 %.not.i46.not.i = icmp eq i32 %76, 0 @@ -3471,15 +3460,15 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %77 %92 = load ptr, ptr %48, align 8 %93 = zext i32 %89 to i64 %94 = getelementptr inbounds nuw i32, ptr %92, i64 %93 + %91 = load i32, ptr %90, align 4 + %92 = add i32 %91, 1 + store i32 %92, ptr %90, align 4 + %93 = load ptr, ptr %48, align 8 + %94 = getelementptr inbounds nuw i32, ptr %93, i64 %89 %95 = load i32, ptr %94, align 4 - %96 = add i32 %95, 1 - store i32 %96, ptr %94, align 4 - %97 = load ptr, ptr %48, align 8 - %98 = getelementptr inbounds nuw i32, ptr %97, i64 %93 - %99 = load i32, ptr %98, align 4 - %100 = zext i32 %99 to i64 - %101 = shl nuw i64 %100, 32 - %102 = or disjoint i64 %101, %93 + %96 = zext i32 %95 to i64 + %97 = shl nuw i64 %96, 32 + %98 = or disjoint i64 %97, %89 store i64 %102, ptr %62, align 8 br label %ma_slot_allocator_alloc.exit @@ -3495,17 +3484,16 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %77 %109 = icmp samesign ult i64 %indvars.iv.next.i, %108 br i1 %109, label %.preheader58.i, label %._crit_edge.i -._crit_edge.i: ; preds = %103, %.preheader59.i - %.lcssa.i = phi i32 [ %65, %.preheader59.i ], [ %104, %103 ] - %110 = load i32, ptr %63, align 8 - %111 = icmp ult i32 %110, %.lcssa.i - br i1 %111, label %112, label %ma_slot_allocator_alloc.exit +._crit_edge.i: ; preds = %103 + %106 = load i32, ptr %63, align 8 + %107 = icmp ult i32 %106, %100 + br i1 %107, label %108, label %ma_slot_allocator_alloc.exit -112: ; preds = %._crit_edge.i +108: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %64, label %.preheader59.i, label %ma_slot_allocator_alloc.exit -ma_slot_allocator_alloc.exit: ; preds = %._crit_edge.i, %112, %85, %91 +ma_slot_allocator_alloc.exit: ; preds = %.preheader59.i, %._crit_edge.i, %108, %85, %91 %113 = load ptr, ptr %30, align 8 %114 = load i64, ptr %62, align 8 %115 = and i64 %114, 65535 @@ -3702,49 +3690,44 @@ define hidden range(i32 -4, 1) i32 @ma_job_queue_post(ptr noundef %0, ptr nounde %8 = getelementptr inbounds nuw i8, ptr %0, i64 136 br label %.preheader59.i -.preheader59.i: ; preds = %45, %5 - %9 = phi i1 [ true, %5 ], [ false, %45 ] +.preheader59.i: ; preds = %41, %5 + %9 = phi i1 [ true, %5 ], [ false, %41 ] %10 = load i32, ptr %7, align 4 - %11 = lshr i32 %10, 5 - %12 = and i32 %10, 31 - %.not.i65.i = icmp ne i32 %12, 0 - %13 = zext i1 %.not.i65.i to i32 - %14 = or i32 %11, %13 - %.not69.i = icmp eq i32 %14, 0 - br i1 %.not69.i, label %._crit_edge.i, label %.preheader58.i - -.preheader58.i: ; preds = %.preheader59.i, %36 - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %36 ], [ 0, %.preheader59.i ] - br label %15 + %.not69.i = icmp eq i32 %10, 0 + br i1 %.not69.i, label %ma_slot_allocator_alloc.exit.thread, label %.preheader58.i -15: ; preds = %ma_ffs_32.exit.i, %.preheader58.i - %16 = load ptr, ptr %6, align 8 - %17 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %16, i64 %indvars.iv.i - %18 = load atomic i32, ptr %17 seq_cst, align 4 - %19 = icmp eq i32 %18, -1 - br i1 %19, label %36, label %.preheader.i - -.preheader.i: ; preds = %15, %22 - %.08.i.i = phi i32 [ %23, %22 ], [ 0, %15 ] - %20 = shl nuw i32 1, %.08.i.i - %21 = and i32 %20, %18 - %.not.i46.not.i = icmp eq i32 %21, 0 +15: ; preds = %.preheader59.i, %32 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %32 ], [ 0, %.preheader59.i ] + br label %11 + +11:; preds = %ma_ffs_32.exit.i, %15 + %12 = load ptr, ptr %6, align 8 + %13 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %12, i64 %indvars.iv.i + %14 = load atomic i32, ptr %13 seq_cst, align 4 + %15 = icmp eq i32 %14, -1 + br i1 %15, label %32, label %.preheader.i + +.preheader.i:; preds = %11, %18 + %.08.i.i = phi i32 [ %19, %22 ], [ 0, %11 ] + %16 = shl nuw i32 1, %.08.i.i + %17 = and i32 %16, %14 + %.not.i46.not.i = icmp eq i32 %17, 0 br i1 %.not.i46.not.i, label %ma_ffs_32.exit.i, label %22 -22: ; preds = %.preheader.i - %23 = add nuw nsw i32 %.08.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %23, 32 +18: ; preds = %.preheader.i + %19 = add nuw nsw i32 %.08.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %19, 32 br i1 %exitcond.not.i.i, label %ma_ffs_32.exit.i, label %.preheader.i ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %.0.lcssa.i.i = phi i32 [ 32, %22 ], [ %.08.i.i, %.preheader.i ] %24 = shl nuw i32 1, %.0.lcssa.i.i - %25 = or i32 %24, %18 + %25 = or i32 %24, %14 %26 = load ptr, ptr %6, align 8 %27 = getelementptr inbounds nuw %struct.ma_slot_allocator_group, ptr %26, i64 %indvars.iv.i - %28 = cmpxchg volatile ptr %27, i32 %18, i32 %25 seq_cst seq_cst, align 4 + %28 = cmpxchg volatile ptr %27, i32 %14, i32 %25 seq_cst seq_cst, align 4 %29 = extractvalue { i32, i1 } %28, 1 - br i1 %29, label %30, label %15 + br i1 %29, label %30, label %11 30: ; preds = %ma_ffs_32.exit.i %31 = trunc nuw nsw i64 %indvars.iv.i to i32 @@ -3755,7 +3738,7 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %.not.i = icmp ult i32 %34, %35 br i1 %.not.i, label %46, label %ma_slot_allocator_alloc.exit.thread -36: ; preds = %15 +36: ; preds = %11 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %37 = load i32, ptr %7, align 4 %38 = lshr i32 %37, 5 @@ -3767,13 +3750,12 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %42 = icmp samesign ult i64 %indvars.iv.next.i, %41 br i1 %42, label %.preheader58.i, label %._crit_edge.i -._crit_edge.i: ; preds = %36, %.preheader59.i - %.lcssa.i = phi i32 [ %10, %.preheader59.i ], [ %37, %36 ] - %43 = load i32, ptr %8, align 8 - %44 = icmp ult i32 %43, %.lcssa.i - br i1 %44, label %45, label %ma_slot_allocator_alloc.exit.thread +._crit_edge.i: ; preds = %36 + %39 = load i32, ptr %8, align 8 + %40 = icmp ult i32 %39, %33 + br i1 %40, label %41, label %ma_slot_allocator_alloc.exit.thread -45: ; preds = %._crit_edge.i +41: ; preds = %._crit_edge.i tail call void asm sideeffect "pause", "~{dirflag},~{fpsr},~{flags}"() #71, !srcloc !3 br i1 %9, label %.preheader59.i, label %ma_slot_allocator_alloc.exit.thread @@ -3782,35 +3764,35 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %48 = load ptr, ptr %47, align 8 %49 = zext i32 %34 to i64 %50 = getelementptr inbounds nuw i32, ptr %48, i64 %49 + %47 = load i32, ptr %46, align 4 + %48 = add i32 %47, 1 + store i32 %48, ptr %46, align 4 + %49 = load ptr, ptr %43, align 8 + %50 = getelementptr inbounds nuw i32, ptr %49, i64 %45 %51 = load i32, ptr %50, align 4 - %52 = add i32 %51, 1 - store i32 %52, ptr %50, align 4 - %53 = load ptr, ptr %47, align 8 - %54 = getelementptr inbounds nuw i32, ptr %53, i64 %49 - %55 = load i32, ptr %54, align 4 - %56 = zext i32 %55 to i64 - %57 = shl nuw i64 %56, 32 - %58 = or disjoint i64 %57, %49 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 160 - %60 = load ptr, ptr %59, align 8 - %61 = and i32 %34, 65535 - %62 = zext nneg i32 %61 to i64 - %63 = getelementptr inbounds nuw %struct.ma_job, ptr %60, i64 %62 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %63, ptr noundef nonnull align 8 dereferenceable(104) %1, i64 104, i1 false) - %64 = load ptr, ptr %59, align 8 - %65 = getelementptr inbounds nuw %struct.ma_job, ptr %64, i64 %62 - store i64 %58, ptr %65, align 8 - %66 = load i16, ptr %1, align 8 - %67 = load ptr, ptr %59, align 8 - %68 = getelementptr inbounds nuw %struct.ma_job, ptr %67, i64 %62 - store i16 %66, ptr %68, align 8 - %69 = load ptr, ptr %59, align 8 - %70 = getelementptr inbounds nuw %struct.ma_job, ptr %69, i64 %62, i32 1 - store i64 -1, ptr %70, align 8 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 168 - %72 = atomicrmw volatile xchg ptr %71, i32 1 acquire, align 4 - %73 = icmp eq i32 %72, 0 - br i1 %73, label %ma_spinlock_lock.exit, label %.preheader.i37 + %52 = zext i32 %51 to i64 + %53 = shl nuw i64 %52, 32 + %54 = or disjoint i64 %53, %45 + %54 = getelementptr inbounds nuw i8, ptr %0, i64 160 + %55 = load ptr, ptr %54, align 8 + %57 = and i32 %30, 65535 + %58 = zext nneg i32 %57 to i64 + %59 = getelementptr inbounds nuw %struct.ma_job, ptr %56, i64 %58 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %59, ptr noundef nonnull align 8 dereferenceable(104) %1, i64 104, i1 false) + %60 = load ptr, ptr %55, align 8 + %61 = getelementptr inbounds nuw %struct.ma_job, ptr %60, i64 %58 + store i64 %54, ptr %61, align 8 + %62 = load i16, ptr %1, align 8 + %63 = load ptr, ptr %55, align 8 + %64 = getelementptr inbounds nuw %struct.ma_job, ptr %63, i64 %58 + store i16 %62, ptr %64, align 8 + %65 = load ptr, ptr %55, align 8 + %66 = getelementptr inbounds nuw %struct.ma_job, ptr %65, i64 %58, i32 1 + store i64 -1, ptr %66, align 8 + %68 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %68 = atomicrmw volatile xchg ptr %68, i32 1 acquire, align 4 + %69 = icmp eq i32 %68, 0 + br i1 %69, label %81, label %.preheader.i37 .loopexit.i: ; preds = %.lr.ph.i, %.preheader.i37 %74 = atomicrmw volatile xchg ptr %71, i32 1 acquire, align 4 @@ -3828,30 +3810,30 @@ ma_ffs_32.exit.i: ; preds = %.preheader.i, %22 %79 = icmp eq i32 %78, 1 br i1 %79, label %.lr.ph.i, label %.loopexit.i -ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 +81: ; preds = %.loopexit.i, %42 %80 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %invariant.op = or disjoint i64 %49, 4294967296 - br label %81 + %invariant.op = or disjoint i64 %45, 4294967296 + br label %85 -81: ; preds = %.backedge, %ma_spinlock_lock.exit +91: ; preds = %.backedge, %81 %82 = load atomic i64, ptr %80 seq_cst, align 8 - %83 = load ptr, ptr %59, align 8 - %84 = and i64 %82, 65535 - %85 = getelementptr inbounds nuw %struct.ma_job, ptr %83, i64 %84, i32 1 - %86 = load atomic i64, ptr %85 seq_cst, align 8 - %87 = load atomic i64, ptr %80 seq_cst, align 8 - %88 = xor i64 %87, %82 - %89 = and i64 %88, -4294901761 - %90 = icmp eq i64 %89, 0 - br i1 %90, label %91, label %.backedge - -91: ; preds = %81 - %92 = and i64 %86, 65535 - %93 = icmp eq i64 %92, 65535 - br i1 %93, label %94, label %100 + %79 = load ptr, ptr %55, align 8 + %80 = and i64 %78, 65535 + %81 = getelementptr inbounds nuw %struct.ma_job, ptr %79, i64 %80, i32 1 + %82 = load atomic i64, ptr %81 seq_cst, align 8 + %83 = load atomic i64, ptr %76 seq_cst, align 8 + %84 = xor i64 %83, %78 + %85 = and i64 %84, -4294901761 + %86 = icmp eq i64 %85, 0 + br i1 %86, label %87, label %.backedge + +87: ; preds = %77 + %88 = and i64 %82, 65535 + %89 = icmp eq i64 %88, 65535 + br i1 %89, label %90, label %96 94: ; preds = %91 - %95 = load ptr, ptr %59, align 8 + %95 = load ptr, ptr %55, align 8 %96 = getelementptr inbounds nuw %struct.ma_job, ptr %95, i64 %84, i32 1 %97 = and i64 %86, -4294967296 %.reass = add i64 %97, %invariant.op @@ -3869,31 +3851,31 @@ ma_spinlock_lock.exit: ; preds = %.loopexit.i, %46 .backedge: ; preds = %100, %94, %81 br label %81 -105: ; preds = %94 - %106 = and i64 %82, -4294967296 - %107 = add i64 %106, 4294967296 - %108 = or disjoint i64 %107, %49 - %109 = cmpxchg volatile ptr %80, i64 %82, i64 %108 seq_cst seq_cst, align 8 - store atomic volatile i32 0, ptr %71 release, align 4 - %110 = load i32, ptr %0, align 8 - %111 = and i32 %110, 1 - %112 = icmp eq i32 %111, 0 - br i1 %112, label %113, label %ma_slot_allocator_alloc.exit.thread - -113: ; preds = %105 - %114 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %115 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %116 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %115) #71 - %117 = load i32, ptr %114, align 8 - %118 = add nsw i32 %117, 1 - store i32 %118, ptr %114, align 8 - %119 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %120 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %119) #71 - %121 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %115) #71 +101: ; preds = %90 + %102 = and i64 %78, -4294967296 + %103 = add i64 %102, 4294967296 + %104 = or disjoint i64 %103, %45 + %105 = cmpxchg volatile ptr %76, i64 %78, i64 %104 seq_cst seq_cst, align 8 + store atomic volatile i32 0, ptr %67 release, align 4 + %106 = load i32, ptr %0, align 8 + %107 = and i32 %106, 1 + %108 = icmp eq i32 %107, 0 + br i1 %108, label %109, label %ma_slot_allocator_alloc.exit.thread + +105: ; preds = %101 + %110 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %111 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %112 = tail call i32 @pthread_mutex_lock(ptr noundef nonnull %111) #71 + %113 = load i32, ptr %110, align 8 + %114 = add nsw i32 %113, 1 + store i32 %114, ptr %110, align 8 + %115 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %116 = tail call i32 @pthread_cond_signal(ptr noundef nonnull %115) #71 + %117 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %111) #71 br label %ma_slot_allocator_alloc.exit.thread -ma_slot_allocator_alloc.exit.thread: ; preds = %._crit_edge.i, %45, %30, %105, %113, %2 - %.0 = phi i32 [ -2, %2 ], [ 0, %113 ], [ 0, %105 ], [ -4, %30 ], [ -4, %45 ], [ -4, %._crit_edge.i ] +ma_slot_allocator_alloc.exit.thread: ; preds = %.preheader59.i, %._crit_edge.i, %41, %30, %105, %113, %2 + %.0 = phi i32 [ -2, %2 ], [ 0, %113 ], [ 0, %105 ], [ -4, %30 ], [ -4, %41 ], [ -4, %._crit_edge.i ], [ -4, %.preheader59.i ] ret i32 %.0 } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..57063aa1007 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/143683 export COMPTIME_MODE=0 # Please rebase manually