diff --git a/bench/abc/optimized/Glucose.cpp.ll b/bench/abc/optimized/Glucose.cpp.ll index 83a314bd3c2..2ef8a4355c8 100644 --- a/bench/abc/optimized/Glucose.cpp.ll +++ b/bench/abc/optimized/Glucose.cpp.ll @@ -9333,9 +9333,9 @@ _ZNK5Gluco6Solver12withinBudgetEv.exit.thread: ; preds = %108, %93, %_ZNK5Glu 180: ; preds = %179 %181 = getelementptr inbounds i8, ptr %0, i64 736 %182 = load i32, ptr %181, align 8 - %183 = sext i32 %182 to i64 + %183 = zext i32 %182 to i64 %184 = icmp slt i32 %182, 0 - %185 = shl nsw i64 %183, 2 + %185 = shl nuw nsw i64 %183, 2 %186 = select i1 %184, i64 -1, i64 %185 %187 = call noalias noundef nonnull ptr @_Znam(i64 noundef %186) #35 %188 = icmp sgt i32 %182, 0 @@ -9343,7 +9343,6 @@ _ZNK5Gluco6Solver12withinBudgetEv.exit.thread: ; preds = %108, %93, %_ZNK5Glu .lr.ph79: ; preds = %180 %189 = load ptr, ptr %13, align 8 - %wide.trip.count = zext nneg i32 %182 to i64 br label %190 190: ; preds = %.lr.ph79, %190 @@ -9355,7 +9354,7 @@ _ZNK5Gluco6Solver12withinBudgetEv.exit.thread: ; preds = %108, %93, %_ZNK5Glu %195 = getelementptr inbounds i32, ptr %187, i64 %indvars.iv82 store i32 %194, ptr %195, align 4 %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next83, %183 br i1 %exitcond.not, label %.loopexit, label %190, !llvm.loop !68 .loopexit: ; preds = %190, %180, %179 diff --git a/bench/abc/optimized/cuddAndAbs.c.ll b/bench/abc/optimized/cuddAndAbs.c.ll index 3fe5cc8a52b..294b430bc54 100644 --- a/bench/abc/optimized/cuddAndAbs.c.ll +++ b/bench/abc/optimized/cuddAndAbs.c.ll @@ -36,13 +36,13 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %14 = inttoptr i64 %13 to ptr %15 = icmp eq ptr %1, %14 %or.cond234 = or i1 %15, %or.cond - br i1 %or.cond234, label %226, label %16 + br i1 %or.cond234, label %228, label %16 16: ; preds = %4 %17 = icmp eq ptr %1, %6 %18 = icmp eq ptr %2, %6 %or.cond235 = and i1 %17, %18 - br i1 %or.cond235, label %226, label %19 + br i1 %or.cond235, label %228, label %19 19: ; preds = %16 %20 = icmp eq ptr %3, %6 @@ -50,7 +50,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 21: ; preds = %19 %22 = tail call ptr @cuddBddAndRecur(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2) #4 - br label %226 + br label %228 23: ; preds = %19 %24 = icmp eq ptr %1, %2 @@ -59,14 +59,14 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 25: ; preds = %23 %26 = tail call ptr @cuddBddExistAbstractRecur(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %3) #4 - br label %226 + br label %228 27: ; preds = %23 br i1 %18, label %28, label %30 28: ; preds = %27 %29 = tail call ptr @cuddBddExistAbstractRecur(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %3) #4 - br label %226 + br label %228 30: ; preds = %27 %31 = icmp ugt ptr %1, %2 @@ -108,7 +108,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 55: ; preds = %51 %56 = tail call ptr @cuddBddAndRecur(ptr noundef %0, ptr noundef %spec.select237, ptr noundef %spec.select) #4 - br label %226 + br label %228 57: ; preds = %49 %58 = getelementptr inbounds i8, ptr %34, i64 4 @@ -125,7 +125,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 63: ; preds = %60, %57 %64 = tail call ptr @cuddCacheLookup(ptr noundef %0, i64 noundef 6, ptr noundef %spec.select237, ptr noundef %spec.select, ptr noundef nonnull %.0198) #4 %.not220 = icmp eq ptr %64, null - br i1 %.not220, label %65, label %226 + br i1 %.not220, label %65, label %228 65: ; preds = %63, %60 %66 = getelementptr inbounds i8, ptr %0, i64 752 @@ -137,7 +137,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %69 = tail call fastcc i64 @Abc_Clock() %70 = load i64, ptr %66, align 8 %71 = icmp sgt i64 %69, %70 - br i1 %71, label %226, label %72 + br i1 %71, label %228, label %72 72: ; preds = %68, %65 %.not222 = icmp ugt i32 %43, %47 @@ -202,7 +202,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %107 = load ptr, ptr %106, align 8 %108 = tail call ptr @cuddBddAndAbstractRecur(ptr noundef nonnull %0, ptr noundef %.0199, ptr noundef %.0203, ptr noundef %107) %109 = icmp eq ptr %108, null - br i1 %109, label %226, label %110 + br i1 %109, label %228, label %110 110: ; preds = %105 %111 = icmp eq ptr %108, %6 @@ -221,11 +221,11 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %117 = getelementptr inbounds i8, ptr %37, i64 4 %118 = load i32, ptr %117, align 4 %.not230 = icmp eq i32 %118, 1 - br i1 %.not230, label %226, label %119 + br i1 %.not230, label %228, label %119 119: ; preds = %116, %114 tail call void @cuddCacheInsert(ptr noundef nonnull %0, i64 noundef 6, ptr noundef %spec.select237, ptr noundef %spec.select, ptr noundef nonnull %.0198, ptr noundef nonnull %108) #4 - br label %226 + br label %228 120: ; preds = %110 %121 = ptrtoint ptr %108 to i64 @@ -267,7 +267,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 144: ; preds = %142 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %108) #4 - br label %226 + br label %228 145: ; preds = %142 %146 = icmp eq ptr %108, %.0200 @@ -277,7 +277,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %148 = load i32, ptr %124, align 4 %149 = add i32 %148, -1 store i32 %149, ptr %124, align 4 - br label %220 + br label %222 150: ; preds = %145 %151 = ptrtoint ptr %.0200 to i64 @@ -298,7 +298,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 163: ; preds = %150 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %108) #4 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %.0200) #4 - br label %226 + br label %228 164: ; preds = %150 %165 = ptrtoint ptr %161 to i64 @@ -315,12 +315,12 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %173 = load i32, ptr %170, align 4 %174 = add i32 %173, -1 store i32 %174, ptr %170, align 4 - br label %220 + br label %222 175: ; preds = %103 %176 = tail call ptr @cuddBddAndAbstractRecur(ptr noundef nonnull %0, ptr noundef %.0199, ptr noundef %.0203, ptr noundef nonnull %.0198) %177 = icmp eq ptr %176, null - br i1 %177, label %226, label %178 + br i1 %177, label %228, label %178 178: ; preds = %175 %179 = ptrtoint ptr %176 to i64 @@ -336,7 +336,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef 187: ; preds = %178 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %176) #4 - br label %226 + br label %228 188: ; preds = %178 %189 = icmp eq ptr %176, %185 @@ -346,7 +346,7 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef %191 = load i32, ptr %182, align 4 %192 = add i32 %191, -1 store i32 %192, ptr %182, align 4 - br label %220 + br label %222 193: ; preds = %188 %194 = ptrtoint ptr %185 to i64 @@ -358,64 +358,66 @@ define ptr @cuddBddAndAbstractRecur(ptr noundef %0, ptr noundef %1, ptr noundef store i32 %199, ptr %197, align 4 %200 = and i64 %179, 1 %.not226 = icmp eq i64 %200, 0 - br i1 %.not226, label %211, label %201 + br i1 %.not226, label %213, label %201 201: ; preds = %193 - %202 = xor i64 %194, 1 + %202 = xor i64 %179, 1 %203 = inttoptr i64 %202 to ptr - %204 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0195, ptr noundef nonnull %181, ptr noundef %203) #4 - %205 = icmp eq ptr %204, null - br i1 %205, label %206, label %207 + %204 = xor i64 %194, 1 + %205 = inttoptr i64 %204 to ptr + %206 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0195, ptr noundef %203, ptr noundef %205) #4 + %207 = icmp eq ptr %206, null + br i1 %207, label %208, label %209 -206: ; preds = %201 +208: ; preds = %201 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %176) #4 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %185) #4 - br label %226 + br label %228 -207: ; preds = %201 - %208 = ptrtoint ptr %204 to i64 - %209 = xor i64 %208, 1 - %210 = inttoptr i64 %209 to ptr - br label %215 +209: ; preds = %201 + %210 = ptrtoint ptr %206 to i64 + %211 = xor i64 %210, 1 + %212 = inttoptr i64 %211 to ptr + br label %217 -211: ; preds = %193 - %212 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0195, ptr noundef nonnull %176, ptr noundef nonnull %185) #4 - %213 = icmp eq ptr %212, null - br i1 %213, label %214, label %215 +213: ; preds = %193 + %214 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0195, ptr noundef nonnull %176, ptr noundef nonnull %185) #4 + %215 = icmp eq ptr %214, null + br i1 %215, label %216, label %217 -214: ; preds = %211 +216: ; preds = %213 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %176) #4 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %185) #4 - br label %226 - -215: ; preds = %211, %207 - %.1 = phi ptr [ %210, %207 ], [ %212, %211 ] - %216 = load i32, ptr %197, align 4 - %217 = add i32 %216, -1 - store i32 %217, ptr %197, align 4 - %218 = load i32, ptr %182, align 4 + br label %228 + +217: ; preds = %213, %209 + %.1 = phi ptr [ %212, %209 ], [ %214, %213 ] + %218 = load i32, ptr %197, align 4 %219 = add i32 %218, -1 - store i32 %219, ptr %182, align 4 - br label %220 - -220: ; preds = %190, %215, %147, %164 - %.0201 = phi ptr [ %108, %147 ], [ %167, %164 ], [ %176, %190 ], [ %.1, %215 ] - %221 = load i32, ptr %58, align 4 - %.not227 = icmp eq i32 %221, 1 - br i1 %.not227, label %222, label %225 - -222: ; preds = %220 - %223 = getelementptr inbounds i8, ptr %37, i64 4 - %224 = load i32, ptr %223, align 4 - %.not228 = icmp eq i32 %224, 1 - br i1 %.not228, label %226, label %225 - -225: ; preds = %222, %220 + store i32 %219, ptr %197, align 4 + %220 = load i32, ptr %182, align 4 + %221 = add i32 %220, -1 + store i32 %221, ptr %182, align 4 + br label %222 + +222: ; preds = %190, %217, %147, %164 + %.0201 = phi ptr [ %108, %147 ], [ %167, %164 ], [ %176, %190 ], [ %.1, %217 ] + %223 = load i32, ptr %58, align 4 + %.not227 = icmp eq i32 %223, 1 + br i1 %.not227, label %224, label %227 + +224: ; preds = %222 + %225 = getelementptr inbounds i8, ptr %37, i64 4 + %226 = load i32, ptr %225, align 4 + %.not228 = icmp eq i32 %226, 1 + br i1 %.not228, label %228, label %227 + +227: ; preds = %224, %222 tail call void @cuddCacheInsert(ptr noundef nonnull %0, i64 noundef 6, ptr noundef %spec.select237, ptr noundef %spec.select, ptr noundef nonnull %.0198, ptr noundef %.0201) #4 - br label %226 + br label %228 -226: ; preds = %222, %225, %175, %116, %119, %105, %68, %63, %16, %4, %214, %206, %187, %163, %144, %55, %28, %25, %21 - %.0 = phi ptr [ %22, %21 ], [ %26, %25 ], [ %29, %28 ], [ %56, %55 ], [ null, %144 ], [ null, %163 ], [ null, %187 ], [ null, %206 ], [ null, %214 ], [ %9, %4 ], [ %6, %16 ], [ %64, %63 ], [ null, %68 ], [ null, %105 ], [ %108, %119 ], [ %108, %116 ], [ null, %175 ], [ %.0201, %225 ], [ %.0201, %222 ] +228: ; preds = %224, %227, %175, %116, %119, %105, %68, %63, %16, %4, %216, %208, %187, %163, %144, %55, %28, %25, %21 + %.0 = phi ptr [ %22, %21 ], [ %26, %25 ], [ %29, %28 ], [ %56, %55 ], [ null, %144 ], [ null, %163 ], [ null, %187 ], [ null, %208 ], [ null, %216 ], [ %9, %4 ], [ %6, %16 ], [ %64, %63 ], [ null, %68 ], [ null, %105 ], [ %108, %119 ], [ %108, %116 ], [ null, %175 ], [ %.0201, %227 ], [ %.0201, %224 ] ret ptr %.0 } diff --git a/bench/abc/optimized/cuddBddAbs.c.ll b/bench/abc/optimized/cuddBddAbs.c.ll index 7ff9703c070..3fd49edd87e 100644 --- a/bench/abc/optimized/cuddBddAbs.c.ll +++ b/bench/abc/optimized/cuddBddAbs.c.ll @@ -621,7 +621,7 @@ tailrecurse: ; preds = %60 %162 = load i32, ptr %159, align 4 %163 = add i32 %162, -1 store i32 %163, ptr %159, align 4 - br label %192 + br label %194 164: ; preds = %138 %165 = icmp eq ptr %123, %135 @@ -634,58 +634,60 @@ tailrecurse: ; preds = %60 %169 = load i32, ptr %142, align 4 %170 = add i32 %169, -1 store i32 %170, ptr %142, align 4 - br label %192 + br label %194 171: ; preds = %164 %172 = and i64 %129, 1 %.not187 = icmp eq i64 %172, 0 - br i1 %.not187, label %183, label %173 + br i1 %.not187, label %185, label %173 173: ; preds = %171 - %174 = xor i64 %139, 1 + %174 = xor i64 %129, 1 %175 = inttoptr i64 %174 to ptr - %176 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0160, ptr noundef nonnull %131, ptr noundef %175) #4 - %177 = icmp eq ptr %176, null - br i1 %177, label %178, label %179 + %176 = xor i64 %139, 1 + %177 = inttoptr i64 %176 to ptr + %178 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0160, ptr noundef %175, ptr noundef %177) #4 + %179 = icmp eq ptr %178, null + br i1 %179, label %180, label %181 -178: ; preds = %173 +180: ; preds = %173 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %123) #4 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %135) #4 br label %.loopexit -179: ; preds = %173 - %180 = ptrtoint ptr %176 to i64 - %181 = xor i64 %180, 1 - %182 = inttoptr i64 %181 to ptr - br label %187 +181: ; preds = %173 + %182 = ptrtoint ptr %178 to i64 + %183 = xor i64 %182, 1 + %184 = inttoptr i64 %183 to ptr + br label %189 -183: ; preds = %171 - %184 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0160, ptr noundef nonnull %123, ptr noundef nonnull %135) #4 - %185 = icmp eq ptr %184, null - br i1 %185, label %186, label %187 +185: ; preds = %171 + %186 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0160, ptr noundef nonnull %123, ptr noundef nonnull %135) #4 + %187 = icmp eq ptr %186, null + br i1 %187, label %188, label %189 -186: ; preds = %183 +188: ; preds = %185 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %123) #4 tail call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %135) #4 br label %.loopexit -187: ; preds = %183, %179 - %.1 = phi ptr [ %182, %179 ], [ %184, %183 ] - %188 = load i32, ptr %142, align 4 - %189 = add i32 %188, -1 - store i32 %189, ptr %142, align 4 - %190 = load i32, ptr %132, align 4 +189: ; preds = %185, %181 + %.1 = phi ptr [ %184, %181 ], [ %186, %185 ] + %190 = load i32, ptr %142, align 4 %191 = add i32 %190, -1 - store i32 %191, ptr %132, align 4 - br label %192 - -192: ; preds = %166, %187, %153 - %.0168 = phi ptr [ %156, %153 ], [ %123, %166 ], [ %.1, %187 ] + store i32 %191, ptr %142, align 4 + %192 = load i32, ptr %132, align 4 + %193 = add i32 %192, -1 + store i32 %193, ptr %132, align 4 + br label %194 + +194: ; preds = %166, %189, %153 + %.0168 = phi ptr [ %156, %153 ], [ %123, %166 ], [ %.1, %189 ] tail call void @cuddCacheInsert(ptr noundef nonnull %0, i64 noundef 10, ptr noundef %spec.select188, ptr noundef %spec.select, ptr noundef nonnull %.tr193236, ptr noundef %.0168) #4 br label %.loopexit -.loopexit: ; preds = %tailrecurse, %12, %42, %4, %122, %192, %186, %178, %152, %137, %127, %40, %36, %29, %25, %21 - %.0 = phi ptr [ %22, %21 ], [ %26, %25 ], [ %33, %29 ], [ %37, %36 ], [ %41, %40 ], [ %14, %127 ], [ null, %137 ], [ null, %152 ], [ %.0168, %192 ], [ null, %178 ], [ null, %186 ], [ null, %122 ], [ %9, %4 ], [ %87, %tailrecurse ], [ %14, %12 ], [ %59, %42 ] +.loopexit: ; preds = %tailrecurse, %12, %42, %4, %122, %194, %188, %180, %152, %137, %127, %40, %36, %29, %25, %21 + %.0 = phi ptr [ %22, %21 ], [ %26, %25 ], [ %33, %29 ], [ %37, %36 ], [ %41, %40 ], [ %14, %127 ], [ null, %137 ], [ null, %152 ], [ %.0168, %194 ], [ null, %180 ], [ null, %188 ], [ null, %122 ], [ %9, %4 ], [ %87, %tailrecurse ], [ %14, %12 ], [ %59, %42 ] ret ptr %.0 } diff --git a/bench/abc/optimized/cuddClip.c.ll b/bench/abc/optimized/cuddClip.c.ll index bacfb725906..033a29a7854 100644 --- a/bench/abc/optimized/cuddClip.c.ll +++ b/bench/abc/optimized/cuddClip.c.ll @@ -57,24 +57,24 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef %11 = icmp eq ptr %1, %10 %12 = icmp eq ptr %2, %10 %or.cond = or i1 %11, %12 - br i1 %or.cond, label %145, label %13 + br i1 %or.cond, label %147, label %13 13: ; preds = %5 %14 = ptrtoint ptr %2 to i64 %15 = xor i64 %14, 1 %16 = inttoptr i64 %15 to ptr %17 = icmp eq ptr %1, %16 - br i1 %17, label %145, label %18 + br i1 %17, label %147, label %18 18: ; preds = %13 %19 = icmp eq ptr %1, %2 %20 = icmp eq ptr %2, %7 %or.cond157 = or i1 %19, %20 - br i1 %or.cond157, label %145, label %21 + br i1 %or.cond157, label %147, label %21 21: ; preds = %18 %22 = icmp eq ptr %1, %7 - br i1 %22, label %145, label %23 + br i1 %22, label %147, label %23 23: ; preds = %21 %24 = icmp eq i32 %3, 0 @@ -83,12 +83,12 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef 25: ; preds = %23 %26 = tail call i32 @Cudd_bddLeq(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2) #3 %.not153 = icmp eq i32 %26, 0 - br i1 %.not153, label %27, label %145 + br i1 %.not153, label %27, label %147 27: ; preds = %25 %28 = tail call i32 @Cudd_bddLeq(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %1) #3 %.not154 = icmp eq i32 %28, 0 - br i1 %.not154, label %29, label %145 + br i1 %.not154, label %29, label %147 29: ; preds = %27 %30 = icmp eq i32 %4, 1 @@ -97,7 +97,7 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef 31: ; preds = %29 %32 = tail call i32 @Cudd_bddLeq(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %16) #3 %.not155 = icmp eq i32 %32, 0 - br i1 %.not155, label %33, label %145 + br i1 %.not155, label %33, label %147 33: ; preds = %31 %34 = ptrtoint ptr %1 to i64 @@ -105,14 +105,14 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef %36 = inttoptr i64 %35 to ptr %37 = tail call i32 @Cudd_bddLeq(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %36) #3 %.not156 = icmp eq i32 %37, 0 - br i1 %.not156, label %38, label %145 + br i1 %.not156, label %38, label %147 38: ; preds = %33, %29 %39 = icmp eq i32 %4, 0 %40 = zext i1 %39 to i64 %41 = xor i64 %8, %40 %42 = inttoptr i64 %41 to ptr - br label %145 + br label %147 43: ; preds = %23 %44 = add nsw i32 %3, -1 @@ -141,7 +141,7 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef 58: ; preds = %55, %43 %59 = tail call ptr @cuddCacheLookup2(ptr noundef nonnull %0, ptr noundef nonnull %52, ptr noundef %spec.select158, ptr noundef %spec.select) #3 %.not145 = icmp eq ptr %59, null - br i1 %.not145, label %60, label %145 + br i1 %.not145, label %60, label %147 60: ; preds = %58, %55 %61 = getelementptr inbounds i8, ptr %0, i64 312 @@ -205,7 +205,7 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef %.0130 = phi ptr [ %94, %91 ], [ %87, %85 ], [ %spec.select, %84 ] %99 = tail call fastcc ptr @cuddBddClippingAndRecur(ptr noundef nonnull %0, ptr noundef %.0127, ptr noundef %.0130, i32 noundef %44, i32 noundef %4) %100 = icmp eq ptr %99, null - br i1 %100, label %145, label %101 + br i1 %100, label %147, label %101 101: ; preds = %98 %102 = ptrtoint ptr %99 to i64 @@ -221,7 +221,7 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef 110: ; preds = %101 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %99) #3 - br label %145 + br label %147 111: ; preds = %101 %112 = ptrtoint ptr %108 to i64 @@ -232,65 +232,67 @@ define internal fastcc ptr @cuddBddClippingAndRecur(ptr noundef %0, ptr noundef %117 = add i32 %116, 1 store i32 %117, ptr %115, align 4 %118 = icmp eq ptr %99, %108 - br i1 %118, label %135, label %119 + br i1 %118, label %137, label %119 119: ; preds = %111 %120 = and i64 %102, 1 %.not150 = icmp eq i64 %120, 0 - br i1 %.not150, label %131, label %121 + br i1 %.not150, label %133, label %121 121: ; preds = %119 - %122 = xor i64 %112, 1 + %122 = xor i64 %102, 1 %123 = inttoptr i64 %122 to ptr - %124 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0125, ptr noundef nonnull %104, ptr noundef %123) #3 - %125 = icmp eq ptr %124, null - br i1 %125, label %126, label %127 + %124 = xor i64 %112, 1 + %125 = inttoptr i64 %124 to ptr + %126 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0125, ptr noundef %123, ptr noundef %125) #3 + %127 = icmp eq ptr %126, null + br i1 %127, label %128, label %129 -126: ; preds = %121 +128: ; preds = %121 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %99) #3 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %108) #3 - br label %145 + br label %147 -127: ; preds = %121 - %128 = ptrtoint ptr %124 to i64 - %129 = xor i64 %128, 1 - %130 = inttoptr i64 %129 to ptr - br label %135 +129: ; preds = %121 + %130 = ptrtoint ptr %126 to i64 + %131 = xor i64 %130, 1 + %132 = inttoptr i64 %131 to ptr + br label %137 -131: ; preds = %119 - %132 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0125, ptr noundef nonnull %99, ptr noundef nonnull %108) #3 - %133 = icmp eq ptr %132, null - br i1 %133, label %134, label %135 +133: ; preds = %119 + %134 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0125, ptr noundef nonnull %99, ptr noundef nonnull %108) #3 + %135 = icmp eq ptr %134, null + br i1 %135, label %136, label %137 -134: ; preds = %131 +136: ; preds = %133 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %99) #3 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %108) #3 - br label %145 - -135: ; preds = %111, %127, %131 - %.0129 = phi ptr [ %130, %127 ], [ %132, %131 ], [ %99, %111 ] - %136 = load i32, ptr %115, align 4 - %137 = add i32 %136, -1 - store i32 %137, ptr %115, align 4 - %138 = load i32, ptr %105, align 4 + br label %147 + +137: ; preds = %111, %129, %133 + %.0129 = phi ptr [ %132, %129 ], [ %134, %133 ], [ %99, %111 ] + %138 = load i32, ptr %115, align 4 %139 = add i32 %138, -1 - store i32 %139, ptr %105, align 4 - %140 = load i32, ptr %53, align 4 - %.not151 = icmp eq i32 %140, 1 - br i1 %.not151, label %141, label %144 - -141: ; preds = %135 - %142 = getelementptr inbounds i8, ptr %51, i64 4 - %143 = load i32, ptr %142, align 4 - %.not152 = icmp eq i32 %143, 1 - br i1 %.not152, label %145, label %144 - -144: ; preds = %141, %135 + store i32 %139, ptr %115, align 4 + %140 = load i32, ptr %105, align 4 + %141 = add i32 %140, -1 + store i32 %141, ptr %105, align 4 + %142 = load i32, ptr %53, align 4 + %.not151 = icmp eq i32 %142, 1 + br i1 %.not151, label %143, label %146 + +143: ; preds = %137 + %144 = getelementptr inbounds i8, ptr %51, i64 4 + %145 = load i32, ptr %144, align 4 + %.not152 = icmp eq i32 %145, 1 + br i1 %.not152, label %147, label %146 + +146: ; preds = %143, %137 tail call void @cuddCacheInsert2(ptr noundef nonnull %0, ptr noundef nonnull %52, ptr noundef %spec.select158, ptr noundef %spec.select, ptr noundef %.0129) #3 - br label %145 + br label %147 -145: ; preds = %141, %144, %98, %58, %31, %33, %27, %25, %21, %18, %5, %13, %134, %126, %110, %38 - %.0 = phi ptr [ %42, %38 ], [ null, %110 ], [ null, %126 ], [ null, %134 ], [ %10, %13 ], [ %10, %5 ], [ %1, %18 ], [ %2, %21 ], [ %1, %25 ], [ %2, %27 ], [ %10, %33 ], [ %10, %31 ], [ %59, %58 ], [ null, %98 ], [ %.0129, %144 ], [ %.0129, %141 ] +147: ; preds = %143, %146, %98, %58, %31, %33, %27, %25, %21, %18, %5, %13, %136, %128, %110, %38 + %.0 = phi ptr [ %42, %38 ], [ null, %110 ], [ null, %128 ], [ null, %136 ], [ %10, %13 ], [ %10, %5 ], [ %1, %18 ], [ %2, %21 ], [ %1, %25 ], [ %2, %27 ], [ %10, %33 ], [ %10, %31 ], [ %59, %58 ], [ null, %98 ], [ %.0129, %146 ], [ %.0129, %143 ] ret ptr %.0 } @@ -565,7 +567,7 @@ tailrecurse: ; preds = %58 %165 = load i32, ptr %162, align 4 %166 = add i32 %165, -1 store i32 %166, ptr %162, align 4 - br label %195 + br label %197 167: ; preds = %140 %168 = icmp eq ptr %120, %137 @@ -578,69 +580,71 @@ tailrecurse: ; preds = %58 %172 = load i32, ptr %144, align 4 %173 = add i32 %172, -1 store i32 %173, ptr %144, align 4 - br label %195 + br label %197 174: ; preds = %167 %175 = and i64 %131, 1 %.not210 = icmp eq i64 %175, 0 - br i1 %.not210, label %186, label %176 + br i1 %.not210, label %188, label %176 176: ; preds = %174 - %177 = xor i64 %141, 1 + %177 = xor i64 %131, 1 %178 = inttoptr i64 %177 to ptr - %179 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0181, ptr noundef nonnull %133, ptr noundef %178) #3 - %180 = icmp eq ptr %179, null - br i1 %180, label %181, label %182 + %179 = xor i64 %141, 1 + %180 = inttoptr i64 %179 to ptr + %181 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0181, ptr noundef %178, ptr noundef %180) #3 + %182 = icmp eq ptr %181, null + br i1 %182, label %183, label %184 -181: ; preds = %176 +183: ; preds = %176 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %120) #3 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %137) #3 br label %.loopexit -182: ; preds = %176 - %183 = ptrtoint ptr %179 to i64 - %184 = xor i64 %183, 1 - %185 = inttoptr i64 %184 to ptr - br label %190 +184: ; preds = %176 + %185 = ptrtoint ptr %181 to i64 + %186 = xor i64 %185, 1 + %187 = inttoptr i64 %186 to ptr + br label %192 -186: ; preds = %174 - %187 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0181, ptr noundef nonnull %120, ptr noundef nonnull %137) #3 - %188 = icmp eq ptr %187, null - br i1 %188, label %189, label %190 +188: ; preds = %174 + %189 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0181, ptr noundef nonnull %120, ptr noundef nonnull %137) #3 + %190 = icmp eq ptr %189, null + br i1 %190, label %191, label %192 -189: ; preds = %186 +191: ; preds = %188 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %120) #3 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %137) #3 br label %.loopexit -190: ; preds = %186, %182 - %.1 = phi ptr [ %185, %182 ], [ %187, %186 ] - %191 = load i32, ptr %144, align 4 - %192 = add i32 %191, -1 - store i32 %192, ptr %144, align 4 - %193 = load i32, ptr %134, align 4 +192: ; preds = %188, %184 + %.1 = phi ptr [ %187, %184 ], [ %189, %188 ] + %193 = load i32, ptr %144, align 4 %194 = add i32 %193, -1 - store i32 %194, ptr %134, align 4 - br label %195 - -195: ; preds = %169, %190, %156 - %.0188 = phi ptr [ %159, %156 ], [ %120, %169 ], [ %.1, %190 ] - %196 = load i32, ptr %86, align 4 - %.not211 = icmp eq i32 %196, 1 - br i1 %.not211, label %197, label %200 - -197: ; preds = %195 - %198 = getelementptr inbounds i8, ptr %50, i64 4 - %199 = load i32, ptr %198, align 4 - %.not212 = icmp eq i32 %199, 1 - br i1 %.not212, label %.loopexit, label %200 - -200: ; preds = %197, %195 + store i32 %194, ptr %144, align 4 + %195 = load i32, ptr %134, align 4 + %196 = add i32 %195, -1 + store i32 %196, ptr %134, align 4 + br label %197 + +197: ; preds = %169, %192, %156 + %.0188 = phi ptr [ %159, %156 ], [ %120, %169 ], [ %.1, %192 ] + %198 = load i32, ptr %86, align 4 + %.not211 = icmp eq i32 %198, 1 + br i1 %.not211, label %199, label %202 + +199: ; preds = %197 + %200 = getelementptr inbounds i8, ptr %50, i64 4 + %201 = load i32, ptr %200, align 4 + %.not212 = icmp eq i32 %201, 1 + br i1 %.not212, label %.loopexit, label %202 + +202: ; preds = %199, %197 tail call void @cuddCacheInsert(ptr noundef nonnull %0, i64 noundef %18, ptr noundef %spec.select221, ptr noundef %spec.select, ptr noundef nonnull %.tr226277, ptr noundef %.0188) #3 br label %.loopexit -.loopexit: ; preds = %tailrecurse, %20, %56, %6, %197, %200, %126, %129, %119, %189, %181, %155, %139, %38, %34, %31, %27 - %.0 = phi ptr [ %28, %27 ], [ %32, %31 ], [ %35, %34 ], [ %41, %38 ], [ null, %139 ], [ null, %155 ], [ null, %181 ], [ null, %189 ], [ null, %119 ], [ %22, %129 ], [ %22, %126 ], [ %.0188, %200 ], [ %.0188, %197 ], [ %11, %6 ], [ %79, %tailrecurse ], [ %22, %20 ], [ %57, %56 ] +.loopexit: ; preds = %tailrecurse, %20, %56, %6, %199, %202, %126, %129, %119, %191, %183, %155, %139, %38, %34, %31, %27 + %.0 = phi ptr [ %28, %27 ], [ %32, %31 ], [ %35, %34 ], [ %41, %38 ], [ null, %139 ], [ null, %155 ], [ null, %183 ], [ null, %191 ], [ null, %119 ], [ %22, %129 ], [ %22, %126 ], [ %.0188, %202 ], [ %.0188, %199 ], [ %11, %6 ], [ %79, %tailrecurse ], [ %22, %20 ], [ %57, %56 ] ret ptr %.0 } diff --git a/bench/abc/optimized/cuddCof.c.ll b/bench/abc/optimized/cuddCof.c.ll index dbe07331c98..05eed7d5462 100644 --- a/bench/abc/optimized/cuddCof.c.ll +++ b/bench/abc/optimized/cuddCof.c.ll @@ -53,13 +53,13 @@ define ptr @cuddCofactorRecur(ptr noundef %0, ptr noundef %1, ptr noundef %2) lo %6 = inttoptr i64 %5 to ptr %7 = load i32, ptr %6, align 8 %8 = icmp eq i32 %7, 2147483647 - br i1 %8, label %119, label %9 + br i1 %8, label %121, label %9 9: ; preds = %3 %10 = getelementptr inbounds i8, ptr %0, i64 40 %11 = load ptr, ptr %10, align 8 %12 = icmp eq ptr %2, %11 - br i1 %12, label %119, label %13 + br i1 %12, label %121, label %13 13: ; preds = %9 %14 = icmp ne ptr %1, %6 @@ -72,7 +72,7 @@ define ptr @cuddCofactorRecur(ptr noundef %0, ptr noundef %1, ptr noundef %2) lo %18 = zext i1 %14 to i64 %19 = xor i64 %17, %18 %20 = inttoptr i64 %19 to ptr - br label %119 + br label %121 21: ; preds = %13 %22 = getelementptr inbounds i8, ptr %0, i64 312 @@ -150,17 +150,17 @@ define ptr @cuddCofactorRecur(ptr noundef %0, ptr noundef %1, ptr noundef %2) lo %70 = tail call i64 @fwrite(ptr nonnull @.str.1, i64 37, i64 1, ptr %69) %71 = getelementptr inbounds i8, ptr %0, i64 624 store i32 4, ptr %71, align 8 - br label %119 + br label %121 72: ; preds = %65, %60 %.095 = phi ptr [ %61, %60 ], [ %66, %65 ] %73 = icmp eq ptr %.095, null - br i1 %73, label %119, label %114 + br i1 %73, label %121, label %116 74: ; preds = %40 %75 = tail call ptr @cuddCofactorRecur(ptr noundef nonnull %0, ptr noundef %.096, ptr noundef %2) %76 = icmp eq ptr %75, null - br i1 %76, label %119, label %77 + br i1 %76, label %121, label %77 77: ; preds = %74 %78 = ptrtoint ptr %75 to i64 @@ -176,7 +176,7 @@ define ptr @cuddCofactorRecur(ptr noundef %0, ptr noundef %1, ptr noundef %2) lo 86: ; preds = %77 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %75) #5 - br label %119 + br label %121 87: ; preds = %77 %88 = ptrtoint ptr %84 to i64 @@ -193,56 +193,58 @@ define ptr @cuddCofactorRecur(ptr noundef %0, ptr noundef %1, ptr noundef %2) lo %96 = and i64 %78, 1 %.not110 = icmp eq i64 %96, 0 %97 = load i32, ptr %6, align 8 - br i1 %.not110, label %106, label %98 + br i1 %.not110, label %108, label %98 98: ; preds = %95 - %99 = xor i64 %88, 1 + %99 = xor i64 %78, 1 %100 = inttoptr i64 %99 to ptr - %101 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %97, ptr noundef nonnull %80, ptr noundef %100) #5 - %.not111 = icmp eq ptr %101, null - br i1 %.not111, label %.thread116, label %102 - -102: ; preds = %98 - %103 = ptrtoint ptr %101 to i64 - %104 = xor i64 %103, 1 - %105 = inttoptr i64 %104 to ptr - br label %108 - -106: ; preds = %95 - %107 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %97, ptr noundef nonnull %75, ptr noundef nonnull %84) #5 - br label %108 - -108: ; preds = %106, %102 - %.2 = phi ptr [ %105, %102 ], [ %107, %106 ] - %109 = icmp eq ptr %.2, null - br i1 %109, label %.thread116, label %.thread118 - -.thread116: ; preds = %98, %108 + %101 = xor i64 %88, 1 + %102 = inttoptr i64 %101 to ptr + %103 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %97, ptr noundef %100, ptr noundef %102) #5 + %.not111 = icmp eq ptr %103, null + br i1 %.not111, label %.thread116, label %104 + +104: ; preds = %98 + %105 = ptrtoint ptr %103 to i64 + %106 = xor i64 %105, 1 + %107 = inttoptr i64 %106 to ptr + br label %110 + +108: ; preds = %95 + %109 = tail call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %97, ptr noundef nonnull %75, ptr noundef nonnull %84) #5 + br label %110 + +110: ; preds = %108, %104 + %.2 = phi ptr [ %107, %104 ], [ %109, %108 ] + %111 = icmp eq ptr %.2, null + br i1 %111, label %.thread116, label %.thread118 + +.thread116: ; preds = %98, %110 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %84) #5 tail call void @Cudd_RecursiveDeref(ptr noundef nonnull %0, ptr noundef nonnull %75) #5 - br label %119 - -.thread118: ; preds = %87, %108 - %.2120 = phi ptr [ %.2, %108 ], [ %75, %87 ] - %110 = load i32, ptr %81, align 4 - %111 = add i32 %110, -1 - store i32 %111, ptr %81, align 4 - %112 = load i32, ptr %91, align 4 + br label %121 + +.thread118: ; preds = %87, %110 + %.2120 = phi ptr [ %.2, %110 ], [ %75, %87 ] + %112 = load i32, ptr %81, align 4 %113 = add i32 %112, -1 - store i32 %113, ptr %91, align 4 - br label %114 + store i32 %113, ptr %81, align 4 + %114 = load i32, ptr %91, align 4 + %115 = add i32 %114, -1 + store i32 %115, ptr %91, align 4 + br label %116 -114: ; preds = %72, %.thread118 +116: ; preds = %72, %.thread118 %.1 = phi ptr [ %.095, %72 ], [ %.2120, %.thread118 ] tail call void @cuddCacheInsert2(ptr noundef nonnull %0, ptr noundef nonnull @Cudd_Cofactor, ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull %.1) #5 - %115 = ptrtoint ptr %.1 to i64 - %116 = zext i1 %14 to i64 - %117 = xor i64 %115, %116 - %118 = inttoptr i64 %117 to ptr - br label %119 - -119: ; preds = %74, %72, %9, %3, %114, %.thread116, %86, %67, %16 - %.0 = phi ptr [ %20, %16 ], [ %118, %114 ], [ null, %67 ], [ null, %86 ], [ null, %.thread116 ], [ %1, %3 ], [ %1, %9 ], [ null, %72 ], [ null, %74 ] + %117 = ptrtoint ptr %.1 to i64 + %118 = zext i1 %14 to i64 + %119 = xor i64 %117, %118 + %120 = inttoptr i64 %119 to ptr + br label %121 + +121: ; preds = %74, %72, %9, %3, %116, %.thread116, %86, %67, %16 + %.0 = phi ptr [ %20, %16 ], [ %120, %116 ], [ null, %67 ], [ null, %86 ], [ null, %.thread116 ], [ %1, %3 ], [ %1, %9 ], [ null, %72 ], [ null, %74 ] ret ptr %.0 } diff --git a/bench/abc/optimized/dsdTree.c.ll b/bench/abc/optimized/dsdTree.c.ll index 4fad0873016..5b7e95d3b06 100644 --- a/bench/abc/optimized/dsdTree.c.ll +++ b/bench/abc/optimized/dsdTree.c.ll @@ -1400,59 +1400,53 @@ define i64 @Dsd_TreeFunc2Truth_rec(ptr noundef %0, ptr noundef %1) local_unnamed %6 = xor i64 %5, 1 %7 = inttoptr i64 %6 to ptr %8 = icmp eq ptr %1, %7 - br i1 %8, label %common.ret37, label %.lr.ph - -.lr.ph: ; preds = %2, %tailrecurse - %.tr1823 = phi ptr [ %14, %tailrecurse ], [ %1, %2 ] - %accumulator.tr22 = phi i64 [ %15, %tailrecurse ], [ 0, %2 ] - %9 = icmp eq ptr %.tr1823, %4 - br i1 %9, label %._crit_edge.loopexit, label %10 - -10: ; preds = %.lr.ph - %11 = ptrtoint ptr %.tr1823 to i64 - %12 = and i64 %11, 1 - %.not = icmp eq i64 %12, 0 - br i1 %.not, label %17, label %tailrecurse - -tailrecurse: ; preds = %10 - %13 = and i64 %11, -2 - %14 = inttoptr i64 %13 to ptr - %15 = xor i64 %accumulator.tr22, -1 - %16 = icmp eq i64 %13, %6 - br i1 %16, label %._crit_edge.loopexit, label %.lr.ph - -common.ret37: ; preds = %._crit_edge.loopexit, %2, %17 - %common.ret37.op = phi i64 [ %accumulator.ret.tr, %17 ], [ 0, %2 ], [ %37, %._crit_edge.loopexit ] - ret i64 %common.ret37.op - -17: ; preds = %10 - %18 = getelementptr inbounds i8, ptr %0, i64 312 - %19 = load ptr, ptr %18, align 8 - %20 = load i32, ptr %.tr1823, align 8 - %21 = zext i32 %20 to i64 - %22 = getelementptr inbounds i32, ptr %19, i64 %21 - %23 = load i32, ptr %22, align 4 - %24 = getelementptr inbounds i8, ptr %.tr1823, i64 16 - %25 = getelementptr inbounds i8, ptr %.tr1823, i64 24 - %26 = load ptr, ptr %25, align 8 - %27 = tail call i64 @Dsd_TreeFunc2Truth_rec(ptr noundef nonnull %0, ptr noundef %26) - %28 = load ptr, ptr %24, align 8 - %29 = tail call i64 @Dsd_TreeFunc2Truth_rec(ptr noundef nonnull %0, ptr noundef %28) - %30 = sext i32 %23 to i64 - %31 = getelementptr inbounds [6 x i64], ptr @s_Truths6, i64 0, i64 %30 - %32 = load i64, ptr %31, align 8 - %33 = and i64 %32, %29 - %34 = xor i64 %32, -1 - %35 = and i64 %27, %34 - %36 = or i64 %33, %35 - %accumulator.ret.tr = xor i64 %36, %accumulator.tr22 - br label %common.ret37 - -._crit_edge.loopexit: ; preds = %.lr.ph, %tailrecurse - %accumulator.tr.lcssa.ph = phi i64 [ %15, %tailrecurse ], [ %accumulator.tr22, %.lr.ph ] - %.0.ph = phi i64 [ 0, %tailrecurse ], [ -1, %.lr.ph ] - %37 = xor i64 %.0.ph, %accumulator.tr.lcssa.ph - br label %common.ret37 + br i1 %8, label %common.ret40, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %2 + %9 = icmp eq ptr %1, %4 + br i1 %9, label %common.ret40, label %.lr.ph35 + +.lr.ph35: ; preds = %.lr.ph.preheader, %tailrecurse + %accumulator.tr2234 = phi i64 [ %14, %tailrecurse ], [ 0, %.lr.ph.preheader ] + %.tr182333 = phi ptr [ %13, %tailrecurse ], [ %1, %.lr.ph.preheader ] + %10 = ptrtoint ptr %.tr182333 to i64 + %11 = and i64 %10, 1 + %.not = icmp eq i64 %11, 0 + br i1 %.not, label %16, label %tailrecurse + +tailrecurse: ; preds = %.lr.ph35 + %12 = xor i64 %10, 1 + %13 = inttoptr i64 %12 to ptr + %14 = xor i64 %accumulator.tr2234, -1 + %15 = icmp eq ptr %4, %13 + br i1 %15, label %common.ret40, label %.lr.ph35 + +common.ret40: ; preds = %2, %.lr.ph.preheader, %tailrecurse, %16 + %common.ret40.op = phi i64 [ %accumulator.ret.tr, %16 ], [ 0, %2 ], [ -1, %.lr.ph.preheader ], [ %accumulator.tr2234, %tailrecurse ] + ret i64 %common.ret40.op + +16: ; preds = %.lr.ph35 + %17 = getelementptr inbounds i8, ptr %0, i64 312 + %18 = load ptr, ptr %17, align 8 + %19 = load i32, ptr %.tr182333, align 8 + %20 = zext i32 %19 to i64 + %21 = getelementptr inbounds i32, ptr %18, i64 %20 + %22 = load i32, ptr %21, align 4 + %23 = getelementptr inbounds i8, ptr %.tr182333, i64 16 + %24 = getelementptr inbounds i8, ptr %.tr182333, i64 24 + %25 = load ptr, ptr %24, align 8 + %26 = tail call i64 @Dsd_TreeFunc2Truth_rec(ptr noundef nonnull %0, ptr noundef %25) + %27 = load ptr, ptr %23, align 8 + %28 = tail call i64 @Dsd_TreeFunc2Truth_rec(ptr noundef nonnull %0, ptr noundef %27) + %29 = sext i32 %22 to i64 + %30 = getelementptr inbounds [6 x i64], ptr @s_Truths6, i64 0, i64 %29 + %31 = load i64, ptr %30, align 8 + %32 = and i64 %31, %28 + %33 = xor i64 %31, -1 + %34 = and i64 %26, %33 + %35 = or i64 %32, %34 + %accumulator.ret.tr = xor i64 %35, %accumulator.tr2234 + br label %common.ret40 } ; Function Attrs: nounwind uwtable diff --git a/bench/abc/optimized/extraBddTime.c.ll b/bench/abc/optimized/extraBddTime.c.ll index 3c07e56453f..333ecde319d 100644 --- a/bench/abc/optimized/extraBddTime.c.ll +++ b/bench/abc/optimized/extraBddTime.c.ll @@ -37,13 +37,13 @@ define internal fastcc ptr @cuddBddAndRecurTime(ptr noundef %0, ptr noundef %1, 15: ; preds = %4 %16 = icmp eq ptr %1, %2 - br i1 %16, label %140, label %17 + br i1 %16, label %142, label %17 17: ; preds = %15 %18 = ptrtoint ptr %7 to i64 %19 = xor i64 %18, 1 %20 = inttoptr i64 %19 to ptr - br label %140 + br label %142 21: ; preds = %4 %22 = icmp eq ptr %7, %10 @@ -52,7 +52,7 @@ define internal fastcc ptr @cuddBddAndRecurTime(ptr noundef %0, ptr noundef %1, 23: ; preds = %21 %24 = icmp eq ptr %1, %7 %. = select i1 %24, ptr %2, ptr %1 - br label %140 + br label %142 25: ; preds = %21 %26 = icmp eq ptr %7, %13 @@ -61,7 +61,7 @@ define internal fastcc ptr @cuddBddAndRecurTime(ptr noundef %0, ptr noundef %1, 27: ; preds = %25 %28 = icmp eq ptr %2, %7 %.141 = select i1 %28, ptr %1, ptr %2 - br label %140 + br label %142 29: ; preds = %25 %30 = icmp ugt ptr %1, %2 @@ -89,7 +89,7 @@ define internal fastcc ptr @cuddBddAndRecurTime(ptr noundef %0, ptr noundef %1, 38: ; preds = %35, %32 %39 = tail call ptr @cuddCacheLookup2(ptr noundef nonnull %0, ptr noundef nonnull @Cudd_bddAnd, ptr noundef %.0108, ptr noundef %.0109) #5 %.not132 = icmp eq ptr %39, null - br i1 %.not132, label %40, label %140 + br i1 %.not132, label %40, label %142 40: ; preds = %38, %35 %.not133 = icmp eq i32 %3, 0 @@ -115,7 +115,7 @@ Abc_Clock.exit: ; preds = %41, %44 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) %51 = sext i32 %3 to i64 %52 = icmp sgt i64 %.0.i, %51 - br i1 %52, label %140, label %53 + br i1 %52, label %142, label %53 53: ; preds = %Abc_Clock.exit, %40 %54 = getelementptr inbounds i8, ptr %0, i64 312 @@ -181,7 +181,7 @@ Abc_Clock.exit: ; preds = %41, %44 %.0114 = phi ptr [ %92, %86 ], [ %83, %79 ], [ %.0109, %78 ] %94 = call fastcc ptr @cuddBddAndRecurTime(ptr noundef nonnull %0, ptr noundef %.0111, ptr noundef %.0115, i32 noundef %3) %95 = icmp eq ptr %94, null - br i1 %95, label %140, label %96 + br i1 %95, label %142, label %96 96: ; preds = %93 %97 = ptrtoint ptr %94 to i64 @@ -197,7 +197,7 @@ Abc_Clock.exit: ; preds = %41, %44 105: ; preds = %96 call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %94) #5 - br label %140 + br label %142 106: ; preds = %96 %107 = ptrtoint ptr %103 to i64 @@ -208,65 +208,67 @@ Abc_Clock.exit: ; preds = %41, %44 %112 = add i32 %111, 1 store i32 %112, ptr %110, align 4 %113 = icmp eq ptr %94, %103 - br i1 %113, label %130, label %114 + br i1 %113, label %132, label %114 114: ; preds = %106 %115 = and i64 %97, 1 %.not138 = icmp eq i64 %115, 0 - br i1 %.not138, label %126, label %116 + br i1 %.not138, label %128, label %116 116: ; preds = %114 - %117 = xor i64 %107, 1 + %117 = xor i64 %97, 1 %118 = inttoptr i64 %117 to ptr - %119 = call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0107, ptr noundef nonnull %99, ptr noundef %118) #5 - %120 = icmp eq ptr %119, null - br i1 %120, label %121, label %122 + %119 = xor i64 %107, 1 + %120 = inttoptr i64 %119 to ptr + %121 = call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0107, ptr noundef %118, ptr noundef %120) #5 + %122 = icmp eq ptr %121, null + br i1 %122, label %123, label %124 -121: ; preds = %116 +123: ; preds = %116 call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %94) #5 call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %103) #5 - br label %140 + br label %142 -122: ; preds = %116 - %123 = ptrtoint ptr %119 to i64 - %124 = xor i64 %123, 1 - %125 = inttoptr i64 %124 to ptr - br label %130 +124: ; preds = %116 + %125 = ptrtoint ptr %121 to i64 + %126 = xor i64 %125, 1 + %127 = inttoptr i64 %126 to ptr + br label %132 -126: ; preds = %114 - %127 = call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0107, ptr noundef nonnull %94, ptr noundef nonnull %103) #5 - %128 = icmp eq ptr %127, null - br i1 %128, label %129, label %130 +128: ; preds = %114 + %129 = call ptr @cuddUniqueInter(ptr noundef nonnull %0, i32 noundef %.0107, ptr noundef nonnull %94, ptr noundef nonnull %103) #5 + %130 = icmp eq ptr %129, null + br i1 %130, label %131, label %132 -129: ; preds = %126 +131: ; preds = %128 call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %94) #5 call void @Cudd_IterDerefBdd(ptr noundef nonnull %0, ptr noundef nonnull %103) #5 - br label %140 - -130: ; preds = %106, %122, %126 - %.0112 = phi ptr [ %125, %122 ], [ %127, %126 ], [ %94, %106 ] - %131 = load i32, ptr %110, align 4 - %132 = add i32 %131, -1 - store i32 %132, ptr %110, align 4 - %133 = load i32, ptr %100, align 4 + br label %142 + +132: ; preds = %106, %124, %128 + %.0112 = phi ptr [ %127, %124 ], [ %129, %128 ], [ %94, %106 ] + %133 = load i32, ptr %110, align 4 %134 = add i32 %133, -1 - store i32 %134, ptr %100, align 4 - %135 = load i32, ptr %33, align 4 - %.not139 = icmp eq i32 %135, 1 - br i1 %.not139, label %136, label %139 - -136: ; preds = %130 - %137 = getelementptr inbounds i8, ptr %.0116, i64 4 - %138 = load i32, ptr %137, align 4 - %.not140 = icmp eq i32 %138, 1 - br i1 %.not140, label %140, label %139 - -139: ; preds = %136, %130 + store i32 %134, ptr %110, align 4 + %135 = load i32, ptr %100, align 4 + %136 = add i32 %135, -1 + store i32 %136, ptr %100, align 4 + %137 = load i32, ptr %33, align 4 + %.not139 = icmp eq i32 %137, 1 + br i1 %.not139, label %138, label %141 + +138: ; preds = %132 + %139 = getelementptr inbounds i8, ptr %.0116, i64 4 + %140 = load i32, ptr %139, align 4 + %.not140 = icmp eq i32 %140, 1 + br i1 %.not140, label %142, label %141 + +141: ; preds = %138, %132 call void @cuddCacheInsert2(ptr noundef nonnull %0, ptr noundef nonnull @Cudd_bddAnd, ptr noundef %.0108, ptr noundef %.0109, ptr noundef %.0112) #5 - br label %140 + br label %142 -140: ; preds = %136, %139, %93, %Abc_Clock.exit, %38, %27, %23, %15, %129, %121, %105, %17 - %.0 = phi ptr [ %20, %17 ], [ null, %105 ], [ null, %121 ], [ null, %129 ], [ %1, %15 ], [ %., %23 ], [ %.141, %27 ], [ %39, %38 ], [ null, %Abc_Clock.exit ], [ null, %93 ], [ %.0112, %139 ], [ %.0112, %136 ] +142: ; preds = %138, %141, %93, %Abc_Clock.exit, %38, %27, %23, %15, %131, %123, %105, %17 + %.0 = phi ptr [ %20, %17 ], [ null, %105 ], [ null, %123 ], [ null, %131 ], [ %1, %15 ], [ %., %23 ], [ %.141, %27 ], [ %39, %38 ], [ null, %Abc_Clock.exit ], [ null, %93 ], [ %.0112, %141 ], [ %.0112, %138 ] ret ptr %.0 } @@ -301,13 +303,13 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %15 = inttoptr i64 %14 to ptr %16 = icmp eq ptr %1, %15 %or.cond249 = or i1 %16, %or.cond - br i1 %or.cond249, label %225, label %17 + br i1 %or.cond249, label %227, label %17 17: ; preds = %5 %18 = icmp eq ptr %1, %7 %19 = icmp eq ptr %2, %7 %or.cond250 = and i1 %18, %19 - br i1 %or.cond250, label %225, label %20 + br i1 %or.cond250, label %227, label %20 20: ; preds = %17 %21 = icmp eq ptr %3, %7 @@ -315,7 +317,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 22: ; preds = %20 %23 = tail call fastcc ptr @cuddBddAndRecurTime(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, i32 noundef %4) - br label %225 + br label %227 24: ; preds = %20 %25 = icmp eq ptr %1, %2 @@ -324,14 +326,14 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 26: ; preds = %24 %27 = tail call ptr @cuddBddExistAbstractRecur(ptr noundef nonnull %0, ptr noundef %2, ptr noundef %3) #5 - br label %225 + br label %227 28: ; preds = %24 br i1 %19, label %29, label %31 29: ; preds = %28 %30 = tail call ptr @cuddBddExistAbstractRecur(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %3) #5 - br label %225 + br label %227 31: ; preds = %28 %32 = icmp ugt ptr %1, %2 @@ -373,7 +375,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 56: ; preds = %52 %57 = tail call fastcc ptr @cuddBddAndRecurTime(ptr noundef %0, ptr noundef %spec.select252, ptr noundef %spec.select, i32 noundef %4) - br label %225 + br label %227 58: ; preds = %50 %59 = getelementptr inbounds i8, ptr %35, i64 4 @@ -390,7 +392,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 64: ; preds = %61, %58 %65 = tail call ptr @cuddCacheLookup(ptr noundef %0, i64 noundef 6, ptr noundef %spec.select252, ptr noundef %spec.select, ptr noundef nonnull %.0212) #5 %.not235 = icmp eq ptr %65, null - br i1 %.not235, label %66, label %225 + br i1 %.not235, label %66, label %227 66: ; preds = %64, %61 %.not236 = icmp eq i32 %4, 0 @@ -400,7 +402,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %68 = tail call fastcc i64 @Abc_Clock() %69 = sext i32 %4 to i64 %70 = icmp sgt i64 %68, %69 - br i1 %70, label %225, label %71 + br i1 %70, label %227, label %71 71: ; preds = %67, %66 %.not237 = icmp ugt i32 %44, %48 @@ -465,7 +467,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %106 = load ptr, ptr %105, align 8 %107 = tail call fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noundef %.0213, ptr noundef %.0217, ptr noundef %106, i32 noundef %4) %108 = icmp eq ptr %107, null - br i1 %108, label %225, label %109 + br i1 %108, label %227, label %109 109: ; preds = %104 %110 = icmp eq ptr %107, %7 @@ -484,11 +486,11 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %116 = getelementptr inbounds i8, ptr %38, i64 4 %117 = load i32, ptr %116, align 4 %.not245 = icmp eq i32 %117, 1 - br i1 %.not245, label %225, label %118 + br i1 %.not245, label %227, label %118 118: ; preds = %115, %113 tail call void @cuddCacheInsert(ptr noundef %0, i64 noundef 6, ptr noundef %spec.select252, ptr noundef %spec.select, ptr noundef nonnull %.0212, ptr noundef nonnull %107) #5 - br label %225 + br label %227 119: ; preds = %109 %120 = ptrtoint ptr %107 to i64 @@ -530,7 +532,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 143: ; preds = %141 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %107) #5 - br label %225 + br label %227 144: ; preds = %141 %145 = icmp eq ptr %107, %.0214 @@ -540,7 +542,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %147 = load i32, ptr %123, align 4 %148 = add i32 %147, -1 store i32 %148, ptr %123, align 4 - br label %219 + br label %221 149: ; preds = %144 %150 = ptrtoint ptr %.0214 to i64 @@ -561,7 +563,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 162: ; preds = %149 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %107) #5 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %.0214) #5 - br label %225 + br label %227 163: ; preds = %149 %164 = ptrtoint ptr %160 to i64 @@ -578,12 +580,12 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %172 = load i32, ptr %169, align 4 %173 = add i32 %172, -1 store i32 %173, ptr %169, align 4 - br label %219 + br label %221 174: ; preds = %102 %175 = tail call fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noundef %.0213, ptr noundef %.0217, ptr noundef nonnull %.0212, i32 noundef %4) %176 = icmp eq ptr %175, null - br i1 %176, label %225, label %177 + br i1 %176, label %227, label %177 177: ; preds = %174 %178 = ptrtoint ptr %175 to i64 @@ -599,7 +601,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun 186: ; preds = %177 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %175) #5 - br label %225 + br label %227 187: ; preds = %177 %188 = icmp eq ptr %175, %184 @@ -609,7 +611,7 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun %190 = load i32, ptr %181, align 4 %191 = add i32 %190, -1 store i32 %191, ptr %181, align 4 - br label %219 + br label %221 192: ; preds = %187 %193 = ptrtoint ptr %184 to i64 @@ -621,64 +623,66 @@ define internal fastcc ptr @cuddBddAndAbstractRecurTime(ptr noundef %0, ptr noun store i32 %198, ptr %196, align 4 %199 = and i64 %178, 1 %.not241 = icmp eq i64 %199, 0 - br i1 %.not241, label %210, label %200 + br i1 %.not241, label %212, label %200 200: ; preds = %192 - %201 = xor i64 %193, 1 + %201 = xor i64 %178, 1 %202 = inttoptr i64 %201 to ptr - %203 = tail call ptr @cuddUniqueInter(ptr noundef %0, i32 noundef %.0209, ptr noundef nonnull %180, ptr noundef %202) #5 - %204 = icmp eq ptr %203, null - br i1 %204, label %205, label %206 + %203 = xor i64 %193, 1 + %204 = inttoptr i64 %203 to ptr + %205 = tail call ptr @cuddUniqueInter(ptr noundef %0, i32 noundef %.0209, ptr noundef %202, ptr noundef %204) #5 + %206 = icmp eq ptr %205, null + br i1 %206, label %207, label %208 -205: ; preds = %200 +207: ; preds = %200 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %175) #5 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %184) #5 - br label %225 + br label %227 -206: ; preds = %200 - %207 = ptrtoint ptr %203 to i64 - %208 = xor i64 %207, 1 - %209 = inttoptr i64 %208 to ptr - br label %214 +208: ; preds = %200 + %209 = ptrtoint ptr %205 to i64 + %210 = xor i64 %209, 1 + %211 = inttoptr i64 %210 to ptr + br label %216 -210: ; preds = %192 - %211 = tail call ptr @cuddUniqueInter(ptr noundef %0, i32 noundef %.0209, ptr noundef nonnull %175, ptr noundef nonnull %184) #5 - %212 = icmp eq ptr %211, null - br i1 %212, label %213, label %214 +212: ; preds = %192 + %213 = tail call ptr @cuddUniqueInter(ptr noundef %0, i32 noundef %.0209, ptr noundef nonnull %175, ptr noundef nonnull %184) #5 + %214 = icmp eq ptr %213, null + br i1 %214, label %215, label %216 -213: ; preds = %210 +215: ; preds = %212 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %175) #5 tail call void @Cudd_IterDerefBdd(ptr noundef %0, ptr noundef nonnull %184) #5 - br label %225 - -214: ; preds = %210, %206 - %.1 = phi ptr [ %209, %206 ], [ %211, %210 ] - %215 = load i32, ptr %196, align 4 - %216 = add i32 %215, -1 - store i32 %216, ptr %196, align 4 - %217 = load i32, ptr %181, align 4 + br label %227 + +216: ; preds = %212, %208 + %.1 = phi ptr [ %211, %208 ], [ %213, %212 ] + %217 = load i32, ptr %196, align 4 %218 = add i32 %217, -1 - store i32 %218, ptr %181, align 4 - br label %219 - -219: ; preds = %189, %214, %146, %163 - %.0215 = phi ptr [ %107, %146 ], [ %166, %163 ], [ %175, %189 ], [ %.1, %214 ] - %220 = load i32, ptr %59, align 4 - %.not242 = icmp eq i32 %220, 1 - br i1 %.not242, label %221, label %224 - -221: ; preds = %219 - %222 = getelementptr inbounds i8, ptr %38, i64 4 - %223 = load i32, ptr %222, align 4 - %.not243 = icmp eq i32 %223, 1 - br i1 %.not243, label %225, label %224 - -224: ; preds = %221, %219 + store i32 %218, ptr %196, align 4 + %219 = load i32, ptr %181, align 4 + %220 = add i32 %219, -1 + store i32 %220, ptr %181, align 4 + br label %221 + +221: ; preds = %189, %216, %146, %163 + %.0215 = phi ptr [ %107, %146 ], [ %166, %163 ], [ %175, %189 ], [ %.1, %216 ] + %222 = load i32, ptr %59, align 4 + %.not242 = icmp eq i32 %222, 1 + br i1 %.not242, label %223, label %226 + +223: ; preds = %221 + %224 = getelementptr inbounds i8, ptr %38, i64 4 + %225 = load i32, ptr %224, align 4 + %.not243 = icmp eq i32 %225, 1 + br i1 %.not243, label %227, label %226 + +226: ; preds = %223, %221 tail call void @cuddCacheInsert(ptr noundef %0, i64 noundef 6, ptr noundef %spec.select252, ptr noundef %spec.select, ptr noundef nonnull %.0212, ptr noundef %.0215) #5 - br label %225 + br label %227 -225: ; preds = %221, %224, %174, %115, %118, %104, %67, %64, %17, %5, %213, %205, %186, %162, %143, %56, %29, %26, %22 - %.0 = phi ptr [ %23, %22 ], [ %27, %26 ], [ %30, %29 ], [ %57, %56 ], [ null, %143 ], [ null, %162 ], [ null, %186 ], [ null, %205 ], [ null, %213 ], [ %10, %5 ], [ %7, %17 ], [ %65, %64 ], [ null, %67 ], [ null, %104 ], [ %107, %118 ], [ %107, %115 ], [ null, %174 ], [ %.0215, %224 ], [ %.0215, %221 ] +227: ; preds = %223, %226, %174, %115, %118, %104, %67, %64, %17, %5, %215, %207, %186, %162, %143, %56, %29, %26, %22 + %.0 = phi ptr [ %23, %22 ], [ %27, %26 ], [ %30, %29 ], [ %57, %56 ], [ null, %143 ], [ null, %162 ], [ null, %186 ], [ null, %207 ], [ null, %215 ], [ %10, %5 ], [ %7, %17 ], [ %65, %64 ], [ null, %67 ], [ null, %104 ], [ %107, %118 ], [ %107, %115 ], [ null, %174 ], [ %.0215, %226 ], [ %.0215, %223 ] ret ptr %.0 } diff --git a/bench/abc/optimized/ivyDsd.c.ll b/bench/abc/optimized/ivyDsd.c.ll index 748cb5a5108..d4b51aa0dd9 100644 --- a/bench/abc/optimized/ivyDsd.c.ll +++ b/bench/abc/optimized/ivyDsd.c.ll @@ -426,7 +426,7 @@ define internal fastcc i32 @Ivy_TruthDecompose_rec(i32 noundef %0, ptr noundef % 61: ; preds = %58 %62 = load i32, ptr %5, align 16 - br label %397 + br label %396 63: ; preds = %58 %64 = icmp eq i32 %.189, 0 @@ -794,7 +794,7 @@ Vec_IntPush.exit120: ; preds = %.Vec_IntGrow.exit10 Ivy_TruthRecognizeMuxMaj.exit: ; preds = %Vec_IntPush.exit133, %.loopexit187, %.loopexit187.thread, %Vec_IntPush.exit120 %.057.i = phi i32 [ %257, %Vec_IntPush.exit120 ], [ %154, %Vec_IntPush.exit133 ], [ -1, %.loopexit187 ], [ -1, %.loopexit187.thread ] call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) - br label %397 + br label %396 258: ; preds = %63 %259 = icmp sgt i32 %.189, 0 @@ -921,157 +921,156 @@ Ivy_DecSetVar.exit: ; preds = %288, %293, %298, %3 %320 = xor i32 %.080, %.lobit %321 = xor i32 %320, 1 %.181 = select i1 %318, i32 %321, i32 %.080 - br i1 %268, label %322, label %358 + br i1 %268, label %322, label %357 322: ; preds = %._crit_edge %323 = tail call fastcc i32 @Ivy_TruthDecompose_rec(i32 noundef %.078.lcssa, ptr noundef %1) %324 = icmp eq i32 %323, -1 - br i1 %324, label %397, label %325 + br i1 %324, label %396, label %325 325: ; preds = %322 %326 = and i32 %323, 1 %.not = icmp ne i32 %326, 0 %or.cond100.not = and i1 %318, %.not - %327 = and i32 %323, -2 - %.082 = select i1 %318, i32 %327, i32 %323 - %328 = zext i1 %or.cond100.not to i32 - %.2 = xor i32 %.181, %328 + %327 = zext i1 %or.cond100.not to i32 + %.082 = xor i32 %323, %327 + %.2 = xor i32 %.181, %327 switch i32 %.083, label %Ivy_DecSetVar.exit113 [ - i32 0, label %329 - i32 1, label %334 - i32 2, label %339 - i32 3, label %344 - i32 4, label %349 - i32 5, label %354 + i32 0, label %328 + i32 1, label %333 + i32 2, label %338 + i32 3, label %343 + i32 4, label %348 + i32 5, label %353 ] -329: ; preds = %325 - %330 = shl i32 %.082, 8 - %331 = and i32 %330, 3840 - %332 = and i32 %.sroa.0.1.lcssa, -3841 - %333 = or disjoint i32 %331, %332 +328: ; preds = %325 + %329 = shl i32 %.082, 8 + %330 = and i32 %329, 3840 + %331 = and i32 %.sroa.0.1.lcssa, -3841 + %332 = or disjoint i32 %330, %331 br label %Ivy_DecSetVar.exit113 -334: ; preds = %325 - %335 = shl i32 %.082, 12 - %336 = and i32 %335, 61440 - %337 = and i32 %.sroa.0.1.lcssa, -61441 - %338 = or disjoint i32 %336, %337 +333: ; preds = %325 + %334 = shl i32 %.082, 12 + %335 = and i32 %334, 61440 + %336 = and i32 %.sroa.0.1.lcssa, -61441 + %337 = or disjoint i32 %335, %336 br label %Ivy_DecSetVar.exit113 -339: ; preds = %325 - %340 = shl i32 %.082, 16 - %341 = and i32 %340, 983040 - %342 = and i32 %.sroa.0.1.lcssa, -983041 - %343 = or disjoint i32 %341, %342 +338: ; preds = %325 + %339 = shl i32 %.082, 16 + %340 = and i32 %339, 983040 + %341 = and i32 %.sroa.0.1.lcssa, -983041 + %342 = or disjoint i32 %340, %341 br label %Ivy_DecSetVar.exit113 -344: ; preds = %325 - %345 = shl i32 %.082, 20 - %346 = and i32 %345, 15728640 - %347 = and i32 %.sroa.0.1.lcssa, -15728641 - %348 = or disjoint i32 %346, %347 +343: ; preds = %325 + %344 = shl i32 %.082, 20 + %345 = and i32 %344, 15728640 + %346 = and i32 %.sroa.0.1.lcssa, -15728641 + %347 = or disjoint i32 %345, %346 br label %Ivy_DecSetVar.exit113 -349: ; preds = %325 - %350 = shl i32 %.082, 24 - %351 = and i32 %350, 251658240 - %352 = and i32 %.sroa.0.1.lcssa, -251658241 - %353 = or disjoint i32 %351, %352 +348: ; preds = %325 + %349 = shl i32 %.082, 24 + %350 = and i32 %349, 251658240 + %351 = and i32 %.sroa.0.1.lcssa, -251658241 + %352 = or disjoint i32 %350, %351 br label %Ivy_DecSetVar.exit113 -354: ; preds = %325 - %355 = shl i32 %.082, 28 - %356 = and i32 %.sroa.0.1.lcssa, 268435455 - %357 = or disjoint i32 %355, %356 +353: ; preds = %325 + %354 = shl i32 %.082, 28 + %355 = and i32 %.sroa.0.1.lcssa, 268435455 + %356 = or disjoint i32 %354, %355 br label %Ivy_DecSetVar.exit113 -358: ; preds = %._crit_edge - br i1 %318, label %359, label %Ivy_DecSetVar.exit113 +357: ; preds = %._crit_edge + br i1 %318, label %358, label %Ivy_DecSetVar.exit113 -359: ; preds = %358 - %360 = icmp eq i32 %.078.lcssa, 0 - %361 = zext i1 %360 to i32 - %362 = xor i32 %321, %361 +358: ; preds = %357 + %359 = icmp eq i32 %.078.lcssa, 0 + %360 = zext i1 %359 to i32 + %361 = xor i32 %321, %360 br label %Ivy_DecSetVar.exit113 -Ivy_DecSetVar.exit113: ; preds = %325, %354, %349, %344, %339, %334, %329, %358, %359 - %.sroa.0.2 = phi i32 [ %.sroa.0.1.lcssa, %359 ], [ %.sroa.0.1.lcssa, %358 ], [ %.sroa.0.1.lcssa, %325 ], [ %357, %354 ], [ %353, %349 ], [ %348, %344 ], [ %343, %339 ], [ %338, %334 ], [ %333, %329 ] - %.3 = phi i32 [ %362, %359 ], [ %.080, %358 ], [ %.2, %325 ], [ %.2, %354 ], [ %.2, %349 ], [ %.2, %344 ], [ %.2, %339 ], [ %.2, %334 ], [ %.2, %329 ] - %363 = getelementptr inbounds i8, ptr %1, i64 4 - %364 = load i32, ptr %363, align 4 - %365 = load i32, ptr %1, align 8 - %366 = icmp eq i32 %364, %365 - br i1 %366, label %367, label %.Vec_IntGrow.exit10_crit_edge.i +Ivy_DecSetVar.exit113: ; preds = %325, %353, %348, %343, %338, %333, %328, %357, %358 + %.sroa.0.2 = phi i32 [ %.sroa.0.1.lcssa, %358 ], [ %.sroa.0.1.lcssa, %357 ], [ %.sroa.0.1.lcssa, %325 ], [ %356, %353 ], [ %352, %348 ], [ %347, %343 ], [ %342, %338 ], [ %337, %333 ], [ %332, %328 ] + %.3 = phi i32 [ %361, %358 ], [ %.080, %357 ], [ %.2, %325 ], [ %.2, %353 ], [ %.2, %348 ], [ %.2, %343 ], [ %.2, %338 ], [ %.2, %333 ], [ %.2, %328 ] + %362 = getelementptr inbounds i8, ptr %1, i64 4 + %363 = load i32, ptr %362, align 4 + %364 = load i32, ptr %1, align 8 + %365 = icmp eq i32 %363, %364 + br i1 %365, label %366, label %.Vec_IntGrow.exit10_crit_edge.i .Vec_IntGrow.exit10_crit_edge.i: ; preds = %Ivy_DecSetVar.exit113 %.phi.trans.insert.i = getelementptr inbounds i8, ptr %1, i64 8 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8 br label %Vec_IntPush.exit -367: ; preds = %Ivy_DecSetVar.exit113 - %368 = icmp slt i32 %364, 16 - br i1 %368, label %369, label %377 +366: ; preds = %Ivy_DecSetVar.exit113 + %367 = icmp slt i32 %363, 16 + br i1 %367, label %368, label %376 -369: ; preds = %367 - %370 = getelementptr inbounds i8, ptr %1, i64 8 - %371 = load ptr, ptr %370, align 8 - %.not9.i.i = icmp eq ptr %371, null - br i1 %.not9.i.i, label %374, label %372 +368: ; preds = %366 + %369 = getelementptr inbounds i8, ptr %1, i64 8 + %370 = load ptr, ptr %369, align 8 + %.not9.i.i = icmp eq ptr %370, null + br i1 %.not9.i.i, label %373, label %371 -372: ; preds = %369 - %373 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %371, i64 noundef 64) #9 +371: ; preds = %368 + %372 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %370, i64 noundef 64) #9 br label %Vec_IntGrow.exit.i -374: ; preds = %369 - %375 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #10 +373: ; preds = %368 + %374 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #10 br label %Vec_IntGrow.exit.i -Vec_IntGrow.exit.i: ; preds = %374, %372 - %376 = phi ptr [ %373, %372 ], [ %375, %374 ] - store ptr %376, ptr %370, align 8 +Vec_IntGrow.exit.i: ; preds = %373, %371 + %375 = phi ptr [ %372, %371 ], [ %374, %373 ] + store ptr %375, ptr %369, align 8 store i32 16, ptr %1, align 8 br label %Vec_IntPush.exit -377: ; preds = %367 - %378 = shl nuw nsw i32 %364, 1 - %379 = getelementptr inbounds i8, ptr %1, i64 8 - %380 = load ptr, ptr %379, align 8 - %.not9.i9.i = icmp eq ptr %380, null - %381 = zext nneg i32 %378 to i64 - %382 = shl nuw nsw i64 %381, 2 - br i1 %.not9.i9.i, label %385, label %383 - -383: ; preds = %377 - %384 = tail call ptr @realloc(ptr noundef nonnull %380, i64 noundef %382) #9 - br label %387 - -385: ; preds = %377 - %386 = tail call noalias ptr @malloc(i64 noundef %382) #10 - br label %387 - -387: ; preds = %385, %383 - %388 = phi ptr [ %384, %383 ], [ %386, %385 ] - store ptr %388, ptr %379, align 8 - store i32 %378, ptr %1, align 8 +376: ; preds = %366 + %377 = shl nuw nsw i32 %363, 1 + %378 = getelementptr inbounds i8, ptr %1, i64 8 + %379 = load ptr, ptr %378, align 8 + %.not9.i9.i = icmp eq ptr %379, null + %380 = zext nneg i32 %377 to i64 + %381 = shl nuw nsw i64 %380, 2 + br i1 %.not9.i9.i, label %384, label %382 + +382: ; preds = %376 + %383 = tail call ptr @realloc(ptr noundef nonnull %379, i64 noundef %381) #9 + br label %386 + +384: ; preds = %376 + %385 = tail call noalias ptr @malloc(i64 noundef %381) #10 + br label %386 + +386: ; preds = %384, %382 + %387 = phi ptr [ %383, %382 ], [ %385, %384 ] + store ptr %387, ptr %378, align 8 + store i32 %377, ptr %1, align 8 br label %Vec_IntPush.exit -Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %387 - %389 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %388, %387 ], [ %376, %Vec_IntGrow.exit.i ] - %390 = load i32, ptr %363, align 4 - %391 = add nsw i32 %390, 1 - store i32 %391, ptr %363, align 4 - %392 = sext i32 %390 to i64 - %393 = getelementptr inbounds i32, ptr %389, i64 %392 - store i32 %.sroa.0.2, ptr %393, align 4 - %.val = load i32, ptr %363, align 4 - %394 = shl i32 %.val, 1 - %395 = add i32 %394, -2 - %396 = or i32 %395, %.3 - br label %397 - -397: ; preds = %322, %Vec_IntPush.exit, %Ivy_TruthRecognizeMuxMaj.exit, %61 - %.0 = phi i32 [ %62, %61 ], [ %.057.i, %Ivy_TruthRecognizeMuxMaj.exit ], [ %396, %Vec_IntPush.exit ], [ -1, %322 ] +Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10_crit_edge.i, %Vec_IntGrow.exit.i, %386 + %388 = phi ptr [ %.pre.i, %.Vec_IntGrow.exit10_crit_edge.i ], [ %387, %386 ], [ %375, %Vec_IntGrow.exit.i ] + %389 = load i32, ptr %362, align 4 + %390 = add nsw i32 %389, 1 + store i32 %390, ptr %362, align 4 + %391 = sext i32 %389 to i64 + %392 = getelementptr inbounds i32, ptr %388, i64 %391 + store i32 %.sroa.0.2, ptr %392, align 4 + %.val = load i32, ptr %362, align 4 + %393 = shl i32 %.val, 1 + %394 = add i32 %393, -2 + %395 = or i32 %394, %.3 + br label %396 + +396: ; preds = %322, %Vec_IntPush.exit, %Ivy_TruthRecognizeMuxMaj.exit, %61 + %.0 = phi i32 [ %62, %61 ], [ %.057.i, %Ivy_TruthRecognizeMuxMaj.exit ], [ %395, %Vec_IntPush.exit ], [ -1, %322 ] ret i32 %.0 } diff --git a/bench/assimp/optimized/SMDLoader.cpp.ll b/bench/assimp/optimized/SMDLoader.cpp.ll index 0b2e740aec3..071ab9c0177 100644 --- a/bench/assimp/optimized/SMDLoader.cpp.ll +++ b/bench/assimp/optimized/SMDLoader.cpp.ll @@ -2757,7 +2757,7 @@ if.end.thread: ; preds = %entry %1 = load ptr, ptr %pScene23, align 8 %mNumAnimations24 = getelementptr inbounds i8, ptr %1, i64 48 store i32 1, ptr %mNumAnimations24, align 8 - br label %9 + br label %10 if.then: ; preds = %entry invoke void @_ZN6Assimp11SMDImporter20GetAnimationFileListERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_8IOSystemERSt6vectorISt5tupleIJS6_S6_EESaISD_EE(ptr nonnull align 8 poison, ptr noundef nonnull align 8 dereferenceable(32) %pFile, ptr noundef %pIOHandler, ptr noundef nonnull align 8 dereferenceable(24) %animFileList) @@ -2768,7 +2768,7 @@ lpad.loopexit: ; preds = %for.body, %invoke.c cleanup br label %ehcleanup30 -lpad.loopexit.split-lp: ; preds = %if.then, %9 +lpad.loopexit.split-lp: ; preds = %if.then, %10 %lpad.loopexit.split-lp15 = landingpad { ptr, i32 } cleanup br label %ehcleanup30 @@ -2788,27 +2788,28 @@ if.end: ; preds = %if.then %7 = load ptr, ptr %pScene, align 8 %mNumAnimations = getelementptr inbounds i8, ptr %7, i64 48 store i32 1, ptr %mNumAnimations, align 8 - %8 = ashr exact i64 %6, 29 + %8 = lshr exact i64 %6, 29 %.inv = icmp sgt i64 %6, -1 %spec.select = select i1 %.inv, i64 %8, i64 -1 - br label %9 + %9 = ashr exact i64 %6, 29 + br label %10 -9: ; preds = %if.end, %if.end.thread - %10 = phi i64 [ 8, %if.end.thread ], [ %8, %if.end ] - %pScene29 = phi ptr [ %pScene23, %if.end.thread ], [ %pScene, %if.end ] - %_M_finish.i27 = phi ptr [ %_M_finish.i22, %if.end.thread ], [ %_M_finish.i, %if.end ] +10: ; preds = %if.end, %if.end.thread + %pScene31 = phi ptr [ %pScene23, %if.end.thread ], [ %pScene, %if.end ] + %_M_finish.i29 = phi ptr [ %_M_finish.i22, %if.end.thread ], [ %_M_finish.i, %if.end ] + %sub.ptr.sub.i27 = phi i64 [ 8, %if.end.thread ], [ %9, %if.end ] %11 = phi i64 [ 8, %if.end.thread ], [ %spec.select, %if.end ] %call4 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %11) #29 to label %invoke.cont3 unwind label %lpad.loopexit.split-lp -invoke.cont3: ; preds = %9 - %12 = load ptr, ptr %pScene29, align 8 +invoke.cont3: ; preds = %10 + %12 = load ptr, ptr %pScene31, align 8 %mAnimations = getelementptr inbounds i8, ptr %12, i64 56 store ptr %call4, ptr %mAnimations, align 8 - %13 = load ptr, ptr %pScene29, align 8 + %13 = load ptr, ptr %pScene31, align 8 %mAnimations7 = getelementptr inbounds i8, ptr %13, i64 56 %14 = load ptr, ptr %mAnimations7, align 8 - call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %10, i1 false) + call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %sub.ptr.sub.i27, i1 false) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) #26 %call.i8 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i.noexc unwind label %lpad10 @@ -2835,7 +2836,7 @@ invoke.cont13: ; preds = %invoke.cont11 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #26 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp9) #26 %16 = load ptr, ptr %animFileList, align 8 - %17 = load ptr, ptr %_M_finish.i27, align 8 + %17 = load ptr, ptr %_M_finish.i29, align 8 %cmp.i.not16 = icmp eq ptr %16, %17 br i1 %cmp.i.not16, label %invoke.cont.i, label %for.body.lr.ph @@ -2909,7 +2910,7 @@ for.inc17.i: ; preds = %for.body12.i, %for. invoke.cont24: ; preds = %for.inc17.i store double %dMax.1.lcssa.i, ptr %dLengthOfAnim.i, align 8 - %26 = load ptr, ptr %pScene29, align 8 + %26 = load ptr, ptr %pScene31, align 8 %mNumAnimations26 = getelementptr inbounds i8, ptr %26, i64 48 %27 = load i32, ptr %mNumAnimations26, align 8 %inc = add i32 %27, 1 @@ -2925,7 +2926,7 @@ for.inc: ; preds = %invoke.cont24, %inv for.end: ; preds = %for.inc %.pre19 = load ptr, ptr %animFileList, align 8 - %.pre20 = load ptr, ptr %_M_finish.i27, align 8 + %.pre20 = load ptr, ptr %_M_finish.i29, align 8 %cmp.not3.i.i.i.i = icmp eq ptr %.pre19, %.pre20 br i1 %cmp.not3.i.i.i.i, label %invoke.cont.i, label %for.body.i.i.i.i diff --git a/bench/brotli/optimized/transform.c.ll b/bench/brotli/optimized/transform.c.ll index db0171565f0..3bfa9dee20e 100644 --- a/bench/brotli/optimized/transform.c.ll +++ b/bench/brotli/optimized/transform.c.ll @@ -140,7 +140,7 @@ if.then.i: ; preds = %if.then48 br i1 %or.cond.i, label %if.then10.i, label %if.end123 if.then10.i: ; preds = %if.then.i - %17 = and i8 %15, 95 + %17 = xor i8 %15, 32 store i8 %17, ptr %arrayidx51, align 1 br label %if.end123 @@ -184,7 +184,7 @@ if.then.i67: ; preds = %while.body62 br i1 %or.cond.i68, label %if.then10.i69, label %ToUpperCase.exit70 if.then10.i69: ; preds = %if.then.i67 - %24 = and i8 %22, 95 + %24 = xor i8 %22, 32 store i8 %24, ptr %uppercase.084, align 1 br label %ToUpperCase.exit70 diff --git a/bench/c3c/optimized/lexer.c.ll b/bench/c3c/optimized/lexer.c.ll index 7308ac29623..7f2a4d9e058 100644 --- a/bench/c3c/optimized/lexer.c.ll +++ b/bench/c3c/optimized/lexer.c.ll @@ -4862,66 +4862,65 @@ define internal void @add_error_token_at(ptr nocapture noundef %0, ptr noundef % %.sroa.3.0.insert.shift = select i1 %17, i64 0, i64 %20 %.sroa.3.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.shift, %.sroa.4.0.insert.shift %21 = shl nuw nsw i32 %2, 16 - %22 = and i32 %21, 16711680 - %23 = select i1 %8, i32 0, i32 %22 - %.sroa.2.0.insert.shift = zext nneg i32 %23 to i64 - %.sroa.2.0.insert.insert = or disjoint i64 %.sroa.3.0.insert.insert, %.sroa.2.0.insert.shift - %.sroa.0.0.insert.ext = zext i16 %11 to i64 - %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.2.0.insert.insert, %.sroa.0.0.insert.ext + %22 = select i1 %8, i32 0, i32 %21 + %23 = zext i16 %11 to i32 + %24 = or disjoint i32 %22, %23 + %.sroa.2.0.insert.insert = zext nneg i32 %24 to i64 + %.sroa.0.0.insert.insert = or i64 %.sroa.3.0.insert.insert, %.sroa.2.0.insert.insert call void @sema_verror_range(i64 %.sroa.0.0.insert.insert, ptr noundef %3, ptr noundef nonnull %5) #10 call void @llvm.va_end.p0(ptr nonnull %5) - %24 = getelementptr inbounds i8, ptr %0, i64 112 - store i32 0, ptr %24, align 8 - %25 = getelementptr inbounds i8, ptr %0, i64 24 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %0, i64 16 - %28 = load ptr, ptr %27, align 8 - %29 = ptrtoint ptr %26 to i64 - %30 = ptrtoint ptr %28 to i64 - %31 = sub i64 %29, %30 - %32 = getelementptr inbounds i8, ptr %0, i64 64 - %33 = getelementptr inbounds i8, ptr %0, i64 72 - store i64 %31, ptr %33, align 8 - store ptr %28, ptr %32, align 8 - %34 = getelementptr inbounds i8, ptr %0, i64 36 - %35 = load i32, ptr %34, align 4 - %36 = load i32, ptr %6, align 8 - %37 = icmp eq i32 %35, %36 - br i1 %37, label %38, label %48 - -38: ; preds = %4 - %39 = load ptr, ptr %12, align 8 - %40 = ptrtoint ptr %39 to i64 - %41 = sub i64 %30, %40 - %42 = icmp sgt i64 %41, 254 - %43 = trunc i64 %41 to i8 - %44 = add i8 %43, 1 - %.0.i.i = select i1 %42, i8 0, i8 %44 - %45 = icmp sgt i64 %31, 255 - %46 = trunc i64 %31 to i8 - %47 = select i1 %45, i8 0, i8 %46 + %25 = getelementptr inbounds i8, ptr %0, i64 112 + store i32 0, ptr %25, align 8 + %26 = getelementptr inbounds i8, ptr %0, i64 24 + %27 = load ptr, ptr %26, align 8 + %28 = getelementptr inbounds i8, ptr %0, i64 16 + %29 = load ptr, ptr %28, align 8 + %30 = ptrtoint ptr %27 to i64 + %31 = ptrtoint ptr %29 to i64 + %32 = sub i64 %30, %31 + %33 = getelementptr inbounds i8, ptr %0, i64 64 + %34 = getelementptr inbounds i8, ptr %0, i64 72 + store i64 %32, ptr %34, align 8 + store ptr %29, ptr %33, align 8 + %35 = getelementptr inbounds i8, ptr %0, i64 36 + %36 = load i32, ptr %35, align 4 + %37 = load i32, ptr %6, align 8 + %38 = icmp eq i32 %36, %37 + br i1 %38, label %39, label %49 + +39: ; preds = %4 + %40 = load ptr, ptr %12, align 8 + %41 = ptrtoint ptr %40 to i64 + %42 = sub i64 %31, %41 + %43 = icmp sgt i64 %42, 254 + %44 = trunc i64 %42 to i8 + %45 = add i8 %44, 1 + %.0.i.i = select i1 %43, i8 0, i8 %45 + %46 = icmp sgt i64 %32, 255 + %47 = trunc i64 %32 to i8 + %48 = select i1 %46, i8 0, i8 %47 br label %set_generic_token.exit -48: ; preds = %4 - %49 = getelementptr inbounds i8, ptr %0, i64 48 - %50 = load ptr, ptr %49, align 8 - %51 = ptrtoint ptr %50 to i64 - %52 = sub i64 %30, %51 - %53 = icmp sgt i64 %52, 254 - %54 = trunc i64 %52 to i8 - %55 = add i8 %54, 1 - %.0.i26.i = select i1 %53, i8 0, i8 %55 +49: ; preds = %4 + %50 = getelementptr inbounds i8, ptr %0, i64 48 + %51 = load ptr, ptr %50, align 8 + %52 = ptrtoint ptr %51 to i64 + %53 = sub i64 %31, %52 + %54 = icmp sgt i64 %53, 254 + %55 = trunc i64 %53 to i8 + %56 = add i8 %55, 1 + %.0.i26.i = select i1 %54, i8 0, i8 %56 br label %set_generic_token.exit -set_generic_token.exit: ; preds = %38, %48 - %.024.in.i = phi i8 [ %.0.i.i, %38 ], [ %.0.i26.i, %48 ] - %.0.i9 = phi i8 [ %47, %38 ], [ 1, %48 ] - %56 = getelementptr inbounds i8, ptr %0, i64 106 - store i8 %.0.i9, ptr %56, align 2 - %57 = getelementptr inbounds i8, ptr %0, i64 107 - store i8 %.024.in.i, ptr %57, align 1 - %58 = getelementptr inbounds i8, ptr %0, i64 108 - store i32 %35, ptr %58, align 4 +set_generic_token.exit: ; preds = %39, %49 + %.024.in.i = phi i8 [ %.0.i.i, %39 ], [ %.0.i26.i, %49 ] + %.0.i9 = phi i8 [ %48, %39 ], [ 1, %49 ] + %57 = getelementptr inbounds i8, ptr %0, i64 106 + store i8 %.0.i9, ptr %57, align 2 + %58 = getelementptr inbounds i8, ptr %0, i64 107 + store i8 %.024.in.i, ptr %58, align 1 + %59 = getelementptr inbounds i8, ptr %0, i64 108 + store i32 %36, ptr %59, align 4 ret void } diff --git a/bench/casadi/optimized/tinyxml2.cpp.ll b/bench/casadi/optimized/tinyxml2.cpp.ll index 53dd55d8dfd..877d50e02a9 100644 --- a/bench/casadi/optimized/tinyxml2.cpp.ll +++ b/bench/casadi/optimized/tinyxml2.cpp.ll @@ -1768,9 +1768,9 @@ _ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit.thread: ; preds = %_ZN8tinyxml27X 35: ; preds = %_ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit.thread %36 = shl i32 %32, 1 %37 = add i32 %36, 2 - %38 = sext i32 %37 to i64 + %38 = zext i32 %37 to i64 %39 = icmp slt i32 %32, -1 - %40 = shl nsw i64 %38, 3 + %40 = shl nuw nsw i64 %38, 3 %41 = select i1 %39, i64 -1, i64 %40 %42 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %41) #32 %43 = load ptr, ptr %30, align 8 @@ -1842,9 +1842,9 @@ _ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit32.thread: ; preds = %_ZN8tinyxml2 73: ; preds = %_ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit32.thread %74 = shl i32 %70, 1 %75 = add i32 %74, 2 - %76 = sext i32 %75 to i64 + %76 = zext i32 %75 to i64 %77 = icmp slt i32 %70, -1 - %78 = shl nsw i64 %76, 3 + %78 = shl nuw nsw i64 %76, 3 %79 = select i1 %77, i64 -1, i64 %78 %80 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %79) #32 %81 = load ptr, ptr %68, align 8 @@ -1928,9 +1928,9 @@ _ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit41.thread: ; preds = %97, %_ZN8tin 118: ; preds = %_ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit41.thread %119 = shl i32 %115, 1 %120 = add i32 %119, 2 - %121 = sext i32 %120 to i64 + %121 = zext i32 %120 to i64 %122 = icmp slt i32 %115, -1 - %123 = shl nsw i64 %121, 3 + %123 = shl nuw nsw i64 %121, 3 %124 = select i1 %122, i64 -1, i64 %123 %125 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %124) #32 %126 = load ptr, ptr %113, align 8 @@ -2007,9 +2007,9 @@ _ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit50.thread: ; preds = %142, %_ZN8ti 158: ; preds = %_ZN8tinyxml27XMLUtil11StringEqualEPKcS2_i.exit50.thread %159 = shl i32 %155, 1 %160 = add i32 %159, 2 - %161 = sext i32 %160 to i64 + %161 = zext i32 %160 to i64 %162 = icmp slt i32 %155, -1 - %163 = shl nsw i64 %161, 3 + %163 = shl nuw nsw i64 %161, 3 %164 = select i1 %162, i64 -1, i64 %163 %165 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %164) #32 %166 = load ptr, ptr %153, align 8 @@ -2113,9 +2113,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml211XMLDocument18CreateUnlinke 19: ; preds = %2 %20 = shl i32 %16, 1 %21 = add i32 %20, 2 - %22 = sext i32 %21 to i64 + %22 = zext i32 %21 to i64 %23 = icmp slt i32 %16, -1 - %24 = shl nsw i64 %22, 3 + %24 = shl nuw nsw i64 %22, 3 %25 = select i1 %23, i64 -1, i64 %24 %26 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %25) #32 %27 = load ptr, ptr %14, align 8 @@ -2175,9 +2175,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml211XMLDocument18CreateUnlinke 13: ; preds = %2 %14 = shl i32 %10, 1 %15 = add i32 %14, 2 - %16 = sext i32 %15 to i64 + %16 = zext i32 %15 to i64 %17 = icmp slt i32 %10, -1 - %18 = shl nsw i64 %16, 3 + %18 = shl nuw nsw i64 %16, 3 %19 = select i1 %17, i64 -1, i64 %18 %20 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %19) #32 %21 = load ptr, ptr %8, align 8 @@ -4580,9 +4580,9 @@ define noundef ptr @_ZN8tinyxml211XMLDocument7NewTextEPKc(ptr noundef nonnull al 20: ; preds = %2 %21 = shl i32 %17, 1 %22 = add i32 %21, 2 - %23 = sext i32 %22 to i64 + %23 = zext i32 %22 to i64 %24 = icmp slt i32 %17, -1 - %25 = shl nsw i64 %23, 3 + %25 = shl nuw nsw i64 %23, 3 %26 = select i1 %24, i64 -1, i64 %25 %27 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %26) #32 %28 = load ptr, ptr %15, align 8 @@ -4933,9 +4933,9 @@ define noundef ptr @_ZN8tinyxml211XMLDocument10NewCommentEPKc(ptr noundef nonnul 14: ; preds = %2 %15 = shl i32 %11, 1 %16 = add i32 %15, 2 - %17 = sext i32 %16 to i64 + %17 = zext i32 %16 to i64 %18 = icmp slt i32 %11, -1 - %19 = shl nsw i64 %17, 3 + %19 = shl nuw nsw i64 %17, 3 %20 = select i1 %18, i64 -1, i64 %19 %21 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %20) #32 %22 = load ptr, ptr %9, align 8 @@ -5280,9 +5280,9 @@ define noundef ptr @_ZN8tinyxml211XMLDocument14NewDeclarationEPKc(ptr noundef no 14: ; preds = %2 %15 = shl i32 %11, 1 %16 = add i32 %15, 2 - %17 = sext i32 %16 to i64 + %17 = zext i32 %16 to i64 %18 = icmp slt i32 %11, -1 - %19 = shl nsw i64 %17, 3 + %19 = shl nuw nsw i64 %17, 3 %20 = select i1 %18, i64 -1, i64 %19 %21 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %20) #32 %22 = load ptr, ptr %9, align 8 @@ -5623,9 +5623,9 @@ define noundef ptr @_ZN8tinyxml211XMLDocument10NewUnknownEPKc(ptr noundef nonnul 14: ; preds = %2 %15 = shl i32 %11, 1 %16 = add i32 %15, 2 - %17 = sext i32 %16 to i64 + %17 = zext i32 %16 to i64 %18 = icmp slt i32 %11, -1 - %19 = shl nsw i64 %17, 3 + %19 = shl nuw nsw i64 %17, 3 %20 = select i1 %18, i64 -1, i64 %19 %21 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %20) #32 %22 = load ptr, ptr %9, align 8 @@ -8556,9 +8556,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml28MemPoolTILi80EE5AllocEv(ptr 11: ; preds = %4 %12 = shl i32 %8, 1 %13 = add i32 %12, 2 - %14 = sext i32 %13 to i64 + %14 = zext i32 %13 to i64 %15 = icmp slt i32 %8, -1 - %16 = shl nsw i64 %14, 3 + %16 = shl nuw nsw i64 %14, 3 %17 = select i1 %15, i64 -1, i64 %16 %18 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %17) #32 %19 = load ptr, ptr %6, align 8 @@ -8673,9 +8673,9 @@ define noundef ptr @_ZN8tinyxml211XMLDocument10NewElementEPKc(ptr noundef nonnul 14: ; preds = %2 %15 = shl i32 %11, 1 %16 = add i32 %15, 2 - %17 = sext i32 %16 to i64 + %17 = zext i32 %16 to i64 %18 = icmp slt i32 %11, -1 - %19 = shl nsw i64 %17, 3 + %19 = shl nuw nsw i64 %17, 3 %20 = select i1 %18, i64 -1, i64 %19 %21 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %20) #32 %22 = load ptr, ptr %9, align 8 @@ -11822,9 +11822,9 @@ _ZN8tinyxml210XMLPrinter17PrepareForNewNodeEb.exit: ; preds = %_ZN8tinyxml210XML 34: ; preds = %_ZN8tinyxml210XMLPrinter17PrepareForNewNodeEb.exit %35 = shl i32 %31, 1 %36 = add i32 %35, 2 - %37 = sext i32 %36 to i64 + %37 = zext i32 %36 to i64 %38 = icmp slt i32 %31, -1 - %39 = shl nsw i64 %37, 3 + %39 = shl nuw nsw i64 %37, 3 %40 = select i1 %38, i64 -1, i64 %39 %41 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %40) #32 %42 = load ptr, ptr %29, align 8 @@ -13402,9 +13402,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml28MemPoolTILi120EE5AllocEv(pt 11: ; preds = %4 %12 = shl i32 %8, 1 %13 = add i32 %12, 2 - %14 = sext i32 %13 to i64 + %14 = zext i32 %13 to i64 %15 = icmp slt i32 %8, -1 - %16 = shl nsw i64 %14, 3 + %16 = shl nuw nsw i64 %14, 3 %17 = select i1 %15, i64 -1, i64 %16 %18 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %17) #32 %19 = load ptr, ptr %6, align 8 @@ -13682,9 +13682,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml28MemPoolTILi112EE5AllocEv(pt 11: ; preds = %4 %12 = shl i32 %8, 1 %13 = add i32 %12, 2 - %14 = sext i32 %13 to i64 + %14 = zext i32 %13 to i64 %15 = icmp slt i32 %8, -1 - %16 = shl nsw i64 %14, 3 + %16 = shl nuw nsw i64 %14, 3 %17 = select i1 %15, i64 -1, i64 %16 %18 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %17) #32 %19 = load ptr, ptr %6, align 8 @@ -13875,9 +13875,9 @@ define linkonce_odr hidden noundef ptr @_ZN8tinyxml28MemPoolTILi104EE5AllocEv(pt 11: ; preds = %4 %12 = shl i32 %8, 1 %13 = add i32 %12, 2 - %14 = sext i32 %13 to i64 + %14 = zext i32 %13 to i64 %15 = icmp slt i32 %8, -1 - %16 = shl nsw i64 %14, 3 + %16 = shl nuw nsw i64 %14, 3 %17 = select i1 %15, i64 -1, i64 %16 %18 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %17) #32 %19 = load ptr, ptr %6, align 8 diff --git a/bench/clamav/optimized/matcher-byte-comp.c.ll b/bench/clamav/optimized/matcher-byte-comp.c.ll index 6a9e79fac44..aae43804f23 100644 --- a/bench/clamav/optimized/matcher-byte-comp.c.ll +++ b/bench/clamav/optimized/matcher-byte-comp.c.ll @@ -1130,7 +1130,7 @@ define range(i32 0, 21) i32 @cli_bcomp_compare_check(ptr noundef readonly %0, i6 .thread202.thread213: ; preds = %49 tail call void (ptr, ...) @cli_errmsg(ptr noundef nonnull @.str.25) #14 - br label %187 + br label %188 .thread: ; preds = %22, %43, %49 %.1146201 = phi ptr [ %40, %49 ], [ %40, %43 ], [ null, %22 ] @@ -1163,313 +1163,313 @@ sub_0.i: ; preds = %53 .tail27.thread.i: ; preds = %sub_0.i, %.tail.i %.sink.i = phi i16 [ %60, %.tail.i ], [ 2, %sub_0.i ] - %.masked = and i16 %13, -9 - %61 = or i16 %.sink.i, %.masked + %61 = or i16 %.sink.i, %13 + %62 = xor i16 %61, 8 br label %cli_bcomp_chk_hex.exit cli_bcomp_chk_hex.exit: ; preds = %.tail27.thread.i, %53, %.thread - %.0151 = phi i16 [ %13, %.thread ], [ %61, %.tail27.thread.i ], [ %13, %53 ] + %.0151 = phi i16 [ %13, %.thread ], [ %62, %.tail27.thread.i ], [ %13, %53 ] %.0151.fr = freeze i16 %.0151 - %62 = zext i16 %.0151.fr to i32 + %63 = zext i16 %.0151.fr to i32 %trunc = trunc i16 %.0151.fr to i8 - switch i8 %trunc, label %145 [ - i8 17, label %63 - i8 33, label %83 + switch i8 %trunc, label %146 [ + i8 17, label %64 + i8 33, label %84 i8 18, label %.loopexit - i8 34, label %101 - i8 20, label %119 - i8 36, label %131 + i8 34, label %102 + i8 20, label %120 + i8 36, label %132 ] -63: ; preds = %cli_bcomp_chk_hex.exit +64: ; preds = %cli_bcomp_chk_hex.exit %.not171 = icmp eq i32 %.0157200, 1 - %64 = and i32 %.0157200, 1 - %65 = add i32 %64, %.0157200 - %narrow = select i1 %.not171, i32 1, i32 %65 + %65 = and i32 %.0157200, 1 + %66 = add i32 %65, %.0157200 + %narrow = select i1 %.not171, i32 1, i32 %66 %.0156 = zext i32 %narrow to i64 - %66 = tail call ptr @__errno_location() #16 - store i32 0, ptr %66, align 4 - %67 = call i64 @cli_strntol(ptr noundef %.1, i64 noundef %.0156, ptr noundef nonnull %5, i32 noundef 16) #14 - %68 = add i64 %67, -9223372036854775807 - %or.cond3 = icmp ult i64 %68, 2 - br i1 %or.cond3, label %69, label %74 - -69: ; preds = %63 - %70 = load i32, ptr %66, align 4 - %71 = icmp eq i32 %70, 34 - %72 = load ptr, ptr %5, align 8 - %73 = icmp eq ptr %72, null - %or.cond5 = select i1 %71, i1 true, i1 %73 - br i1 %or.cond5, label %.loopexit, label %75 - -74: ; preds = %63 + %67 = tail call ptr @__errno_location() #16 + store i32 0, ptr %67, align 4 + %68 = call i64 @cli_strntol(ptr noundef %.1, i64 noundef %.0156, ptr noundef nonnull %5, i32 noundef 16) #14 + %69 = add i64 %68, -9223372036854775807 + %or.cond3 = icmp ult i64 %69, 2 + br i1 %or.cond3, label %70, label %75 + +70: ; preds = %64 + %71 = load i32, ptr %67, align 4 + %72 = icmp eq i32 %71, 34 + %73 = load ptr, ptr %5, align 8 + %74 = icmp eq ptr %73, null + %or.cond5 = select i1 %72, i1 true, i1 %74 + br i1 %or.cond5, label %.loopexit, label %76 + +75: ; preds = %64 %.old = load ptr, ptr %5, align 8 %.old4 = icmp eq ptr %.old, null - br i1 %.old4, label %.loopexit, label %75 - -75: ; preds = %69, %74 - %76 = phi ptr [ %72, %69 ], [ %.old, %74 ] - %77 = and i32 %62, 256 - %.not172 = icmp eq i32 %77, 0 - br i1 %.not172, label %146, label %78 - -78: ; preds = %75 - %79 = zext i32 %.0157200 to i64 - %80 = getelementptr inbounds i8, ptr %.1, i64 %79 - %81 = icmp ne ptr %80, %76 - %82 = icmp ne i32 %.0189199, 0 - %or.cond8 = or i1 %82, %81 - br i1 %or.cond8, label %.loopexit, label %146 - -83: ; preds = %cli_bcomp_chk_hex.exit - %84 = zext i32 %.0157200 to i64 - %85 = call i64 @cli_strntol(ptr noundef %.1146201, i64 noundef %84, ptr noundef nonnull %5, i32 noundef 16) #14 - %86 = add i64 %85, -9223372036854775807 - %or.cond11 = icmp ult i64 %86, 2 - br i1 %or.cond11, label %87, label %93 - -87: ; preds = %83 - %88 = tail call ptr @__errno_location() #16 - %89 = load i32, ptr %88, align 4 - %90 = icmp eq i32 %89, 34 - %91 = load ptr, ptr %5, align 8 - %92 = icmp eq ptr %91, null - %or.cond14 = select i1 %90, i1 true, i1 %92 - br i1 %or.cond14, label %.loopexit, label %94 - -93: ; preds = %83 + br i1 %.old4, label %.loopexit, label %76 + +76: ; preds = %70, %75 + %77 = phi ptr [ %73, %70 ], [ %.old, %75 ] + %78 = and i32 %63, 256 + %.not172 = icmp eq i32 %78, 0 + br i1 %.not172, label %147, label %79 + +79: ; preds = %76 + %80 = zext i32 %.0157200 to i64 + %81 = getelementptr inbounds i8, ptr %.1, i64 %80 + %82 = icmp ne ptr %81, %77 + %83 = icmp ne i32 %.0189199, 0 + %or.cond8 = or i1 %83, %82 + br i1 %or.cond8, label %.loopexit, label %147 + +84: ; preds = %cli_bcomp_chk_hex.exit + %85 = zext i32 %.0157200 to i64 + %86 = call i64 @cli_strntol(ptr noundef %.1146201, i64 noundef %85, ptr noundef nonnull %5, i32 noundef 16) #14 + %87 = add i64 %86, -9223372036854775807 + %or.cond11 = icmp ult i64 %87, 2 + br i1 %or.cond11, label %88, label %94 + +88: ; preds = %84 + %89 = tail call ptr @__errno_location() #16 + %90 = load i32, ptr %89, align 4 + %91 = icmp eq i32 %90, 34 + %92 = load ptr, ptr %5, align 8 + %93 = icmp eq ptr %92, null + %or.cond14 = select i1 %91, i1 true, i1 %93 + br i1 %or.cond14, label %.loopexit, label %95 + +94: ; preds = %84 %.old12 = load ptr, ptr %5, align 8 %.old13 = icmp eq ptr %.old12, null - br i1 %.old13, label %.loopexit, label %94 - -94: ; preds = %87, %93 - %95 = phi ptr [ %91, %87 ], [ %.old12, %93 ] - %96 = and i32 %62, 256 - %.not170 = icmp eq i32 %96, 0 - br i1 %.not170, label %146, label %97 - -97: ; preds = %94 - %98 = getelementptr inbounds i8, ptr %.1146201, i64 %84 - %99 = icmp ne ptr %98, %95 - %100 = icmp ne i32 %.0189199, 0 - %or.cond17 = or i1 %100, %99 - br i1 %or.cond17, label %.loopexit, label %146 - -101: ; preds = %cli_bcomp_chk_hex.exit - %102 = zext i32 %.0157200 to i64 - %103 = call i64 @cli_strntol(ptr noundef %.1146201, i64 noundef %102, ptr noundef nonnull %5, i32 noundef 10) #14 - %104 = add i64 %103, -9223372036854775807 - %or.cond20 = icmp ult i64 %104, 2 - br i1 %or.cond20, label %105, label %111 - -105: ; preds = %101 - %106 = tail call ptr @__errno_location() #16 - %107 = load i32, ptr %106, align 4 - %108 = icmp eq i32 %107, 34 - %109 = load ptr, ptr %5, align 8 - %110 = icmp eq ptr %109, null - %or.cond23 = select i1 %108, i1 true, i1 %110 - br i1 %or.cond23, label %.loopexit, label %112 - -111: ; preds = %101 + br i1 %.old13, label %.loopexit, label %95 + +95: ; preds = %88, %94 + %96 = phi ptr [ %92, %88 ], [ %.old12, %94 ] + %97 = and i32 %63, 256 + %.not170 = icmp eq i32 %97, 0 + br i1 %.not170, label %147, label %98 + +98: ; preds = %95 + %99 = getelementptr inbounds i8, ptr %.1146201, i64 %85 + %100 = icmp ne ptr %99, %96 + %101 = icmp ne i32 %.0189199, 0 + %or.cond17 = or i1 %101, %100 + br i1 %or.cond17, label %.loopexit, label %147 + +102: ; preds = %cli_bcomp_chk_hex.exit + %103 = zext i32 %.0157200 to i64 + %104 = call i64 @cli_strntol(ptr noundef %.1146201, i64 noundef %103, ptr noundef nonnull %5, i32 noundef 10) #14 + %105 = add i64 %104, -9223372036854775807 + %or.cond20 = icmp ult i64 %105, 2 + br i1 %or.cond20, label %106, label %112 + +106: ; preds = %102 + %107 = tail call ptr @__errno_location() #16 + %108 = load i32, ptr %107, align 4 + %109 = icmp eq i32 %108, 34 + %110 = load ptr, ptr %5, align 8 + %111 = icmp eq ptr %110, null + %or.cond23 = select i1 %109, i1 true, i1 %111 + br i1 %or.cond23, label %.loopexit, label %113 + +112: ; preds = %102 %.old21 = load ptr, ptr %5, align 8 %.old22 = icmp eq ptr %.old21, null - br i1 %.old22, label %.loopexit, label %112 - -112: ; preds = %105, %111 - %113 = phi ptr [ %109, %105 ], [ %.old21, %111 ] - %114 = and i32 %62, 256 - %.not169 = icmp eq i32 %114, 0 - br i1 %.not169, label %146, label %115 - -115: ; preds = %112 - %116 = getelementptr inbounds i8, ptr %.1146201, i64 %102 - %117 = icmp ne ptr %116, %113 - %118 = icmp ne i32 %.0189199, 0 - %or.cond26 = or i1 %118, %117 - br i1 %or.cond26, label %.loopexit, label %146 - -119: ; preds = %cli_bcomp_chk_hex.exit + br i1 %.old22, label %.loopexit, label %113 + +113: ; preds = %106, %112 + %114 = phi ptr [ %110, %106 ], [ %.old21, %112 ] + %115 = and i32 %63, 256 + %.not169 = icmp eq i32 %115, 0 + br i1 %.not169, label %147, label %116 + +116: ; preds = %113 + %117 = getelementptr inbounds i8, ptr %.1146201, i64 %103 + %118 = icmp ne ptr %117, %114 + %119 = icmp ne i32 %.0189199, 0 + %or.cond26 = or i1 %119, %118 + br i1 %or.cond26, label %.loopexit, label %147 + +120: ; preds = %cli_bcomp_chk_hex.exit switch i32 %.0157200, label %.loopexit [ - i32 1, label %120 - i32 2, label %123 - i32 4, label %126 - i32 8, label %129 + i32 1, label %121 + i32 2, label %124 + i32 4, label %127 + i32 8, label %130 ] -120: ; preds = %119 - %121 = load i8, ptr %24, align 1 - %122 = zext i8 %121 to i64 - br label %146 +121: ; preds = %120 + %122 = load i8, ptr %24, align 1 + %123 = zext i8 %122 to i64 + br label %147 -123: ; preds = %119 - %124 = load i16, ptr %24, align 2 - %125 = zext i16 %124 to i64 - br label %146 +124: ; preds = %120 + %125 = load i16, ptr %24, align 2 + %126 = zext i16 %125 to i64 + br label %147 -126: ; preds = %119 - %127 = load i32, ptr %24, align 4 - %128 = zext i32 %127 to i64 - br label %146 +127: ; preds = %120 + %128 = load i32, ptr %24, align 4 + %129 = zext i32 %128 to i64 + br label %147 -129: ; preds = %119 - %130 = load i64, ptr %24, align 8 - br label %146 +130: ; preds = %120 + %131 = load i64, ptr %24, align 8 + br label %147 -131: ; preds = %cli_bcomp_chk_hex.exit +132: ; preds = %cli_bcomp_chk_hex.exit switch i32 %.0157200, label %.loopexit [ - i32 1, label %132 - i32 2, label %135 - i32 4, label %138 - i32 8, label %142 + i32 1, label %133 + i32 2, label %136 + i32 4, label %139 + i32 8, label %143 ] -132: ; preds = %131 - %133 = load i8, ptr %24, align 1 - %134 = zext i8 %133 to i64 - br label %146 - -135: ; preds = %131 - %136 = load i16, ptr %24, align 2 - %rev = tail call i16 @llvm.bswap.i16(i16 %136) - %137 = zext i16 %rev to i64 - br label %146 - -138: ; preds = %131 - %139 = load i32, ptr %24, align 4 - %140 = tail call i32 @llvm.bswap.i32(i32 %139) - %141 = zext i32 %140 to i64 - br label %146 - -142: ; preds = %131 - %143 = load i64, ptr %24, align 8 - %144 = tail call i64 @llvm.bswap.i64(i64 %143) - br label %146 - -145: ; preds = %cli_bcomp_chk_hex.exit +133: ; preds = %132 + %134 = load i8, ptr %24, align 1 + %135 = zext i8 %134 to i64 + br label %147 + +136: ; preds = %132 + %137 = load i16, ptr %24, align 2 + %rev = tail call i16 @llvm.bswap.i16(i16 %137) + %138 = zext i16 %rev to i64 + br label %147 + +139: ; preds = %132 + %140 = load i32, ptr %24, align 4 + %141 = tail call i32 @llvm.bswap.i32(i32 %140) + %142 = zext i32 %141 to i64 + br label %147 + +143: ; preds = %132 + %144 = load i64, ptr %24, align 8 + %145 = tail call i64 @llvm.bswap.i64(i64 %144) + br label %147 + +146: ; preds = %cli_bcomp_chk_hex.exit br label %.loopexit -146: ; preds = %132, %135, %138, %142, %120, %123, %126, %129, %112, %115, %94, %97, %75, %78 - %.0150 = phi i64 [ 0, %142 ], [ 0, %138 ], [ 0, %135 ], [ 0, %132 ], [ 0, %129 ], [ 0, %126 ], [ 0, %123 ], [ 0, %120 ], [ %103, %115 ], [ %103, %112 ], [ %85, %97 ], [ %85, %94 ], [ %67, %78 ], [ %67, %75 ] - %.0149 = phi i64 [ %144, %142 ], [ %141, %138 ], [ %137, %135 ], [ %134, %132 ], [ %130, %129 ], [ %128, %126 ], [ %125, %123 ], [ %122, %120 ], [ 0, %115 ], [ 0, %112 ], [ 0, %97 ], [ 0, %94 ], [ 0, %78 ], [ 0, %75 ] - %147 = getelementptr inbounds i8, ptr %3, i64 48 - %148 = load i32, ptr %147, align 8 - %.not277 = icmp eq i32 %148, 0 +147: ; preds = %133, %136, %139, %143, %121, %124, %127, %130, %113, %116, %95, %98, %76, %79 + %.0150 = phi i64 [ 0, %143 ], [ 0, %139 ], [ 0, %136 ], [ 0, %133 ], [ 0, %130 ], [ 0, %127 ], [ 0, %124 ], [ 0, %121 ], [ %104, %116 ], [ %104, %113 ], [ %86, %98 ], [ %86, %95 ], [ %68, %79 ], [ %68, %76 ] + %.0149 = phi i64 [ %145, %143 ], [ %142, %139 ], [ %138, %136 ], [ %135, %133 ], [ %131, %130 ], [ %129, %127 ], [ %126, %124 ], [ %123, %121 ], [ 0, %116 ], [ 0, %113 ], [ 0, %98 ], [ 0, %95 ], [ 0, %79 ], [ 0, %76 ] + %148 = getelementptr inbounds i8, ptr %3, i64 48 + %149 = load i32, ptr %148, align 8 + %.not277 = icmp eq i32 %149, 0 br i1 %.not277, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %146 - %149 = getelementptr inbounds i8, ptr %3, i64 40 - %150 = load ptr, ptr %149, align 8 - %.not173 = icmp eq ptr %150, null +.lr.ph: ; preds = %147 + %150 = getelementptr inbounds i8, ptr %3, i64 40 + %151 = load ptr, ptr %150, align 8 + %.not173 = icmp eq ptr %151, null br i1 %.not173, label %.loopexit, label %.lr.ph.split .lr.ph.split: ; preds = %.lr.ph - %151 = and i32 %62, 4 - %.not176 = icmp eq i32 %151, 0 - %wide.trip.count308 = zext i32 %148 to i64 + %152 = and i32 %63, 4 + %.not176 = icmp eq i32 %152, 0 + %wide.trip.count308 = zext i32 %149 to i64 br i1 %.not176, label %.lr.ph.split.split.us, label %.lr.ph.split.split.split.split -.lr.ph.split.split.us: ; preds = %.lr.ph.split, %168 - %indvars.iv305 = phi i64 [ %indvars.iv.next306, %168 ], [ 0, %.lr.ph.split ] - %.1153222.us231 = phi i32 [ %.3.us233, %168 ], [ 0, %.lr.ph.split ] - %152 = getelementptr inbounds ptr, ptr %150, i64 %indvars.iv305 - %153 = load ptr, ptr %152, align 8 - %.not174.us = icmp eq ptr %153, null - br i1 %.not174.us, label %168, label %154 - -154: ; preds = %.lr.ph.split.split.us - %155 = load i8, ptr %153, align 8 - switch i8 %155, label %.loopexit [ - i8 62, label %164 - i8 60, label %160 - i8 61, label %156 +.lr.ph.split.split.us: ; preds = %.lr.ph.split, %169 + %indvars.iv305 = phi i64 [ %indvars.iv.next306, %169 ], [ 0, %.lr.ph.split ] + %.1153222.us231 = phi i32 [ %.3.us233, %169 ], [ 0, %.lr.ph.split ] + %153 = getelementptr inbounds ptr, ptr %151, i64 %indvars.iv305 + %154 = load ptr, ptr %153, align 8 + %.not174.us = icmp eq ptr %154, null + br i1 %.not174.us, label %169, label %155 + +155: ; preds = %.lr.ph.split.split.us + %156 = load i8, ptr %154, align 8 + switch i8 %156, label %.loopexit [ + i8 62, label %165 + i8 60, label %161 + i8 61, label %157 ] -156: ; preds = %154 - %157 = getelementptr inbounds i8, ptr %153, i64 8 - %158 = load i64, ptr %157, align 8 - %159 = icmp eq i64 %.0150, %158 - br i1 %159, label %168, label %.loopexit - -160: ; preds = %154 - %161 = getelementptr inbounds i8, ptr %153, i64 8 - %162 = load i64, ptr %161, align 8 - %163 = icmp slt i64 %.0150, %162 - br i1 %163, label %168, label %.loopexit - -164: ; preds = %154 - %165 = getelementptr inbounds i8, ptr %153, i64 8 - %166 = load i64, ptr %165, align 8 - %167 = icmp sgt i64 %.0150, %166 - br i1 %167, label %168, label %.loopexit - -168: ; preds = %164, %160, %156, %.lr.ph.split.split.us - %.3.us233 = phi i32 [ 1, %156 ], [ %.1153222.us231, %.lr.ph.split.split.us ], [ 1, %164 ], [ 1, %160 ] +157: ; preds = %155 + %158 = getelementptr inbounds i8, ptr %154, i64 8 + %159 = load i64, ptr %158, align 8 + %160 = icmp eq i64 %.0150, %159 + br i1 %160, label %169, label %.loopexit + +161: ; preds = %155 + %162 = getelementptr inbounds i8, ptr %154, i64 8 + %163 = load i64, ptr %162, align 8 + %164 = icmp slt i64 %.0150, %163 + br i1 %164, label %169, label %.loopexit + +165: ; preds = %155 + %166 = getelementptr inbounds i8, ptr %154, i64 8 + %167 = load i64, ptr %166, align 8 + %168 = icmp sgt i64 %.0150, %167 + br i1 %168, label %169, label %.loopexit + +169: ; preds = %165, %161, %157, %.lr.ph.split.split.us + %.3.us233 = phi i32 [ 1, %157 ], [ %.1153222.us231, %.lr.ph.split.split.us ], [ 1, %165 ], [ 1, %161 ] %indvars.iv.next306 = add nuw nsw i64 %indvars.iv305, 1 %exitcond309.not = icmp eq i64 %indvars.iv.next306, %wide.trip.count308 br i1 %exitcond309.not, label %.loopexit, label %.lr.ph.split.split.us -.lr.ph.split.split.split.split: ; preds = %.lr.ph.split, %185 - %indvars.iv = phi i64 [ %indvars.iv.next, %185 ], [ 0, %.lr.ph.split ] - %.1153222 = phi i32 [ %.3, %185 ], [ 0, %.lr.ph.split ] - %169 = getelementptr inbounds ptr, ptr %150, i64 %indvars.iv - %170 = load ptr, ptr %169, align 8 - %.not174 = icmp eq ptr %170, null - br i1 %.not174, label %185, label %171 - -171: ; preds = %.lr.ph.split.split.split.split - %172 = load i8, ptr %170, align 8 - switch i8 %172, label %.loopexit [ - i8 62, label %173 - i8 60, label %177 - i8 61, label %181 +.lr.ph.split.split.split.split: ; preds = %.lr.ph.split, %186 + %indvars.iv = phi i64 [ %indvars.iv.next, %186 ], [ 0, %.lr.ph.split ] + %.1153222 = phi i32 [ %.3, %186 ], [ 0, %.lr.ph.split ] + %170 = getelementptr inbounds ptr, ptr %151, i64 %indvars.iv + %171 = load ptr, ptr %170, align 8 + %.not174 = icmp eq ptr %171, null + br i1 %.not174, label %186, label %172 + +172: ; preds = %.lr.ph.split.split.split.split + %173 = load i8, ptr %171, align 8 + switch i8 %173, label %.loopexit [ + i8 62, label %174 + i8 60, label %178 + i8 61, label %182 ] -173: ; preds = %171 - %174 = getelementptr inbounds i8, ptr %170, i64 8 - %175 = load i64, ptr %174, align 8 - %176 = icmp sgt i64 %.0149, %175 - br i1 %176, label %185, label %.loopexit - -177: ; preds = %171 - %178 = getelementptr inbounds i8, ptr %170, i64 8 - %179 = load i64, ptr %178, align 8 - %180 = icmp slt i64 %.0149, %179 - br i1 %180, label %185, label %.loopexit - -181: ; preds = %171 - %182 = getelementptr inbounds i8, ptr %170, i64 8 - %183 = load i64, ptr %182, align 8 - %184 = icmp eq i64 %.0149, %183 - br i1 %184, label %185, label %.loopexit - -185: ; preds = %177, %173, %.lr.ph.split.split.split.split, %181 - %.3 = phi i32 [ 1, %181 ], [ %.1153222, %.lr.ph.split.split.split.split ], [ 1, %173 ], [ 1, %177 ] +174: ; preds = %172 + %175 = getelementptr inbounds i8, ptr %171, i64 8 + %176 = load i64, ptr %175, align 8 + %177 = icmp sgt i64 %.0149, %176 + br i1 %177, label %186, label %.loopexit + +178: ; preds = %172 + %179 = getelementptr inbounds i8, ptr %171, i64 8 + %180 = load i64, ptr %179, align 8 + %181 = icmp slt i64 %.0149, %180 + br i1 %181, label %186, label %.loopexit + +182: ; preds = %172 + %183 = getelementptr inbounds i8, ptr %171, i64 8 + %184 = load i64, ptr %183, align 8 + %185 = icmp eq i64 %.0149, %184 + br i1 %185, label %186, label %.loopexit + +186: ; preds = %178, %174, %.lr.ph.split.split.split.split, %182 + %.3 = phi i32 [ 1, %182 ], [ %.1153222, %.lr.ph.split.split.split.split ], [ 1, %174 ], [ 1, %178 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count308 br i1 %exitcond.not, label %.loopexit, label %.lr.ph.split.split.split.split -.loopexit: ; preds = %181, %185, %171, %173, %177, %156, %168, %154, %164, %160, %.lr.ph, %146, %131, %119, %115, %105, %111, %cli_bcomp_chk_hex.exit, %97, %87, %93, %78, %69, %74, %145 - %.0152 = phi i32 [ 2, %145 ], [ 0, %105 ], [ 0, %115 ], [ 0, %111 ], [ 0, %cli_bcomp_chk_hex.exit ], [ 0, %87 ], [ 0, %97 ], [ 0, %93 ], [ 0, %69 ], [ 0, %78 ], [ 0, %74 ], [ 3, %119 ], [ 3, %131 ], [ 0, %146 ], [ 0, %.lr.ph ], [ 0, %156 ], [ %.3.us233, %168 ], [ 2, %154 ], [ 0, %164 ], [ 0, %160 ], [ 0, %181 ], [ %.3, %185 ], [ 2, %171 ], [ 0, %173 ], [ 0, %177 ] +.loopexit: ; preds = %182, %186, %172, %174, %178, %157, %169, %155, %165, %161, %.lr.ph, %147, %132, %120, %116, %106, %112, %cli_bcomp_chk_hex.exit, %98, %88, %94, %79, %70, %75, %146 + %.0152 = phi i32 [ 2, %146 ], [ 0, %106 ], [ 0, %116 ], [ 0, %112 ], [ 0, %cli_bcomp_chk_hex.exit ], [ 0, %88 ], [ 0, %98 ], [ 0, %94 ], [ 0, %70 ], [ 0, %79 ], [ 0, %75 ], [ 3, %120 ], [ 3, %132 ], [ 0, %147 ], [ 0, %.lr.ph ], [ 0, %157 ], [ %.3.us233, %169 ], [ 2, %155 ], [ 0, %165 ], [ 0, %161 ], [ 0, %182 ], [ %.3, %186 ], [ 2, %172 ], [ 0, %174 ], [ 0, %178 ] %.not178 = icmp eq ptr %.1, null - br i1 %.not178, label %.thread202, label %186 + br i1 %.not178, label %.thread202, label %187 -186: ; preds = %.loopexit +187: ; preds = %.loopexit call void @free(ptr noundef nonnull %.1) #14 br label %.thread202 -.thread202: ; preds = %186, %.loopexit +.thread202: ; preds = %187, %.loopexit %.not179 = icmp eq ptr %.1146201, null - br i1 %.not179, label %.thread202.thread, label %187 + br i1 %.not179, label %.thread202.thread, label %188 -187: ; preds = %.thread202.thread213, %.thread202 +188: ; preds = %.thread202.thread213, %.thread202 %.0152207218 = phi i32 [ 20, %.thread202.thread213 ], [ %.0152, %.thread202 ] %.0145208217 = phi ptr [ %40, %.thread202.thread213 ], [ %.1146201, %.thread202 ] call void @free(ptr noundef nonnull %.0145208217) #14 br label %.thread202.thread -.thread202.thread: ; preds = %42, %8, %4, %187, %.thread202 - %.0152207212 = phi i32 [ %.0152207218, %187 ], [ %.0152, %.thread202 ], [ 20, %42 ], [ 0, %8 ], [ 2, %4 ] +.thread202.thread: ; preds = %42, %8, %4, %188, %.thread202 + %.0152207212 = phi i32 [ %.0152207218, %188 ], [ %.0152, %.thread202 ], [ 20, %42 ], [ 0, %8 ], [ 2, %4 ] ret i32 %.0152207212 } diff --git a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll index b67b8c7378b..5b78fe980b4 100644 --- a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll +++ b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll @@ -10022,7 +10022,7 @@ define internal void @_ZN12clap_builder6output13help_template15option_sort_key17 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) %8 = add nsw i32 %6, -65 %.018 = icmp ult i32 %8, 26 - %9 = xor i32 %6, 32 + %9 = or disjoint i32 %6, 32 %.0 = select i1 %.018, i32 %9, i32 %6 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.040) store i32 0, ptr %.sroa.040, align 4 diff --git a/bench/delta-rs/optimized/3s3f23ex69abms10.ll b/bench/delta-rs/optimized/3s3f23ex69abms10.ll index 39a01084d96..24df502f30e 100644 --- a/bench/delta-rs/optimized/3s3f23ex69abms10.ll +++ b/bench/delta-rs/optimized/3s3f23ex69abms10.ll @@ -9366,7 +9366,7 @@ define internal fastcc void @"_ZN4core3ptr101drop_in_place$LT$datafusion..execut %cond = icmp eq i8 %4, 3 br i1 %cond, label %5, label %common.ret -common.ret: ; preds = %"_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i", %584, %153, %150, %5, %1 +common.ret: ; preds = %"_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i", %583, %153, %150, %5, %1 ret void 5: ; preds = %1 @@ -9723,7 +9723,7 @@ common.ret: ; preds = %"_ZN4core3ptr115dro %148 = getelementptr inbounds i8, ptr %0, i64 3288 store i8 0, ptr %148, align 8 invoke void @"_ZN4core3ptr65drop_in_place$LT$datafusion..execution..context..SessionState$GT$17h94e4221b3ccd4f11E"(ptr noalias noundef nonnull align 8 dereferenceable(1088) %6) #34 - to label %common.resume.i unwind label %597 + to label %common.resume.i unwind label %596 "_ZN4core3ptr113drop_in_place$LT$datafusion..execution..context..SessionState..statement_to_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8156e7ffd516d370E.exit.i.i": ; preds = %140, %15, %12 %149 = getelementptr inbounds i8, ptr %0, i64 3288 @@ -10753,7 +10753,7 @@ common.ret.sink.split.i28.i.i: ; preds = %479, %464 cleanup br label %.body8.i.i -539: ; preds = %596, %587, %.body.i7.i +539: ; preds = %595, %586, %.body.i7.i %540 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35 @@ -10794,16 +10794,16 @@ common.ret.sink.split.i28.i.i: ; preds = %479, %464 %554 = load i64, ptr %553, align 16, !range !2194, !noundef !5 switch i64 %554, label %559 [ i64 14, label %560 - i64 22, label %584 + i64 22, label %583 ] .body8.i.i: ; preds = %557, %551, %549, %547, %545, %543, %541, %537, %.body.i7.i, %485, %472, %458, %445, %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.llvm.4057250340930679409.exit.i.i.i", %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.llvm.4057250340930679409.exit.i.i.i.i", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.4057250340930679409.exit.i.i1.i.i.i.i.i.i2.i", %354, %335, %301, %225 %.pn2.i.i = phi { ptr, i32 } [ %558, %557 ], [ %552, %551 ], [ %546, %545 ], [ %544, %543 ], [ %538, %537 ], [ %eh.lpad-body.i8.i, %.body.i7.i ], [ %542, %541 ], [ %.pn7.i.i.i, %301 ], [ %.pn17.i.i.i, %225 ], [ %336, %335 ], [ %.pn2.i13.i.i, %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.llvm.4057250340930679409.exit.i.i.i" ], [ %358, %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.llvm.4057250340930679409.exit.i.i.i.i" ], [ %358, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.4057250340930679409.exit.i.i1.i.i.i.i.i.i2.i" ], [ %358, %354 ], [ %548, %547 ], [ %446, %458 ], [ %446, %445 ], [ %550, %549 ], [ %473, %485 ], [ %473, %472 ] %555 = getelementptr inbounds i8, ptr %0, i64 1856 %556 = load i64, ptr %555, align 16, !range !2194, !noundef !5 - switch i64 %556, label %587 [ - i64 14, label %588 - i64 22, label %579 + switch i64 %556, label %586 [ + i64 14, label %587 + i64 22, label %578 ] 557: ; preds = %532 @@ -10813,7 +10813,7 @@ common.ret.sink.split.i28.i.i: ; preds = %479, %464 559: ; preds = %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E.llvm.4057250340930679409"(ptr noalias noundef nonnull align 16 dereferenceable(352) %553) - to label %584 unwind label %582 + to label %583 unwind label %581 560: ; preds = %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" %561 = getelementptr inbounds i8, ptr %0, i64 2546 @@ -10821,9 +10821,9 @@ common.ret.sink.split.i28.i.i: ; preds = %479, %464 %563 = trunc nuw i8 %562 to i1 br i1 %563, label %564, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i": ; preds = %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", %575, %571, %564, %560 +"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i": ; preds = %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", %574, %570, %564, %560 store i8 0, ptr %561, align 2 - br label %584 + br label %583 564: ; preds = %560 %565 = getelementptr inbounds i8, ptr %0, i64 1864 @@ -10833,84 +10833,83 @@ common.ret.sink.split.i28.i.i: ; preds = %479, %464 568: ; preds = %564 tail call void @llvm.experimental.noalias.scope.decl(metadata !2195) - %569 = and i64 %566, 1 - %switch.not.not.i.i = icmp eq i64 %569, 0 - %570 = getelementptr inbounds i8, ptr %0, i64 1872 - br i1 %switch.not.not.i.i, label %571, label %575 + %switch.i.i = icmp eq i64 %566, -9223372036854775808 + %569 = getelementptr inbounds i8, ptr %0, i64 1872 + br i1 %switch.i.i, label %570, label %574 -571: ; preds = %568 +570: ; preds = %568 tail call void @llvm.experimental.noalias.scope.decl(metadata !2198) tail call void @llvm.experimental.noalias.scope.decl(metadata !2201) tail call void @llvm.experimental.noalias.scope.decl(metadata !2204) - %572 = load ptr, ptr %570, align 16, !alias.scope !2207, !nonnull !5, !noundef !5 - %573 = atomicrmw sub ptr %572, i64 1 release, align 8, !noalias !2207 - %574 = icmp eq i64 %573, 1 - br i1 %574, label %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" + %571 = load ptr, ptr %569, align 16, !alias.scope !2207, !nonnull !5, !noundef !5 + %572 = atomicrmw sub ptr %571, i64 1 release, align 8, !noalias !2207 + %573 = icmp eq i64 %572, 1 + br i1 %573, label %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -575: ; preds = %568 +574: ; preds = %568 tail call void @llvm.experimental.noalias.scope.decl(metadata !2208) tail call void @llvm.experimental.noalias.scope.decl(metadata !2211) tail call void @llvm.experimental.noalias.scope.decl(metadata !2214) - %576 = load ptr, ptr %570, align 16, !alias.scope !2217, !nonnull !5, !noundef !5 - %577 = atomicrmw sub ptr %576, i64 1 release, align 8, !noalias !2217 - %578 = icmp eq i64 %577, 1 - br i1 %578, label %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" + %575 = load ptr, ptr %569, align 16, !alias.scope !2217, !nonnull !5, !noundef !5 + %576 = atomicrmw sub ptr %575, i64 1 release, align 8, !noalias !2217 + %577 = icmp eq i64 %576, 1 + br i1 %577, label %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i": ; preds = %575, %571 +"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i": ; preds = %574, %570 fence acquire - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %570) - to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" unwind label %582 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %569) + to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" unwind label %581 -common.resume.i: ; preds = %579, %.body.i.i - %common.resume.op.i = phi { ptr, i32 } [ %.pn4.i.i, %579 ], [ %eh.lpad-body.i.i, %.body.i.i ] +common.resume.i: ; preds = %578, %.body.i.i + %common.resume.op.i = phi { ptr, i32 } [ %.pn4.i.i, %578 ], [ %eh.lpad-body.i.i, %.body.i.i ] resume { ptr, i32 } %common.resume.op.i -579: ; preds = %596, %592, %588, %587, %582, %.body8.i.i - %.pn4.i.i = phi { ptr, i32 } [ %583, %582 ], [ %.pn2.i.i, %587 ], [ %.pn2.i.i, %.body8.i.i ], [ %.pn2.i.i, %592 ], [ %.pn2.i.i, %596 ], [ %.pn2.i.i, %588 ] - %580 = getelementptr inbounds i8, ptr %0, i64 2545 - store i8 0, ptr %580, align 1 - %581 = getelementptr inbounds i8, ptr %0, i64 2546 - store i8 0, ptr %581, align 2 +578: ; preds = %595, %591, %587, %586, %581, %.body8.i.i + %.pn4.i.i = phi { ptr, i32 } [ %582, %581 ], [ %.pn2.i.i, %586 ], [ %.pn2.i.i, %.body8.i.i ], [ %.pn2.i.i, %591 ], [ %.pn2.i.i, %595 ], [ %.pn2.i.i, %587 ] + %579 = getelementptr inbounds i8, ptr %0, i64 2545 + store i8 0, ptr %579, align 1 + %580 = getelementptr inbounds i8, ptr %0, i64 2546 + store i8 0, ptr %580, align 2 br label %common.resume.i -582: ; preds = %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", %559 - %583 = landingpad { ptr, i32 } +581: ; preds = %"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E.exit.sink.split.i.i.i", %559 + %582 = landingpad { ptr, i32 } cleanup - br label %579 + br label %578 -584: ; preds = %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i", %559, %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" - %585 = getelementptr inbounds i8, ptr %0, i64 2545 - store i8 0, ptr %585, align 1 - %586 = getelementptr inbounds i8, ptr %0, i64 2546 - store i8 0, ptr %586, align 2 +583: ; preds = %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i", %559, %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" + %584 = getelementptr inbounds i8, ptr %0, i64 2545 + store i8 0, ptr %584, align 1 + %585 = getelementptr inbounds i8, ptr %0, i64 2546 + store i8 0, ptr %585, align 2 br label %common.ret -587: ; preds = %.body8.i.i +586: ; preds = %.body8.i.i invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E.llvm.4057250340930679409"(ptr noalias noundef nonnull align 16 dereferenceable(352) %555) #34 - to label %579 unwind label %539 + to label %578 unwind label %539 -588: ; preds = %.body8.i.i - %589 = getelementptr inbounds i8, ptr %0, i64 2546 - %590 = load i8, ptr %589, align 2, !range !516, !noundef !5 - %591 = trunc nuw i8 %590 to i1 - br i1 %591, label %592, label %579 +587: ; preds = %.body8.i.i + %588 = getelementptr inbounds i8, ptr %0, i64 2546 + %589 = load i8, ptr %588, align 2, !range !516, !noundef !5 + %590 = trunc nuw i8 %589 to i1 + br i1 %590, label %591, label %578 -592: ; preds = %588 - %593 = getelementptr inbounds i8, ptr %0, i64 1864 - %594 = load i64, ptr %593, align 8, !range !2114, !noundef !5 - %595 = icmp sgt i64 %594, -9223372036854775807 - br i1 %595, label %579, label %596 +591: ; preds = %587 + %592 = getelementptr inbounds i8, ptr %0, i64 1864 + %593 = load i64, ptr %592, align 8, !range !2114, !noundef !5 + %594 = icmp sgt i64 %593, -9223372036854775807 + br i1 %594, label %578, label %595 -596: ; preds = %592 - invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %593) #34 - to label %579 unwind label %539 +595: ; preds = %591 + invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %592) #34 + to label %578 unwind label %539 "_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i": ; preds = %"_ZN4core3ptr113drop_in_place$LT$datafusion..execution..context..SessionState..statement_to_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8156e7ffd516d370E.exit.i.i", %9 tail call void @"_ZN4core3ptr65drop_in_place$LT$datafusion..execution..context..SessionState$GT$17h94e4221b3ccd4f11E"(ptr noalias noundef nonnull align 8 dereferenceable(1088) %6) br label %common.ret -597: ; preds = %.body.i.i - %598 = landingpad { ptr, i32 } +596: ; preds = %.body.i.i + %597 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35 unreachable diff --git a/bench/delta-rs/optimized/43y2svfstmvqcl15.ll b/bench/delta-rs/optimized/43y2svfstmvqcl15.ll index 13b7092bfa4..344a8275108 100644 --- a/bench/delta-rs/optimized/43y2svfstmvqcl15.ll +++ b/bench/delta-rs/optimized/43y2svfstmvqcl15.ll @@ -23414,7 +23414,7 @@ define internal fastcc void @"_ZN4core3ptr101drop_in_place$LT$datafusion..execut %cond = icmp eq i8 %11, 3 br i1 %cond, label %12, label %common.ret -common.ret: ; preds = %"_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i", %570, %141, %138, %12, %1 +common.ret: ; preds = %"_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i", %569, %141, %138, %12, %1 ret void 12: ; preds = %1 @@ -23752,7 +23752,7 @@ common.ret: ; preds = %"_ZN4core3ptr115dro %136 = getelementptr inbounds i8, ptr %0, i64 3288 store i8 0, ptr %136, align 8 invoke void @"_ZN4core3ptr65drop_in_place$LT$datafusion..execution..context..SessionState$GT$17h94e4221b3ccd4f11E"(ptr noalias noundef nonnull align 8 dereferenceable(1088) %13) #41 - to label %common.resume.i unwind label %583 + to label %common.resume.i unwind label %582 "_ZN4core3ptr113drop_in_place$LT$datafusion..execution..context..SessionState..statement_to_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8156e7ffd516d370E.exit.i.i": ; preds = %126, %22, %19 %137 = getelementptr inbounds i8, ptr %0, i64 3288 @@ -24777,7 +24777,7 @@ common.ret.sink.split.i33.i.i: ; preds = %491, %468 cleanup br label %.body8.i.i -523: ; preds = %582, %573, %.body.i11.i +523: ; preds = %581, %572, %.body.i11.i %524 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #40 @@ -24823,16 +24823,16 @@ common.ret.sink.split.i33.i.i: ; preds = %491, %468 %540 = load i64, ptr %539, align 16, !range !3161, !noundef !5 switch i64 %540, label %545 [ i64 14, label %546 - i64 22, label %570 + i64 22, label %569 ] .body8.i.i: ; preds = %543, %537, %535, %533, %531, %529, %527, %525, %521, %.body.i11.i, %500, %483, %478, %462, %445, %440, %424, %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.exit.i.i.i", %354, %346, %.body24.i.i.i %.pn2.i.i = phi { ptr, i32 } [ %544, %543 ], [ %532, %531 ], [ %530, %529 ], [ %522, %521 ], [ %eh.lpad-body.i12.i, %.body.i11.i ], [ %526, %525 ], [ %.pn11.i.i5.i, %346 ], [ %.pn19.i.i.i, %.body24.i.i.i ], [ %355, %354 ], [ %528, %527 ], [ %.pn2.i14.i.i, %"_ZN4core3ptr93drop_in_place$LT$alloc..sync..Arc$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$$GT$17h8778c1866f73bb22E.exit.i.i.i" ], [ %534, %533 ], [ %425, %424 ], [ %.pn.i23.i.i, %445 ], [ %.pn.i23.i.i, %440 ], [ %536, %535 ], [ %463, %462 ], [ %.pn.i30.i.i, %483 ], [ %.pn.i30.i.i, %478 ], [ %538, %537 ], [ %501, %500 ] %541 = getelementptr inbounds i8, ptr %0, i64 1856 %542 = load i64, ptr %541, align 16, !range !3161, !noundef !5 - switch i64 %542, label %573 [ - i64 14, label %574 - i64 22, label %565 + switch i64 %542, label %572 [ + i64 14, label %573 + i64 22, label %564 ] 543: ; preds = %515 @@ -24842,7 +24842,7 @@ common.ret.sink.split.i33.i.i: ; preds = %491, %468 545: ; preds = %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" invoke fastcc void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef align 16 dereferenceable(352) %539) - to label %570 unwind label %568 + to label %569 unwind label %567 546: ; preds = %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" %547 = getelementptr inbounds i8, ptr %0, i64 2546 @@ -24850,9 +24850,9 @@ common.ret.sink.split.i33.i.i: ; preds = %491, %468 %549 = trunc nuw i8 %548 to i1 br i1 %549, label %550, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i": ; preds = %.noexc47.invoke.i.i, %561, %557, %550, %546 +"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i": ; preds = %.noexc47.invoke.i.i, %560, %556, %550, %546 store i8 0, ptr %547, align 2 - br label %570 + br label %569 550: ; preds = %546 %551 = getelementptr inbounds i8, ptr %0, i64 1864 @@ -24862,87 +24862,86 @@ common.ret.sink.split.i33.i.i: ; preds = %491, %468 554: ; preds = %550 tail call void @llvm.experimental.noalias.scope.decl(metadata !3163) - %555 = and i64 %552, 1 - %switch.not.not.i.i = icmp eq i64 %555, 0 - %556 = getelementptr inbounds i8, ptr %0, i64 1872 - br i1 %switch.not.not.i.i, label %557, label %561 + %switch.i.i = icmp eq i64 %552, -9223372036854775808 + %555 = getelementptr inbounds i8, ptr %0, i64 1872 + br i1 %switch.i.i, label %556, label %560 -557: ; preds = %554 +556: ; preds = %554 tail call void @llvm.experimental.noalias.scope.decl(metadata !3166) tail call void @llvm.experimental.noalias.scope.decl(metadata !3169) tail call void @llvm.experimental.noalias.scope.decl(metadata !3172) - %558 = load ptr, ptr %556, align 16, !alias.scope !3175, !nonnull !5, !noundef !5 - %559 = atomicrmw sub ptr %558, i64 1 release, align 8, !noalias !3175 - %560 = icmp eq i64 %559, 1 - br i1 %560, label %.invoke.i.i, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" + %557 = load ptr, ptr %555, align 16, !alias.scope !3175, !nonnull !5, !noundef !5 + %558 = atomicrmw sub ptr %557, i64 1 release, align 8, !noalias !3175 + %559 = icmp eq i64 %558, 1 + br i1 %559, label %.invoke.i.i, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -561: ; preds = %554 +560: ; preds = %554 tail call void @llvm.experimental.noalias.scope.decl(metadata !3176) tail call void @llvm.experimental.noalias.scope.decl(metadata !3179) tail call void @llvm.experimental.noalias.scope.decl(metadata !3182) - %562 = load ptr, ptr %556, align 16, !alias.scope !3185, !nonnull !5, !noundef !5 - %563 = atomicrmw sub ptr %562, i64 1 release, align 8, !noalias !3185 - %564 = icmp eq i64 %563, 1 - br i1 %564, label %.invoke.i.i, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" + %561 = load ptr, ptr %555, align 16, !alias.scope !3185, !nonnull !5, !noundef !5 + %562 = atomicrmw sub ptr %561, i64 1 release, align 8, !noalias !3185 + %563 = icmp eq i64 %562, 1 + br i1 %563, label %.invoke.i.i, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" -.invoke.i.i: ; preds = %561, %557 +.invoke.i.i: ; preds = %560, %556 invoke void @_ZN4core4sync6atomic5fence17h58c21b3babc78cabE.llvm.4057250340930679409(i8 noundef 2) - to label %.noexc47.invoke.i.i unwind label %568 + to label %.noexc47.invoke.i.i unwind label %567 .noexc47.invoke.i.i: ; preds = %.invoke.i.i - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %556) - to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" unwind label %568 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %555) + to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i" unwind label %567 -common.resume.i: ; preds = %565, %.body.i.i - %common.resume.op.i = phi { ptr, i32 } [ %.pn4.i.i, %565 ], [ %eh.lpad-body.i.i, %.body.i.i ] +common.resume.i: ; preds = %564, %.body.i.i + %common.resume.op.i = phi { ptr, i32 } [ %.pn4.i.i, %564 ], [ %eh.lpad-body.i.i, %.body.i.i ] resume { ptr, i32 } %common.resume.op.i -565: ; preds = %582, %578, %574, %573, %568, %.body8.i.i - %.pn4.i.i = phi { ptr, i32 } [ %569, %568 ], [ %.pn2.i.i, %573 ], [ %.pn2.i.i, %.body8.i.i ], [ %.pn2.i.i, %578 ], [ %.pn2.i.i, %582 ], [ %.pn2.i.i, %574 ] - %566 = getelementptr inbounds i8, ptr %0, i64 2545 - store i8 0, ptr %566, align 1 - %567 = getelementptr inbounds i8, ptr %0, i64 2546 - store i8 0, ptr %567, align 2 +564: ; preds = %581, %577, %573, %572, %567, %.body8.i.i + %.pn4.i.i = phi { ptr, i32 } [ %568, %567 ], [ %.pn2.i.i, %572 ], [ %.pn2.i.i, %.body8.i.i ], [ %.pn2.i.i, %577 ], [ %.pn2.i.i, %581 ], [ %.pn2.i.i, %573 ] + %565 = getelementptr inbounds i8, ptr %0, i64 2545 + store i8 0, ptr %565, align 1 + %566 = getelementptr inbounds i8, ptr %0, i64 2546 + store i8 0, ptr %566, align 2 br label %common.resume.i -568: ; preds = %.noexc47.invoke.i.i, %.invoke.i.i, %545 - %569 = landingpad { ptr, i32 } +567: ; preds = %.noexc47.invoke.i.i, %.invoke.i.i, %545 + %568 = landingpad { ptr, i32 } cleanup - br label %565 + br label %564 -570: ; preds = %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i", %545, %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" - %571 = getelementptr inbounds i8, ptr %0, i64 2545 - store i8 0, ptr %571, align 1 - %572 = getelementptr inbounds i8, ptr %0, i64 2546 - store i8 0, ptr %572, align 2 +569: ; preds = %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit.i.i", %545, %"_ZN4core3ptr117drop_in_place$LT$datafusion..execution..context..SessionContext..create_memory_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92c1a508ca9114e8E.exit.i.i" + %570 = getelementptr inbounds i8, ptr %0, i64 2545 + store i8 0, ptr %570, align 1 + %571 = getelementptr inbounds i8, ptr %0, i64 2546 + store i8 0, ptr %571, align 2 br label %common.ret -573: ; preds = %.body8.i.i +572: ; preds = %.body8.i.i invoke fastcc void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef align 16 dereferenceable(352) %541) #41 - to label %565 unwind label %523 + to label %564 unwind label %523 -574: ; preds = %.body8.i.i - %575 = getelementptr inbounds i8, ptr %0, i64 2546 - %576 = load i8, ptr %575, align 2, !range !1444, !noundef !5 - %577 = trunc nuw i8 %576 to i1 - br i1 %577, label %578, label %565 +573: ; preds = %.body8.i.i + %574 = getelementptr inbounds i8, ptr %0, i64 2546 + %575 = load i8, ptr %574, align 2, !range !1444, !noundef !5 + %576 = trunc nuw i8 %575 to i1 + br i1 %576, label %577, label %564 -578: ; preds = %574 - %579 = getelementptr inbounds i8, ptr %0, i64 1864 - %580 = load i64, ptr %579, align 8, !range !3162, !noundef !5 - %581 = icmp sgt i64 %580, -9223372036854775807 - br i1 %581, label %565, label %582 +577: ; preds = %573 + %578 = getelementptr inbounds i8, ptr %0, i64 1864 + %579 = load i64, ptr %578, align 8, !range !3162, !noundef !5 + %580 = icmp sgt i64 %579, -9223372036854775807 + br i1 %580, label %564, label %581 -582: ; preds = %578 - invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %579) #41 - to label %565 unwind label %523 +581: ; preds = %577 + invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %578) #41 + to label %564 unwind label %523 "_ZN4core3ptr115drop_in_place$LT$datafusion..execution..context..SessionState..create_logical_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17hd800162635687310E.exit.i": ; preds = %"_ZN4core3ptr113drop_in_place$LT$datafusion..execution..context..SessionState..statement_to_plan..$u7b$$u7b$closure$u7d$$u7d$$GT$17h8156e7ffd516d370E.exit.i.i", %16 tail call void @"_ZN4core3ptr65drop_in_place$LT$datafusion..execution..context..SessionState$GT$17h94e4221b3ccd4f11E"(ptr noalias noundef nonnull align 8 dereferenceable(1088) %13) br label %common.ret -583: ; preds = %.body.i.i - %584 = landingpad { ptr, i32 } +582: ; preds = %.body.i.i + %583 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #40 unreachable diff --git a/bench/delta-rs/optimized/4zvphat0q9a964bz.ll b/bench/delta-rs/optimized/4zvphat0q9a964bz.ll index 078c2b0f67e..1fd51616bd0 100644 --- a/bench/delta-rs/optimized/4zvphat0q9a964bz.ll +++ b/bench/delta-rs/optimized/4zvphat0q9a964bz.ll @@ -4734,18 +4734,18 @@ default.unreachable440: ; preds = %2910, %2661, %2529, invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %236) #47 to label %303 unwind label %306 -306: ; preds = %3051, %2396, %2213, %671, %3064, %3055, %.body229, %.body206, %.body165, %.body91, %.body64, %304, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" +306: ; preds = %3050, %2396, %2213, %671, %3063, %3054, %.body229, %.body206, %.body165, %.body91, %.body64, %304, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" %307 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #46 unreachable -"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256": ; preds = %.body229, %2658, %.body206, %2526, %.body165, %2396, %.body143.thread, %.body143, %2213, %.body116.thread, %.body116, %1792, %.body91, %1455, %.body64, %3051, %.body245.thread, %.body245, %669, %303, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" - %.pn38.pn = phi { ptr, i32 } [ %670, %669 ], [ %.pn34, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" ], [ %305, %303 ], [ %.pn13.i, %.body245.thread ], [ %3015, %.body245 ], [ %3015, %3051 ], [ %1456, %1455 ], [ %.pn26, %.body64 ], [ %1793, %1792 ], [ %.pn22, %.body91 ], [ %.pn73.i, %.body116.thread ], [ %2207, %.body116 ], [ %2207, %2213 ], [ %.pn33.i124, %.body143.thread ], [ %2390, %.body143 ], [ %2390, %2396 ], [ %2527, %2526 ], [ %.pn10, %.body165 ], [ %2659, %2658 ], [ %.pn6, %.body206 ], [ %.pn, %.body229 ] +"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256": ; preds = %.body229, %2658, %.body206, %2526, %.body165, %2396, %.body143.thread, %.body143, %2213, %.body116.thread, %.body116, %1792, %.body91, %1455, %.body64, %3050, %.body245.thread, %.body245, %669, %303, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" + %.pn38.pn = phi { ptr, i32 } [ %670, %669 ], [ %.pn34, %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_external_table..$u7b$$u7b$closure$u7d$$u7d$$GT$17h92a09b2bb6faa1bcE.exit49" ], [ %305, %303 ], [ %.pn13.i, %.body245.thread ], [ %3015, %.body245 ], [ %3015, %3050 ], [ %1456, %1455 ], [ %.pn26, %.body64 ], [ %1793, %1792 ], [ %.pn22, %.body91 ], [ %.pn73.i, %.body116.thread ], [ %2207, %.body116 ], [ %2207, %2213 ], [ %.pn33.i124, %.body143.thread ], [ %2390, %.body143 ], [ %2390, %2396 ], [ %2527, %2526 ], [ %.pn10, %.body165 ], [ %2659, %2658 ], [ %.pn6, %.body206 ], [ %.pn, %.body229 ] %308 = getelementptr inbounds i8, ptr %1, i64 1041 %309 = load i8, ptr %308, align 1, !range !51, !noundef !4 %310 = trunc nuw i8 %309 to i1 - br i1 %310, label %3052, label %3046 + br i1 %310, label %3051, label %3045 311: ; preds = %3 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @str.4, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fa082ecd109e1e9e48d31b7779f57bae.101) #45 @@ -12969,7 +12969,7 @@ _ZN4core3mem4drop17h1a749eda1de4c2e7E.exit.i: ; preds = %2941, %2939 %.pr415 = load i8, ptr %2912, align 16 call void @llvm.lifetime.end.p0(i64 1432, ptr nonnull %.sroa.7370) %3016 = icmp eq i8 %.pr415, 0 - br i1 %3016, label %3051, label %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" + br i1 %3016, label %3050, label %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" 3017: ; preds = %.invoke.i243, %3003, %2975 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12), !noalias !1891 @@ -13010,7 +13010,7 @@ _ZN4core3mem4drop17h1a749eda1de4c2e7E.exit.i: ; preds = %2941, %2939 3026: ; preds = %3023 invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %3024) - to label %3021 unwind label %3049 + to label %3021 unwind label %3048 3027: ; preds = %3023 %3028 = getelementptr inbounds i8, ptr %1, i64 1042 @@ -13018,7 +13018,7 @@ _ZN4core3mem4drop17h1a749eda1de4c2e7E.exit.i: ; preds = %2941, %2939 %3030 = trunc nuw i8 %3029 to i1 br i1 %3030, label %3031, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit": ; preds = %.noexc253.invoke, %3042, %3038, %3031, %3027 +"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit": ; preds = %.noexc253.invoke, %3041, %3037, %3031, %3027 store i8 0, ptr %3028, align 2 br label %3021 @@ -13030,82 +13030,81 @@ _ZN4core3mem4drop17h1a749eda1de4c2e7E.exit.i: ; preds = %2941, %2939 3035: ; preds = %3031 call void @llvm.experimental.noalias.scope.decl(metadata !1965) - %3036 = and i64 %3033, 1 - %switch.not.not = icmp eq i64 %3036, 0 - %3037 = getelementptr inbounds i8, ptr %1, i64 368 - br i1 %switch.not.not, label %3038, label %3042 + %switch = icmp eq i64 %3033, -9223372036854775808 + %3036 = getelementptr inbounds i8, ptr %1, i64 368 + br i1 %switch, label %3037, label %3041 -3038: ; preds = %3035 +3037: ; preds = %3035 call void @llvm.experimental.noalias.scope.decl(metadata !1968) call void @llvm.experimental.noalias.scope.decl(metadata !1971) call void @llvm.experimental.noalias.scope.decl(metadata !1974) - %3039 = load ptr, ptr %3037, align 16, !alias.scope !1977, !nonnull !4, !noundef !4 - %3040 = atomicrmw sub ptr %3039, i64 1 release, align 8, !noalias !1977 - %3041 = icmp eq i64 %3040, 1 - br i1 %3041, label %.invoke466, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" + %3038 = load ptr, ptr %3036, align 16, !alias.scope !1977, !nonnull !4, !noundef !4 + %3039 = atomicrmw sub ptr %3038, i64 1 release, align 8, !noalias !1977 + %3040 = icmp eq i64 %3039, 1 + br i1 %3040, label %.invoke466, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -3042: ; preds = %3035 +3041: ; preds = %3035 call void @llvm.experimental.noalias.scope.decl(metadata !1978) call void @llvm.experimental.noalias.scope.decl(metadata !1981) call void @llvm.experimental.noalias.scope.decl(metadata !1984) - %3043 = load ptr, ptr %3037, align 16, !alias.scope !1987, !nonnull !4, !noundef !4 - %3044 = atomicrmw sub ptr %3043, i64 1 release, align 8, !noalias !1987 - %3045 = icmp eq i64 %3044, 1 - br i1 %3045, label %.invoke466, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" + %3042 = load ptr, ptr %3036, align 16, !alias.scope !1987, !nonnull !4, !noundef !4 + %3043 = atomicrmw sub ptr %3042, i64 1 release, align 8, !noalias !1987 + %3044 = icmp eq i64 %3043, 1 + br i1 %3044, label %.invoke466, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -.invoke466: ; preds = %3042, %3038 +.invoke466: ; preds = %3041, %3037 invoke void @_ZN4core4sync6atomic5fence17h58c21b3babc78cabE.llvm.4057250340930679409(i8 noundef 2) - to label %.noexc253.invoke unwind label %3049 + to label %.noexc253.invoke unwind label %3048 .noexc253.invoke: ; preds = %.invoke466 - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %3037) - to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" unwind label %3049 - -3046: ; preds = %3064, %3060, %3056, %3055, %3052, %3049, %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" - %.pn43 = phi { ptr, i32 } [ %3050, %3049 ], [ %.pn38.pn, %3055 ], [ %.pn38.pn, %3052 ], [ %.pn38.pn, %3060 ], [ %.pn38.pn, %3064 ], [ %.pn38.pn, %3056 ], [ %.pn38.pn, %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" ] - %3047 = getelementptr inbounds i8, ptr %1, i64 1041 - store i8 0, ptr %3047, align 1 - %3048 = getelementptr inbounds i8, ptr %1, i64 1042 - store i8 0, ptr %3048, align 2 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %3036) + to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" unwind label %3048 + +3045: ; preds = %3063, %3059, %3055, %3054, %3051, %3048, %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" + %.pn43 = phi { ptr, i32 } [ %3049, %3048 ], [ %.pn38.pn, %3054 ], [ %.pn38.pn, %3051 ], [ %.pn38.pn, %3059 ], [ %.pn38.pn, %3063 ], [ %.pn38.pn, %3055 ], [ %.pn38.pn, %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" ] + %3046 = getelementptr inbounds i8, ptr %1, i64 1041 + store i8 0, ptr %3046, align 1 + %3047 = getelementptr inbounds i8, ptr %1, i64 1042 + store i8 0, ptr %3047, align 2 store i8 2, ptr %237, align 16 resume { ptr, i32 } %.pn43 -3049: ; preds = %.invoke466, %.noexc253.invoke, %3026 - %3050 = landingpad { ptr, i32 } +3048: ; preds = %.invoke466, %.noexc253.invoke, %3026 + %3049 = landingpad { ptr, i32 } cleanup - br label %3046 + br label %3045 -3051: ; preds = %.body245 +3050: ; preds = %.body245 invoke void @"_ZN4core3ptr74drop_in_place$LT$datafusion_expr..logical_plan..statement..SetVariable$GT$17h21489c94e320efa4E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %2911) to label %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" unwind label %306 -3052: ; preds = %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" - %3053 = getelementptr inbounds i8, ptr %1, i64 352 - %3054 = load i64, ptr %3053, align 16, !range !340, !noundef !4 - switch i64 %3054, label %3055 [ - i64 14, label %3056 - i64 22, label %3046 +3051: ; preds = %"_ZN4core3ptr110drop_in_place$LT$datafusion..execution..context..SessionContext..set_variable..$u7b$$u7b$closure$u7d$$u7d$$GT$17hb4135c74b1de8329E.exit256" + %3052 = getelementptr inbounds i8, ptr %1, i64 352 + %3053 = load i64, ptr %3052, align 16, !range !340, !noundef !4 + switch i64 %3053, label %3054 [ + i64 14, label %3055 + i64 22, label %3045 ] -3055: ; preds = %3052 - invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %3053) #47 - to label %3046 unwind label %306 +3054: ; preds = %3051 + invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %3052) #47 + to label %3045 unwind label %306 -3056: ; preds = %3052 - %3057 = getelementptr inbounds i8, ptr %1, i64 1042 - %3058 = load i8, ptr %3057, align 2, !range !51, !noundef !4 - %3059 = trunc nuw i8 %3058 to i1 - br i1 %3059, label %3060, label %3046 +3055: ; preds = %3051 + %3056 = getelementptr inbounds i8, ptr %1, i64 1042 + %3057 = load i8, ptr %3056, align 2, !range !51, !noundef !4 + %3058 = trunc nuw i8 %3057 to i1 + br i1 %3058, label %3059, label %3045 -3060: ; preds = %3056 - %3061 = getelementptr inbounds i8, ptr %1, i64 360 - %3062 = load i64, ptr %3061, align 8, !range !341, !noundef !4 - %3063 = icmp sgt i64 %3062, -9223372036854775807 - br i1 %3063, label %3046, label %3064 +3059: ; preds = %3055 + %3060 = getelementptr inbounds i8, ptr %1, i64 360 + %3061 = load i64, ptr %3060, align 8, !range !341, !noundef !4 + %3062 = icmp sgt i64 %3061, -9223372036854775807 + br i1 %3062, label %3045, label %3063 -3064: ; preds = %3060 - invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %3061) #47 - to label %3046 unwind label %306 +3063: ; preds = %3059 + invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %3060) #47 + to label %3045 unwind label %306 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -36642,7 +36641,7 @@ define internal fastcc void @"_ZN4core3ptr118drop_in_place$LT$datafusion..execut i8 11, label %47 ] -common.ret: ; preds = %4, %1, %106 +common.ret: ; preds = %4, %1, %105 ret void 4: ; preds = %1 @@ -36771,7 +36770,7 @@ common.ret: ; preds = %4, %1, %106 cleanup br label %.body -59: ; preds = %118, %109, %53 +59: ; preds = %117, %108, %53 %60 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #46 @@ -36817,16 +36816,16 @@ common.ret: ; preds = %4, %1, %106 %76 = load i64, ptr %75, align 16, !range !340, !noundef !4 switch i64 %76, label %81 [ i64 14, label %82 - i64 22, label %106 + i64 22, label %105 ] .body: ; preds = %73, %36, %53, %57, %71, %69, %67, %65, %63, %61, %79 %.pn2 = phi { ptr, i32 } [ %80, %79 ], [ %72, %71 ], [ %70, %69 ], [ %68, %67 ], [ %66, %65 ], [ %64, %63 ], [ %62, %61 ], [ %58, %57 ], [ %54, %53 ], [ %74, %73 ], [ %37, %36 ] %77 = getelementptr inbounds i8, ptr %0, i64 352 %78 = load i64, ptr %77, align 16, !range !340, !noundef !4 - switch i64 %78, label %109 [ - i64 14, label %110 - i64 22, label %101 + switch i64 %78, label %108 [ + i64 14, label %109 + i64 22, label %100 ] 79: ; preds = %51 @@ -36836,7 +36835,7 @@ common.ret: ; preds = %4, %1, %106 81: ; preds = %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_catalog_schema..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7c41ae50bcaba55fE.exit" invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %75) - to label %106 unwind label %104 + to label %105 unwind label %103 82: ; preds = %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_catalog_schema..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7c41ae50bcaba55fE.exit" %83 = getelementptr inbounds i8, ptr %0, i64 1042 @@ -36844,9 +36843,9 @@ common.ret: ; preds = %4, %1, %106 %85 = trunc nuw i8 %84 to i1 br i1 %85, label %86, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit": ; preds = %.noexc15.invoke, %97, %93, %86, %82 +"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit": ; preds = %.noexc15.invoke, %96, %92, %86, %82 store i8 0, ptr %83, align 2 - br label %106 + br label %105 86: ; preds = %82 %87 = getelementptr inbounds i8, ptr %0, i64 360 @@ -36856,76 +36855,75 @@ common.ret: ; preds = %4, %1, %106 90: ; preds = %86 tail call void @llvm.experimental.noalias.scope.decl(metadata !5046) - %91 = and i64 %88, 1 - %switch.not.not = icmp eq i64 %91, 0 - %92 = getelementptr inbounds i8, ptr %0, i64 368 - br i1 %switch.not.not, label %93, label %97 + %switch = icmp eq i64 %88, -9223372036854775808 + %91 = getelementptr inbounds i8, ptr %0, i64 368 + br i1 %switch, label %92, label %96 -93: ; preds = %90 +92: ; preds = %90 tail call void @llvm.experimental.noalias.scope.decl(metadata !5049) tail call void @llvm.experimental.noalias.scope.decl(metadata !5052) tail call void @llvm.experimental.noalias.scope.decl(metadata !5055) - %94 = load ptr, ptr %92, align 16, !alias.scope !5058, !nonnull !4, !noundef !4 - %95 = atomicrmw sub ptr %94, i64 1 release, align 8, !noalias !5058 - %96 = icmp eq i64 %95, 1 - br i1 %96, label %.invoke, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" + %93 = load ptr, ptr %91, align 16, !alias.scope !5058, !nonnull !4, !noundef !4 + %94 = atomicrmw sub ptr %93, i64 1 release, align 8, !noalias !5058 + %95 = icmp eq i64 %94, 1 + br i1 %95, label %.invoke, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -97: ; preds = %90 +96: ; preds = %90 tail call void @llvm.experimental.noalias.scope.decl(metadata !5059) tail call void @llvm.experimental.noalias.scope.decl(metadata !5062) tail call void @llvm.experimental.noalias.scope.decl(metadata !5065) - %98 = load ptr, ptr %92, align 16, !alias.scope !5068, !nonnull !4, !noundef !4 - %99 = atomicrmw sub ptr %98, i64 1 release, align 8, !noalias !5068 - %100 = icmp eq i64 %99, 1 - br i1 %100, label %.invoke, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" + %97 = load ptr, ptr %91, align 16, !alias.scope !5068, !nonnull !4, !noundef !4 + %98 = atomicrmw sub ptr %97, i64 1 release, align 8, !noalias !5068 + %99 = icmp eq i64 %98, 1 + br i1 %99, label %.invoke, label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" -.invoke: ; preds = %97, %93 +.invoke: ; preds = %96, %92 invoke void @_ZN4core4sync6atomic5fence17h58c21b3babc78cabE.llvm.4057250340930679409(i8 noundef 2) - to label %.noexc15.invoke unwind label %104 + to label %.noexc15.invoke unwind label %103 .noexc15.invoke: ; preds = %.invoke - invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %92) - to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" unwind label %104 - -101: ; preds = %114, %.body, %118, %110, %109, %104 - %.pn4 = phi { ptr, i32 } [ %105, %104 ], [ %.pn2, %109 ], [ %.pn2, %.body ], [ %.pn2, %114 ], [ %.pn2, %118 ], [ %.pn2, %110 ] - %102 = getelementptr inbounds i8, ptr %0, i64 1041 - store i8 0, ptr %102, align 1 - %103 = getelementptr inbounds i8, ptr %0, i64 1042 - store i8 0, ptr %103, align 2 + invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17ha62a15b3cd894f86E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %91) + to label %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit" unwind label %103 + +100: ; preds = %113, %.body, %117, %109, %108, %103 + %.pn4 = phi { ptr, i32 } [ %104, %103 ], [ %.pn2, %108 ], [ %.pn2, %.body ], [ %.pn2, %113 ], [ %.pn2, %117 ], [ %.pn2, %109 ] + %101 = getelementptr inbounds i8, ptr %0, i64 1041 + store i8 0, ptr %101, align 1 + %102 = getelementptr inbounds i8, ptr %0, i64 1042 + store i8 0, ptr %102, align 2 resume { ptr, i32 } %.pn4 -104: ; preds = %.invoke, %.noexc15.invoke, %81 - %105 = landingpad { ptr, i32 } +103: ; preds = %.invoke, %.noexc15.invoke, %81 + %104 = landingpad { ptr, i32 } cleanup - br label %101 + br label %100 -106: ; preds = %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_catalog_schema..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7c41ae50bcaba55fE.exit", %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit", %81 - %107 = getelementptr inbounds i8, ptr %0, i64 1041 - store i8 0, ptr %107, align 1 - %108 = getelementptr inbounds i8, ptr %0, i64 1042 - store i8 0, ptr %108, align 2 +105: ; preds = %"_ZN4core3ptr119drop_in_place$LT$datafusion..execution..context..SessionContext..create_catalog_schema..$u7b$$u7b$closure$u7d$$u7d$$GT$17h7c41ae50bcaba55fE.exit", %"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E.exit", %81 + %106 = getelementptr inbounds i8, ptr %0, i64 1041 + store i8 0, ptr %106, align 1 + %107 = getelementptr inbounds i8, ptr %0, i64 1042 + store i8 0, ptr %107, align 2 br label %common.ret -109: ; preds = %.body +108: ; preds = %.body invoke void @"_ZN4core3ptr69drop_in_place$LT$datafusion_expr..logical_plan..plan..LogicalPlan$GT$17h2620ac68516cc299E"(ptr noalias noundef nonnull align 16 dereferenceable(352) %77) #47 - to label %101 unwind label %59 + to label %100 unwind label %59 -110: ; preds = %.body - %111 = getelementptr inbounds i8, ptr %0, i64 1042 - %112 = load i8, ptr %111, align 2, !range !51, !noundef !4 - %113 = trunc nuw i8 %112 to i1 - br i1 %113, label %114, label %101 +109: ; preds = %.body + %110 = getelementptr inbounds i8, ptr %0, i64 1042 + %111 = load i8, ptr %110, align 2, !range !51, !noundef !4 + %112 = trunc nuw i8 %111 to i1 + br i1 %112, label %113, label %100 -114: ; preds = %110 - %115 = getelementptr inbounds i8, ptr %0, i64 360 - %116 = load i64, ptr %115, align 8, !range !341, !noundef !4 - %117 = icmp sgt i64 %116, -9223372036854775807 - br i1 %117, label %101, label %118 +113: ; preds = %109 + %114 = getelementptr inbounds i8, ptr %0, i64 360 + %115 = load i64, ptr %114, align 8, !range !341, !noundef !4 + %116 = icmp sgt i64 %115, -9223372036854775807 + br i1 %116, label %100, label %117 -118: ; preds = %114 - invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %115) #47 - to label %101 unwind label %59 +117: ; preds = %113 + invoke fastcc void @"_ZN4core3ptr72drop_in_place$LT$datafusion_expr..logical_plan..statement..Statement$GT$17hd61cf2c3293b1341E"(ptr noalias noundef align 8 dereferenceable(56) %114) #47 + to label %100 unwind label %59 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/fmt/optimized/format-impl-test.cc.ll b/bench/fmt/optimized/format-impl-test.cc.ll index 6d49c739d4d..01644a84d65 100644 --- a/bench/fmt/optimized/format-impl-test.cc.ll +++ b/bench/fmt/optimized/format-impl-test.cc.ll @@ -16266,12 +16266,13 @@ _Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing %cmp.i11 = icmp ult i32 %shr25.i, %12 %shr30.mask.i = and i32 %shr25.i, 67106816 %cmp31.i = icmp eq i32 %shr30.mask.i, 55296 + %shl33.i = select i1 %cmp31.i, i32 128, i32 0 %cmp35.i = icmp ugt i32 %shr25.i, 1114111 %shl37.i = select i1 %cmp35.i, i32 256, i32 0 - %or38.i = select i1 %cmp.i11, i32 64, i32 0 + %or38.i = select i1 %cmp.i11, i32 104, i32 40 %or43.i = or disjoint i32 %or38.i, %shl37.i - %shl33.i.masked = select i1 %cmp31.i, i32 128, i32 0 - %xor.i = or disjoint i32 %or43.i, %shl33.i.masked + %or48.i = or disjoint i32 %or43.i, %shl33.i + %xor.i = xor i32 %or48.i, 40 %arrayidx54.i = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.shifte, i64 0, i64 %idx.ext.i %13 = load i32, ptr %arrayidx54.i, align 4 %shr55.i = lshr i32 %xor.i, %13 diff --git a/bench/graphviz/optimized/generate-constraints.cpp.ll b/bench/graphviz/optimized/generate-constraints.cpp.ll index 6b7431fbbf8..9abf8a6b194 100644 --- a/bench/graphviz/optimized/generate-constraints.cpp.ll +++ b/bench/graphviz/optimized/generate-constraints.cpp.ll @@ -2029,9 +2029,9 @@ _ZNSt6vectorIP10ConstraintSaIS1_EE9push_backEOS1_.exit288: ; preds = %_ZNSt6vect %757 = sub i64 %.sroa.13.0.lcssa, %756 %758 = lshr i64 %757, 3 %759 = trunc i64 %758 to i32 - %sext = shl i64 %757, 29 - %760 = ashr exact i64 %sext, 29 - %.inv = icmp sgt i64 %sext, -1 + %760 = and i64 %757, 34359738367 + %sext.mask = and i64 %757, 17179869184 + %.inv = icmp eq i64 %sext.mask, 0 %761 = select i1 %.inv, i64 %760, i64 -1 %762 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %761) #24 to label %763 unwind label %.loopexit.split-lp404.loopexit.split-lp.loopexit.split-lp @@ -3544,9 +3544,9 @@ _ZNSt6vectorIP10ConstraintSaIS1_EE9push_backEOS1_.exit120: ; preds = %_ZNSt6vect %301 = sub i64 %.sroa.9.0.lcssa, %300 %302 = lshr i64 %301, 3 %303 = trunc i64 %302 to i32 - %sext = shl i64 %301, 29 - %304 = ashr exact i64 %sext, 29 - %.inv = icmp sgt i64 %sext, -1 + %304 = and i64 %301, 34359738367 + %sext.mask = and i64 %301, 17179869184 + %.inv = icmp eq i64 %sext.mask, 0 %305 = select i1 %.inv, i64 %304, i64 -1 %306 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %305) #24 to label %307 unwind label %.loopexit.split-lp diff --git a/bench/gromacs/optimized/parallel_3dfft.cpp.ll b/bench/gromacs/optimized/parallel_3dfft.cpp.ll index b4472aad1b0..b330a29985f 100644 --- a/bench/gromacs/optimized/parallel_3dfft.cpp.ll +++ b/bench/gromacs/optimized/parallel_3dfft.cpp.ll @@ -49,27 +49,26 @@ define noundef range(i32 0, 2) i32 @_Z23gmx_parallel_3dfft_initPP18gmx_parallel_ %22 = call noundef ptr @_Z13fft5d_plan_3diiiPP10tmpi_comm_iPP9t_complexS4_S4_S4_iN3gmx13PinningPolicyE(i32 noundef %13, i32 noundef %15, i32 noundef %16, ptr noundef nonnull %9, i32 noundef %spec.select, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %10, ptr noundef nonnull %11, i32 noundef %6, i32 noundef %7) %23 = load ptr, ptr %0, align 8 store ptr %22, ptr %23, align 8 - %24 = and i32 %spec.select, 20 - %25 = or disjoint i32 %24, 66 - %26 = call noundef ptr @_Z13fft5d_plan_3diiiPP10tmpi_comm_iPP9t_complexS4_S4_S4_iN3gmx13PinningPolicyE(i32 noundef %16, i32 noundef %13, i32 noundef %15, ptr noundef nonnull %9, i32 noundef %25, ptr noundef %3, ptr noundef %2, ptr noundef nonnull %10, ptr noundef nonnull %11, i32 noundef %6, i32 noundef 0) - %27 = load ptr, ptr %0, align 8 - %28 = getelementptr inbounds i8, ptr %27, i64 8 - store ptr %26, ptr %28, align 8 - %29 = load ptr, ptr %0, align 8 - %30 = load ptr, ptr %29, align 8 - %.not = icmp eq ptr %30, null - br i1 %.not, label %36, label %31 - -31: ; preds = %8 - %32 = getelementptr inbounds i8, ptr %29, i64 8 - %33 = load ptr, ptr %32, align 8 - %34 = icmp ne ptr %33, null - %35 = zext i1 %34 to i32 - br label %36 - -36: ; preds = %31, %8 - %37 = phi i32 [ 0, %8 ], [ %35, %31 ] - ret i32 %37 + %24 = xor i32 %spec.select, 67 + %25 = call noundef ptr @_Z13fft5d_plan_3diiiPP10tmpi_comm_iPP9t_complexS4_S4_S4_iN3gmx13PinningPolicyE(i32 noundef %16, i32 noundef %13, i32 noundef %15, ptr noundef nonnull %9, i32 noundef %24, ptr noundef %3, ptr noundef %2, ptr noundef nonnull %10, ptr noundef nonnull %11, i32 noundef %6, i32 noundef 0) + %26 = load ptr, ptr %0, align 8 + %27 = getelementptr inbounds i8, ptr %26, i64 8 + store ptr %25, ptr %27, align 8 + %28 = load ptr, ptr %0, align 8 + %29 = load ptr, ptr %28, align 8 + %.not = icmp eq ptr %29, null + br i1 %.not, label %35, label %30 + +30: ; preds = %8 + %31 = getelementptr inbounds i8, ptr %28, i64 8 + %32 = load ptr, ptr %31, align 8 + %33 = icmp ne ptr %32, null + %34 = zext i1 %33 to i32 + br label %35 + +35: ; preds = %30, %8 + %36 = phi i32 [ 0, %8 ], [ %34, %30 ] + ret i32 %36 } declare noundef ptr @_Z13fft5d_plan_3diiiPP10tmpi_comm_iPP9t_complexS4_S4_S4_iN3gmx13PinningPolicyE(i32 noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #1 diff --git a/bench/icu/optimized/ustr.ll b/bench/icu/optimized/ustr.ll index 535b6f3d5cd..0c276354043 100644 --- a/bench/icu/optimized/ustr.ll +++ b/bench/icu/optimized/ustr.ll @@ -320,12 +320,12 @@ if.end: ; preds = %entry if.end.i: ; preds = %if.end %cmp3 = icmp slt i32 %len, 128 %mul = shl nsw i32 %len, 1 - %2 = and i32 %mul, -128 - %and = add nsw i32 %2, 128 + %2 = and i32 %mul, 2147483520 + %and = add nuw nsw i32 %2, 128 %cond = select i1 %cmp3, i32 128, i32 %and - %add.i = or disjoint i32 %cond, 1 - %conv.i = sext i32 %add.i to i64 - %mul.i = shl nsw i64 %conv.i, 1 + %add.i = shl nuw i32 %cond, 1 + %3 = or disjoint i32 %add.i, 2 + %mul.i = zext i32 %3 to i64 %call.i = tail call ptr @uprv_realloc_75(ptr noundef %.pre10, i64 noundef %mul.i) #8 store ptr %call.i, ptr %s, align 8 %cmp3.i = icmp eq ptr %call.i, null @@ -340,8 +340,8 @@ if.then5.i: ; preds = %if.end.i ustr_resize.exit: ; preds = %if.end.i, %if.then5.i %cond.sink = phi i32 [ 0, %if.then5.i ], [ %cond, %if.end.i ] store i32 %cond.sink, ptr %fCapacity, align 4 - %3 = load i32, ptr %status, align 4 - %cmp5 = icmp sgt i32 %3, 0 + %4 = load i32, ptr %status, align 4 + %cmp5 = icmp sgt i32 %4, 0 br i1 %cmp5, label %return, label %ustr_resize.exit.if.end8_crit_edge ustr_resize.exit.if.end8_crit_edge: ; preds = %ustr_resize.exit @@ -349,11 +349,11 @@ ustr_resize.exit.if.end8_crit_edge: ; preds = %ustr_resize.exit br label %if.end8 if.end8: ; preds = %ustr_resize.exit.if.end8_crit_edge, %if.end - %4 = phi ptr [ %.pre, %ustr_resize.exit.if.end8_crit_edge ], [ %.pre10, %if.end ] + %5 = phi ptr [ %.pre, %ustr_resize.exit.if.end8_crit_edge ], [ %.pre10, %if.end ] %fLength = getelementptr inbounds i8, ptr %s, i64 8 store i32 %len, ptr %fLength, align 8 %idxprom = sext i32 %len to i64 - %arrayidx = getelementptr inbounds i16, ptr %4, i64 %idxprom + %arrayidx = getelementptr inbounds i16, ptr %5, i64 %idxprom store i16 0, ptr %arrayidx, align 2 br label %return diff --git a/bench/image-rs/optimized/1njpscpjlgoe3i07.ll b/bench/image-rs/optimized/1njpscpjlgoe3i07.ll index 308f42486ab..2b7bd418279 100644 --- a/bench/image-rs/optimized/1njpscpjlgoe3i07.ll +++ b/bench/image-rs/optimized/1njpscpjlgoe3i07.ll @@ -23424,16 +23424,16 @@ define { i16, i16 } @_ZN5image6codecs3gif6Repeat11to_gif_enum17hec37d9fa9a5d5aab ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define i48 @"_ZN5image6codecs3gif19GifEncoder$LT$W$GT$14gif_dimensions16inner_dimensions17hd3657403bd0340d1E"(i32 noundef %0, i32 noundef %1) unnamed_addr #18 { %3 = icmp ult i32 %0, 65536 - %4 = or i32 %0, %1 - %5 = icmp ult i32 %4, 65536 - %narrow19 = select i1 %5, i32 %1, i32 0 - %.sroa.5.0.insert.ext = zext nneg i32 %narrow19 to i48 + %4 = shl nuw i32 %0, 16 + %narrow = select i1 %3, i32 %4, i32 0 + %5 = or i32 %0, %1 + %6 = icmp ult i32 %5, 65536 + %narrow20 = select i1 %6, i32 %1, i32 0 + %.sroa.5.0.insert.ext = zext nneg i32 %narrow20 to i48 %.sroa.5.0.insert.shift = shl nuw i48 %.sroa.5.0.insert.ext, 32 - %6 = shl nuw i32 %0, 16 - %7 = select i1 %3, i32 %6, i32 0 - %.sroa.4.0.insert.shift = zext i32 %7 to i48 + %.sroa.4.0.insert.shift = zext i32 %narrow to i48 %.sroa.4.0.insert.insert = or disjoint i48 %.sroa.5.0.insert.shift, %.sroa.4.0.insert.shift - %.sroa.0.0.insert.ext = zext i1 %5 to i48 + %.sroa.0.0.insert.ext = zext i1 %6 to i48 %.sroa.0.0.insert.insert = or disjoint i48 %.sroa.4.0.insert.insert, %.sroa.0.0.insert.ext ret i48 %.sroa.0.0.insert.insert } diff --git a/bench/image-rs/optimized/34r8dryqmufipcqz.ll b/bench/image-rs/optimized/34r8dryqmufipcqz.ll index 63e6272b44b..7ddfe2a3e3a 100644 --- a/bench/image-rs/optimized/34r8dryqmufipcqz.ll +++ b/bench/image-rs/optimized/34r8dryqmufipcqz.ll @@ -1026,7 +1026,7 @@ define hidden void @"_ZN115_$LT$tiff..encoder..compression..packbits..Packbits$u 171: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17ha72b1d8d49b79363E.exit215.thread", %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17ha72b1d8d49b79363E.exit215" %172 = add i64 %.0113370, 129 %173 = add i8 %.0115369, -127 - %174 = and i8 %.0115369, 127 + %174 = xor i8 %.0115369, -128 br label %175 175: ; preds = %151, %122, %107, %104, %118, %198, %171 @@ -1580,7 +1580,7 @@ define hidden void @"_ZN115_$LT$tiff..encoder..compression..packbits..Packbits$u 171: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17ha591a307127da608E.exit215.thread", %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17ha591a307127da608E.exit215" %172 = add i64 %.0113370, 129 %173 = add i8 %.0115369, -127 - %174 = and i8 %.0115369, 127 + %174 = xor i8 %.0115369, -128 br label %175 175: ; preds = %151, %122, %107, %104, %118, %198, %171 @@ -2145,7 +2145,7 @@ define hidden void @"_ZN115_$LT$tiff..encoder..compression..packbits..Packbits$u 176: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h408bcca9242aa7acE.exit217.thread", %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h408bcca9242aa7acE.exit217" %177 = add i64 %.0113374, 129 %178 = add i8 %.0115373, -127 - %179 = and i8 %.0115373, 127 + %179 = xor i8 %.0115373, -128 br label %180 180: ; preds = %156, %127, %112, %109, %123, %203, %176 diff --git a/bench/ipopt/optimized/IpEquilibrationScaling.ll b/bench/ipopt/optimized/IpEquilibrationScaling.ll index c294362360f..519ba673cd2 100644 --- a/bench/ipopt/optimized/IpEquilibrationScaling.ll +++ b/bench/ipopt/optimized/IpEquilibrationScaling.ll @@ -722,9 +722,9 @@ _ZN5Ipopt8SmartPtrINS_14PointPerturberEEC2EPS1_.exit: ; preds = %228 %245 = load ptr, ptr %244, align 8, !noalias !4 %246 = getelementptr inbounds i8, ptr %245, i64 12 %247 = load i32, ptr %246, align 4, !noalias !4 - %248 = sext i32 %247 to i64 + %248 = zext i32 %247 to i64 %249 = icmp slt i32 %247, 0 - %250 = shl nsw i64 %248, 3 + %250 = shl nuw nsw i64 %248, 3 %251 = select i1 %249, i64 -1, i64 %250 %252 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %251) #20 to label %.noexc unwind label %.loopexit.split-lp.loopexit @@ -744,14 +744,10 @@ _ZN5Ipopt8SmartPtrINS_14PointPerturberEEC2EPS1_.exit: ; preds = %228 .noexc275: ; preds = %.noexc274 %255 = icmp sgt i32 %247, 0 - br i1 %255, label %.lr.ph.preheader.i, label %._crit_edge.i + br i1 %255, label %.lr.ph.i, label %._crit_edge.i -.lr.ph.preheader.i: ; preds = %.noexc275 - %wide.trip.count.i = zext nneg i32 %247 to i64 - br label %.lr.ph.i - -.lr.ph.i: ; preds = %.noexc276, %.lr.ph.preheader.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.noexc276 ] +.lr.ph.i: ; preds = %.noexc275, %.noexc276 + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.noexc276 ], [ 0, %.noexc275 ] %256 = invoke noundef double @_ZN5Ipopt10IpRandom01Ev() to label %.noexc276 unwind label %.loopexit @@ -765,7 +761,7 @@ _ZN5Ipopt8SmartPtrINS_14PointPerturberEEC2EPS1_.exit: ; preds = %228 %263 = call double @llvm.fmuladd.f64(double %258, double %260, double %262) store double %263, ptr %261, align 8, !noalias !4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %248 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !7 ._crit_edge.i: ; preds = %.noexc276, %.noexc275 @@ -1213,8 +1209,8 @@ _ZN5Ipopt8SmartPtrINS_6VectorEED2Ev.exit279: ; preds = %338, %343 424: ; preds = %422 %425 = mul nsw i32 %.sroa.speculated.i282, 5 - %426 = sext i32 %425 to i64 - %427 = shl nsw i64 %426, 2 + %426 = zext i32 %425 to i64 + %427 = shl nuw nsw i64 %426, 2 %428 = select i1 %418, i64 -1, i64 %427 %429 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %428) #20 to label %430 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -1240,9 +1236,9 @@ _ZN5Ipopt8SmartPtrINS_6VectorEED2Ev.exit279: ; preds = %338, %343 to label %440 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp 440: ; preds = %434 - %441 = sext i32 %212 to i64 + %441 = zext i32 %212 to i64 %442 = icmp slt i32 %212, 0 - %443 = shl nsw i64 %441, 3 + %443 = shl nuw nsw i64 %441, 3 %444 = select i1 %442, i64 -1, i64 %443 %445 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %444) #20 to label %.preheader361 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -1256,11 +1252,7 @@ _ZN5Ipopt8SmartPtrINS_6VectorEED2Ev.exit279: ; preds = %338, %343 br label %.lr.ph412 .preheader: ; preds = %.lr.ph412, %.preheader361 - br i1 %239, label %.lr.ph414.preheader, label %._crit_edge415 - -.lr.ph414.preheader: ; preds = %.preheader - %wide.trip.count471 = zext nneg i32 %212 to i64 - br label %.lr.ph414 + br i1 %239, label %.lr.ph414, label %._crit_edge415 .lr.ph412: ; preds = %.lr.ph412.preheader, %.lr.ph412 %indvars.iv463 = phi i64 [ 0, %.lr.ph412.preheader ], [ %indvars.iv.next464, %.lr.ph412 ] @@ -1274,8 +1266,8 @@ _ZN5Ipopt8SmartPtrINS_6VectorEED2Ev.exit279: ; preds = %338, %343 %exitcond467.not = icmp eq i64 %indvars.iv.next464, %wide.trip.count466 br i1 %exitcond467.not, label %.preheader, label %.lr.ph412, !llvm.loop !19 -.lr.ph414: ; preds = %.lr.ph414.preheader, %.lr.ph414 - %indvars.iv468 = phi i64 [ 0, %.lr.ph414.preheader ], [ %indvars.iv.next469, %.lr.ph414 ] +.lr.ph414: ; preds = %.preheader, %.lr.ph414 + %indvars.iv468 = phi i64 [ %indvars.iv.next469, %.lr.ph414 ], [ 0, %.preheader ] %451 = getelementptr inbounds float, ptr %423, i64 %indvars.iv468 %452 = load float, ptr %451, align 4 %453 = fpext float %452 to double @@ -1283,7 +1275,7 @@ _ZN5Ipopt8SmartPtrINS_6VectorEED2Ev.exit279: ; preds = %338, %343 %455 = getelementptr inbounds double, ptr %445, i64 %indvars.iv468 store double %454, ptr %455, align 8 %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1 - %exitcond472.not = icmp eq i64 %indvars.iv.next469, %wide.trip.count471 + %exitcond472.not = icmp eq i64 %indvars.iv.next469, %441 br i1 %exitcond472.not, label %._crit_edge415, label %.lr.ph414, !llvm.loop !20 ._crit_edge415: ; preds = %.lr.ph414, %.preheader @@ -1739,9 +1731,9 @@ define void @_ZNK5Ipopt14PointPerturber21MakeNewPerturbedPointEv(ptr dead_on_unw %6 = load ptr, ptr %5, align 8 %7 = getelementptr inbounds i8, ptr %6, i64 12 %8 = load i32, ptr %7, align 4 - %9 = sext i32 %8 to i64 + %9 = zext i32 %8 to i64 %10 = icmp slt i32 %8, 0 - %11 = shl nsw i64 %9, 3 + %11 = shl nuw nsw i64 %9, 3 %12 = select i1 %10, i64 -1, i64 %11 %13 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %12) #20 tail call void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %8, ptr noundef nonnull align 8 dereferenceable(205) %4, ptr noundef nonnull %13) @@ -1750,14 +1742,10 @@ define void @_ZNK5Ipopt14PointPerturber21MakeNewPerturbedPointEv(ptr dead_on_unw %16 = load ptr, ptr %15, align 8 tail call void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %8, ptr noundef nonnull align 8 dereferenceable(205) %16, ptr noundef nonnull %14) %17 = icmp sgt i32 %8, 0 - br i1 %17, label %.lr.ph.preheader, label %._crit_edge + br i1 %17, label %.lr.ph, label %._crit_edge -.lr.ph.preheader: ; preds = %2 - %wide.trip.count = zext nneg i32 %8 to i64 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] +.lr.ph: ; preds = %2, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %2 ] %18 = tail call noundef double @_ZN5Ipopt10IpRandom01Ev() %19 = fadd double %18, -5.000000e-01 %20 = fmul double %19, 2.000000e+00 @@ -1768,7 +1756,7 @@ define void @_ZNK5Ipopt14PointPerturber21MakeNewPerturbedPointEv(ptr dead_on_unw %25 = tail call double @llvm.fmuladd.f64(double %20, double %22, double %24) store double %25, ptr %23, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next, %9 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !7 ._crit_edge: ; preds = %.lr.ph, %2 diff --git a/bench/ipopt/optimized/IpGenAugSystemSolver.ll b/bench/ipopt/optimized/IpGenAugSystemSolver.ll index e98c66b56d6..92c4a81e2cf 100644 --- a/bench/ipopt/optimized/IpGenAugSystemSolver.ll +++ b/bench/ipopt/optimized/IpGenAugSystemSolver.ll @@ -616,9 +616,9 @@ define noundef i32 @_ZN5Ipopt18GenAugSystemSolver10MultiSolveEPKNS_9SymMatrixEdP br label %76 76: ; preds = %75, %71 - %77 = sext i32 %44 to i64 + %77 = zext i32 %44 to i64 %78 = icmp slt i32 %44, 0 - %79 = shl nsw i64 %77, 3 + %79 = shl nuw nsw i64 %77, 3 %80 = select i1 %78, i64 -1, i64 %79 %81 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %80) #21 store ptr %81, ptr %72, align 8 @@ -666,9 +666,9 @@ define noundef i32 @_ZN5Ipopt18GenAugSystemSolver10MultiSolveEPKNS_9SymMatrixEdP br label %103 103: ; preds = %102, %98 - %104 = sext i32 %56 to i64 + %104 = zext i32 %56 to i64 %105 = icmp slt i32 %56, 0 - %106 = shl nsw i64 %104, 3 + %106 = shl nuw nsw i64 %104, 3 %107 = select i1 %105, i64 -1, i64 %106 %108 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %107) #21 store ptr %108, ptr %99, align 8 @@ -716,9 +716,9 @@ define noundef i32 @_ZN5Ipopt18GenAugSystemSolver10MultiSolveEPKNS_9SymMatrixEdP br label %130 130: ; preds = %129, %125 - %131 = sext i32 %50 to i64 + %131 = zext i32 %50 to i64 %132 = icmp slt i32 %50, 0 - %133 = shl nsw i64 %131, 3 + %133 = shl nuw nsw i64 %131, 3 %134 = select i1 %132, i64 -1, i64 %133 %135 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %134) #21 store ptr %135, ptr %126, align 8 @@ -766,9 +766,9 @@ define noundef i32 @_ZN5Ipopt18GenAugSystemSolver10MultiSolveEPKNS_9SymMatrixEdP br label %157 157: ; preds = %156, %152 - %158 = sext i32 %56 to i64 + %158 = zext i32 %56 to i64 %159 = icmp slt i32 %56, 0 - %160 = shl nsw i64 %158, 3 + %160 = shl nuw nsw i64 %158, 3 %161 = select i1 %159, i64 -1, i64 %160 %162 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %161) #21 store ptr %162, ptr %153, align 8 @@ -782,9 +782,9 @@ define noundef i32 @_ZN5Ipopt18GenAugSystemSolver10MultiSolveEPKNS_9SymMatrixEdP %165 = add i32 %50, %44 %166 = add i32 %165, %factor %167 = mul nsw i32 %166, %38 - %168 = sext i32 %167 to i64 + %168 = zext i32 %167 to i64 %169 = icmp slt i32 %167, 0 - %170 = shl nsw i64 %168, 3 + %170 = shl nuw nsw i64 %168, 3 %171 = select i1 %169, i64 -1, i64 %170 %172 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %171) #21 %invariant.op229 = add i32 %165, %56 diff --git a/bench/ipopt/optimized/IpTripletHelper.ll b/bench/ipopt/optimized/IpTripletHelper.ll index 35cd6ace57a..4c40946158d 100644 --- a/bench/ipopt/optimized/IpTripletHelper.ll +++ b/bench/ipopt/optimized/IpTripletHelper.ll @@ -2787,9 +2787,9 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %53, %56 %61 = load ptr, ptr %60, align 8 %62 = getelementptr inbounds i8, ptr %61, i64 12 %63 = load i32, ptr %62, align 4 - %64 = sext i32 %63 to i64 + %64 = zext i32 %63 to i64 %65 = icmp slt i32 %63, 0 - %66 = shl nsw i64 %64, 3 + %66 = shl nuw nsw i64 %64, 3 %67 = select i1 %65, i64 -1, i64 %66 %68 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %67) #18 %69 = load ptr, ptr %39, align 8, !noalias !102 @@ -2938,9 +2938,9 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit67: ; preds = %133, %136 %141 = load ptr, ptr %140, align 8 %142 = getelementptr inbounds i8, ptr %141, i64 16 %143 = load i32, ptr %142, align 8 - %144 = sext i32 %143 to i64 + %144 = zext i32 %143 to i64 %145 = icmp slt i32 %143, 0 - %146 = shl nsw i64 %144, 3 + %146 = shl nuw nsw i64 %144, 3 %147 = select i1 %145, i64 -1, i64 %146 %148 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %147) #18 %149 = load ptr, ptr %39, align 8, !noalias !119 @@ -3152,9 +3152,9 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %53, %56 %61 = load ptr, ptr %60, align 8 %62 = getelementptr inbounds i8, ptr %61, i64 12 %63 = load i32, ptr %62, align 4 - %64 = sext i32 %63 to i64 + %64 = zext i32 %63 to i64 %65 = icmp slt i32 %63, 0 - %66 = shl nsw i64 %64, 3 + %66 = shl nuw nsw i64 %64, 3 %67 = select i1 %65, i64 -1, i64 %66 %68 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %67) #18 %69 = load ptr, ptr %39, align 8, !noalias !142 @@ -3872,7 +3872,7 @@ define void @_ZN5Ipopt13TripletHelper11FillValues_EiRKNS_25ExpandedMultiVectorMa %10 = getelementptr inbounds i8, ptr %9, i64 32 %11 = load ptr, ptr %10, align 8, !noalias !175 %.not.i.i.i.i.i = icmp eq ptr %11, null - br i1 %.not.i.i.i.i.i, label %73, label %12 + br i1 %.not.i.i.i.i.i, label %71, label %12 12: ; preds = %3 %13 = getelementptr inbounds i8, ptr %11, i64 8 @@ -3884,7 +3884,7 @@ define void @_ZN5Ipopt13TripletHelper11FillValues_EiRKNS_25ExpandedMultiVectorMa %18 = getelementptr inbounds i8, ptr %17, i64 16 %19 = load i32, ptr %18, align 8 %.fr121 = freeze i32 %19 - %20 = zext nneg i32 %.fr121 to i64 + %20 = zext i32 %.fr121 to i64 %21 = icmp slt i32 %.fr121, 0 %22 = shl nuw nsw i64 %20, 3 %23 = select i1 %21, i64 -1, i64 %22 @@ -3901,71 +3901,69 @@ define void @_ZN5Ipopt13TripletHelper11FillValues_EiRKNS_25ExpandedMultiVectorMa br i1 %27, label %.lr.ph95.split.us.preheader, label %.lr.ph95.split.split.preheader .lr.ph95.split.us.preheader: ; preds = %.lr.ph95 - %28 = zext nneg i32 %.fr121 to i64 - %29 = shl nuw nsw i64 %28, 3 - %30 = add nsw i32 %.fr121, -1 - %31 = zext nneg i32 %30 to i64 - %32 = shl nuw nsw i64 %31, 3 - %33 = add nuw nsw i64 %32, 8 + %28 = add nsw i32 %.fr121, -1 + %29 = zext nneg i32 %28 to i64 + %30 = shl nuw nsw i64 %29, 3 + %31 = add nuw nsw i64 %30, 8 %wide.trip.count151 = zext nneg i32 %7 to i64 br label %.lr.ph95.split.us .lr.ph95.split.us: ; preds = %.lr.ph95.split.us.preheader, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us %indvars.iv148 = phi i64 [ 0, %.lr.ph95.split.us.preheader ], [ %indvars.iv.next149, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us ] - %.03794.us = phi ptr [ %2, %.lr.ph95.split.us.preheader ], [ %.2.us160, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us ] - %34 = load ptr, ptr %26, align 8, !noalias !178 - %35 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %34, i64 %indvars.iv148 - %36 = load ptr, ptr %35, align 8, !noalias !178 - %.not.i.i.i.i.us = icmp eq ptr %36, null - br i1 %.not.i.i.i.i.us, label %.loopexit82.us.thread, label %37 - -37: ; preds = %.lr.ph95.split.us - %38 = getelementptr inbounds i8, ptr %36, i64 8 - %39 = load i32, ptr %38, align 8, !noalias !178 - %40 = add nsw i32 %39, 1 - store i32 %40, ptr %38, align 8, !noalias !178 - invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %.fr121, ptr noundef nonnull align 8 dereferenceable(205) %36, ptr noundef nonnull %24) + %.03794.us = phi ptr [ %2, %.lr.ph95.split.us.preheader ], [ %.2.us161, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us ] + %32 = load ptr, ptr %26, align 8, !noalias !178 + %33 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %32, i64 %indvars.iv148 + %34 = load ptr, ptr %33, align 8, !noalias !178 + %.not.i.i.i.i.us = icmp eq ptr %34, null + br i1 %.not.i.i.i.i.us, label %.loopexit82.us.thread, label %35 + +35: ; preds = %.lr.ph95.split.us + %36 = getelementptr inbounds i8, ptr %34, i64 8 + %37 = load i32, ptr %36, align 8, !noalias !178 + %38 = add nsw i32 %37, 1 + store i32 %38, ptr %36, align 8, !noalias !178 + invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %.fr121, ptr noundef nonnull align 8 dereferenceable(205) %34, ptr noundef nonnull %24) to label %.preheader83.us unwind label %.split.us -.preheader83.us: ; preds = %37, %.preheader83.us - %indvars.iv142 = phi i64 [ %indvars.iv.next143, %.preheader83.us ], [ 0, %37 ] - %.188.us = phi ptr [ %43, %.preheader83.us ], [ %.03794.us, %37 ] - %41 = getelementptr inbounds double, ptr %24, i64 %indvars.iv142 - %42 = load double, ptr %41, align 8 - %43 = getelementptr inbounds i8, ptr %.188.us, i64 8 - store double %42, ptr %.188.us, align 8 +.preheader83.us: ; preds = %35, %.preheader83.us + %indvars.iv142 = phi i64 [ %indvars.iv.next143, %.preheader83.us ], [ 0, %35 ] + %.188.us = phi ptr [ %41, %.preheader83.us ], [ %.03794.us, %35 ] + %39 = getelementptr inbounds double, ptr %24, i64 %indvars.iv142 + %40 = load double, ptr %39, align 8 + %41 = getelementptr inbounds i8, ptr %.188.us, i64 8 + store double %40, ptr %.188.us, align 8 %indvars.iv.next143 = add nuw nsw i64 %indvars.iv142, 1 - %exitcond146.not = icmp eq i64 %indvars.iv.next143, %28 + %exitcond146.not = icmp eq i64 %indvars.iv.next143, %20 br i1 %exitcond146.not, label %.loopexit82.us, label %.preheader83.us, !llvm.loop !181 .loopexit82.us: ; preds = %.preheader83.us - %44 = getelementptr inbounds i8, ptr %36, i64 8 - %45 = load i32, ptr %44, align 8 - %46 = add nsw i32 %45, -1 - store i32 %46, ptr %44, align 8 - %47 = icmp eq i32 %46, 0 - br i1 %47, label %48, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us - -48: ; preds = %.loopexit82.us - %49 = load ptr, ptr %36, align 8 - %50 = getelementptr inbounds i8, ptr %49, i64 8 - %51 = load ptr, ptr %50, align 8 - tail call void %51(ptr noundef nonnull align 8 dereferenceable(205) %36) #16 + %42 = getelementptr inbounds i8, ptr %34, i64 8 + %43 = load i32, ptr %42, align 8 + %44 = add nsw i32 %43, -1 + store i32 %44, ptr %42, align 8 + %45 = icmp eq i32 %44, 0 + br i1 %45, label %46, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us + +46: ; preds = %.loopexit82.us + %47 = load ptr, ptr %34, align 8 + %48 = getelementptr inbounds i8, ptr %47, i64 8 + %49 = load ptr, ptr %48, align 8 + tail call void %49(ptr noundef nonnull align 8 dereferenceable(205) %34) #16 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us: ; preds = %.loopexit82.us.thread, %48, %.loopexit82.us - %.2.us160 = phi ptr [ %scevgep147, %.loopexit82.us.thread ], [ %43, %48 ], [ %43, %.loopexit82.us ] +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us: ; preds = %.loopexit82.us.thread, %46, %.loopexit82.us + %.2.us161 = phi ptr [ %scevgep147, %.loopexit82.us.thread ], [ %41, %46 ], [ %41, %.loopexit82.us ] %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1 %exitcond152.not = icmp eq i64 %indvars.iv.next149, %wide.trip.count151 br i1 %exitcond152.not, label %._crit_edge, label %.lr.ph95.split.us, !llvm.loop !182 .loopexit82.us.thread: ; preds = %.lr.ph95.split.us - tail call void @llvm.memset.p0.i64(ptr align 8 %.03794.us, i8 0, i64 %29, i1 false) - %scevgep147 = getelementptr i8, ptr %.03794.us, i64 %33 + tail call void @llvm.memset.p0.i64(ptr align 8 %.03794.us, i8 0, i64 %22, i1 false) + %scevgep147 = getelementptr i8, ptr %.03794.us, i64 %31 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us -.split.us: ; preds = %37 - %52 = landingpad { ptr, i32 } +.split.us: ; preds = %35 + %50 = landingpad { ptr, i32 } cleanup br label %.split @@ -3975,55 +3973,55 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45.us: ; preds = %.loopexit82.us.thre .lr.ph95.split.split: ; preds = %.lr.ph95.split.split.preheader, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45 %indvars.iv = phi i64 [ 0, %.lr.ph95.split.split.preheader ], [ %indvars.iv.next, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45 ] - %53 = load ptr, ptr %26, align 8, !noalias !178 - %54 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %53, i64 %indvars.iv - %55 = load ptr, ptr %54, align 8, !noalias !178 - %.not.i.i.i.i = icmp eq ptr %55, null - br i1 %.not.i.i.i.i, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45, label %56 - -56: ; preds = %.lr.ph95.split.split - %57 = getelementptr inbounds i8, ptr %55, i64 8 - %58 = load i32, ptr %57, align 8, !noalias !178 - %59 = add nsw i32 %58, 1 - store i32 %59, ptr %57, align 8, !noalias !178 - invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %.fr121, ptr noundef nonnull align 8 dereferenceable(205) %55, ptr noundef nonnull %24) + %51 = load ptr, ptr %26, align 8, !noalias !178 + %52 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %51, i64 %indvars.iv + %53 = load ptr, ptr %52, align 8, !noalias !178 + %.not.i.i.i.i = icmp eq ptr %53, null + br i1 %.not.i.i.i.i, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45, label %54 + +54: ; preds = %.lr.ph95.split.split + %55 = getelementptr inbounds i8, ptr %53, i64 8 + %56 = load i32, ptr %55, align 8, !noalias !178 + %57 = add nsw i32 %56, 1 + store i32 %57, ptr %55, align 8, !noalias !178 + invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %.fr121, ptr noundef nonnull align 8 dereferenceable(205) %53, ptr noundef nonnull %24) to label %.preheader81 unwind label %.split.split _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread: ; preds = %12 - %60 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } cleanup - br label %120 + br label %118 -.split.split: ; preds = %56 - %61 = landingpad { ptr, i32 } +.split.split: ; preds = %54 + %59 = landingpad { ptr, i32 } cleanup br label %.split .split: ; preds = %.split.split, %.split.us - %.us-phi = phi ptr [ %36, %.split.us ], [ %55, %.split.split ] - %.us-phi96 = phi { ptr, i32 } [ %52, %.split.us ], [ %61, %.split.split ] - %62 = getelementptr inbounds i8, ptr %.us-phi, i64 8 - %63 = load i32, ptr %62, align 8 - %64 = add nsw i32 %63, -1 - store i32 %64, ptr %62, align 8 - %65 = icmp eq i32 %64, 0 - br i1 %65, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit - -.preheader81: ; preds = %56 - %66 = load i32, ptr %57, align 8 - %67 = add nsw i32 %66, -1 - store i32 %67, ptr %57, align 8 - %68 = icmp eq i32 %67, 0 - br i1 %68, label %69, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45 - -69: ; preds = %.preheader81 - %70 = load ptr, ptr %55, align 8 - %71 = getelementptr inbounds i8, ptr %70, i64 8 - %72 = load ptr, ptr %71, align 8 - tail call void %72(ptr noundef nonnull align 8 dereferenceable(205) %55) #16 + %.us-phi = phi ptr [ %34, %.split.us ], [ %53, %.split.split ] + %.us-phi96 = phi { ptr, i32 } [ %50, %.split.us ], [ %59, %.split.split ] + %60 = getelementptr inbounds i8, ptr %.us-phi, i64 8 + %61 = load i32, ptr %60, align 8 + %62 = add nsw i32 %61, -1 + store i32 %62, ptr %60, align 8 + %63 = icmp eq i32 %62, 0 + br i1 %63, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit + +.preheader81: ; preds = %54 + %64 = load i32, ptr %55, align 8 + %65 = add nsw i32 %64, -1 + store i32 %65, ptr %55, align 8 + %66 = icmp eq i32 %65, 0 + br i1 %66, label %67, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45 + +67: ; preds = %.preheader81 + %68 = load ptr, ptr %53, align 8 + %69 = getelementptr inbounds i8, ptr %68, i64 8 + %70 = load ptr, ptr %69, align 8 + tail call void %70(ptr noundef nonnull align 8 dereferenceable(205) %53) #16 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45 -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45: ; preds = %.lr.ph95.split.split, %.preheader81, %69 +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45: ; preds = %.lr.ph95.split.split, %.preheader81, %67 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph95.split.split, !llvm.loop !182 @@ -4032,137 +4030,137 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit45: ; preds = %.lr.ph95.split.spli tail call void @_ZdaPv(ptr noundef nonnull %24) #19 br label %.loopexit -73: ; preds = %3 - %74 = getelementptr inbounds i8, ptr %5, i64 16 - %75 = load i32, ptr %74, align 8 - %76 = icmp sgt i32 %7, 0 - br i1 %76, label %.lr.ph120, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit - -.lr.ph120: ; preds = %73 - %77 = getelementptr inbounds i8, ptr %1, i64 80 - %78 = sext i32 %75 to i64 - %79 = icmp sgt i32 %75, 0 - %80 = zext i32 %75 to i64 - %81 = shl nuw nsw i64 %80, 3 - %82 = add i32 %75, -1 - %83 = zext i32 %82 to i64 - %84 = shl nuw nsw i64 %83, 3 - %85 = add nuw nsw i64 %84, 8 +71: ; preds = %3 + %72 = getelementptr inbounds i8, ptr %5, i64 16 + %73 = load i32, ptr %72, align 8 + %74 = icmp sgt i32 %7, 0 + br i1 %74, label %.lr.ph120, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit + +.lr.ph120: ; preds = %71 + %75 = getelementptr inbounds i8, ptr %1, i64 80 + %76 = sext i32 %73 to i64 + %77 = icmp sgt i32 %73, 0 + %78 = zext i32 %73 to i64 + %79 = shl nuw nsw i64 %78, 3 + %80 = add i32 %73, -1 + %81 = zext i32 %80 to i64 + %82 = shl nuw nsw i64 %81, 3 + %83 = add nuw nsw i64 %82, 8 %wide.trip.count157 = zext nneg i32 %7 to i64 - br label %86 + br label %84 -86: ; preds = %.lr.ph120, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 +84: ; preds = %.lr.ph120, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 %indvars.iv154 = phi i64 [ 0, %.lr.ph120 ], [ %indvars.iv.next155, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 ] %.4117 = phi ptr [ %2, %.lr.ph120 ], [ %.577, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 ] - %87 = load ptr, ptr %77, align 8, !noalias !183 - %88 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %87, i64 %indvars.iv154 - %89 = load ptr, ptr %88, align 8, !noalias !183 - %.not.i.i.i.i46 = icmp eq ptr %89, null - br i1 %.not.i.i.i.i46, label %.preheader, label %90 + %85 = load ptr, ptr %75, align 8, !noalias !183 + %86 = getelementptr inbounds %"class.Ipopt::SmartPtr.6", ptr %85, i64 %indvars.iv154 + %87 = load ptr, ptr %86, align 8, !noalias !183 + %.not.i.i.i.i46 = icmp eq ptr %87, null + br i1 %.not.i.i.i.i46, label %.preheader, label %88 -.preheader: ; preds = %86 - br i1 %79, label %.lr.ph.preheader, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 +.preheader: ; preds = %84 + br i1 %77, label %.lr.ph.preheader, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 .lr.ph.preheader: ; preds = %.preheader - tail call void @llvm.memset.p0.i64(ptr align 8 %.4117, i8 0, i64 %81, i1 false) - %scevgep153 = getelementptr i8, ptr %.4117, i64 %85 + tail call void @llvm.memset.p0.i64(ptr align 8 %.4117, i8 0, i64 %79, i1 false) + %scevgep153 = getelementptr i8, ptr %.4117, i64 %83 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 -90: ; preds = %86 - %91 = getelementptr inbounds i8, ptr %89, i64 8 - %92 = load i32, ptr %91, align 8, !noalias !183 - %93 = add nsw i32 %92, 1 - store i32 %93, ptr %91, align 8, !noalias !183 - invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %75, ptr noundef nonnull align 8 dereferenceable(205) %89, ptr noundef %.4117) - to label %.thread74 unwind label %98 - -.thread74: ; preds = %90 - %94 = getelementptr inbounds double, ptr %.4117, i64 %78 - %95 = load i32, ptr %91, align 8 - %96 = add nsw i32 %95, -1 - store i32 %96, ptr %91, align 8 - %97 = icmp eq i32 %96, 0 - br i1 %97, label %103, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 - -98: ; preds = %90 - %99 = landingpad { ptr, i32 } +88: ; preds = %84 + %89 = getelementptr inbounds i8, ptr %87, i64 8 + %90 = load i32, ptr %89, align 8, !noalias !183 + %91 = add nsw i32 %90, 1 + store i32 %91, ptr %89, align 8, !noalias !183 + invoke void @_ZN5Ipopt13TripletHelper20FillValuesFromVectorEiRKNS_6VectorEPd(i32 noundef %73, ptr noundef nonnull align 8 dereferenceable(205) %87, ptr noundef %.4117) + to label %.thread74 unwind label %96 + +.thread74: ; preds = %88 + %92 = getelementptr inbounds double, ptr %.4117, i64 %76 + %93 = load i32, ptr %89, align 8 + %94 = add nsw i32 %93, -1 + store i32 %94, ptr %89, align 8 + %95 = icmp eq i32 %94, 0 + br i1 %95, label %101, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 + +96: ; preds = %88 + %97 = landingpad { ptr, i32 } cleanup - %100 = load i32, ptr %91, align 8 - %101 = add nsw i32 %100, -1 - store i32 %101, ptr %91, align 8 - %102 = icmp eq i32 %101, 0 - br i1 %102, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit - -103: ; preds = %.thread74 - %104 = load ptr, ptr %89, align 8 - %105 = getelementptr inbounds i8, ptr %104, i64 8 - %106 = load ptr, ptr %105, align 8 - tail call void %106(ptr noundef nonnull align 8 dereferenceable(205) %89) #16 + %98 = load i32, ptr %89, align 8 + %99 = add nsw i32 %98, -1 + store i32 %99, ptr %89, align 8 + %100 = icmp eq i32 %99, 0 + br i1 %100, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit + +101: ; preds = %.thread74 + %102 = load ptr, ptr %87, align 8 + %103 = getelementptr inbounds i8, ptr %102, i64 8 + %104 = load ptr, ptr %103, align 8 + tail call void %104(ptr noundef nonnull align 8 dereferenceable(205) %87) #16 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51 -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51: ; preds = %.lr.ph.preheader, %.preheader, %.thread74, %103 - %.577 = phi ptr [ %94, %.thread74 ], [ %94, %103 ], [ %.4117, %.preheader ], [ %scevgep153, %.lr.ph.preheader ] +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51: ; preds = %.lr.ph.preheader, %.preheader, %.thread74, %101 + %.577 = phi ptr [ %92, %.thread74 ], [ %92, %101 ], [ %.4117, %.preheader ], [ %scevgep153, %.lr.ph.preheader ] %indvars.iv.next155 = add nuw nsw i64 %indvars.iv154, 1 %exitcond158.not = icmp eq i64 %indvars.iv.next155, %wide.trip.count157 - br i1 %exitcond158.not, label %.loopexit, label %86, !llvm.loop !186 + br i1 %exitcond158.not, label %.loopexit, label %84, !llvm.loop !186 .loopexit: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit51, %._crit_edge - br i1 %.not.i.i.i.i.i, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit, label %107 + br i1 %.not.i.i.i.i.i, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit, label %105 -107: ; preds = %.loopexit - %108 = getelementptr inbounds i8, ptr %11, i64 8 - %109 = load i32, ptr %108, align 8 - %110 = add nsw i32 %109, -1 - store i32 %110, ptr %108, align 8 - %111 = icmp eq i32 %110, 0 - br i1 %111, label %112, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit +105: ; preds = %.loopexit + %106 = getelementptr inbounds i8, ptr %11, i64 8 + %107 = load i32, ptr %106, align 8 + %108 = add nsw i32 %107, -1 + store i32 %108, ptr %106, align 8 + %109 = icmp eq i32 %108, 0 + br i1 %109, label %110, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit -112: ; preds = %107 - %113 = load ptr, ptr %11, align 8 - %114 = getelementptr inbounds i8, ptr %113, i64 8 - %115 = load ptr, ptr %114, align 8 - tail call void %115(ptr noundef nonnull align 8 dereferenceable(80) %11) #16 +110: ; preds = %105 + %111 = load ptr, ptr %11, align 8 + %112 = getelementptr inbounds i8, ptr %111, i64 8 + %113 = load ptr, ptr %112, align 8 + tail call void %113(ptr noundef nonnull align 8 dereferenceable(80) %11) #16 br label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit -_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit: ; preds = %73, %.loopexit, %107, %112 +_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit: ; preds = %71, %.loopexit, %105, %110 ret void -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split: ; preds = %98, %.split - %.lcssa162.sink170 = phi ptr [ %.us-phi, %.split ], [ %89, %98 ] - %.pn.ph = phi { ptr, i32 } [ %.us-phi96, %.split ], [ %99, %98 ] - %116 = load ptr, ptr %.lcssa162.sink170, align 8 - %117 = getelementptr inbounds i8, ptr %116, i64 8 - %118 = load ptr, ptr %117, align 8 - tail call void %118(ptr noundef nonnull align 8 dereferenceable(205) %.lcssa162.sink170) #16 +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split: ; preds = %96, %.split + %.lcssa163.sink171 = phi ptr [ %.us-phi, %.split ], [ %87, %96 ] + %.pn.ph = phi { ptr, i32 } [ %.us-phi96, %.split ], [ %97, %96 ] + %114 = load ptr, ptr %.lcssa163.sink171, align 8 + %115 = getelementptr inbounds i8, ptr %114, i64 8 + %116 = load ptr, ptr %115, align 8 + tail call void %116(ptr noundef nonnull align 8 dereferenceable(205) %.lcssa163.sink171) #16 br label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit -_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, %98, %.split - %.pn = phi { ptr, i32 } [ %.us-phi96, %.split ], [ %99, %98 ], [ %.pn.ph, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split ] +_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split, %96, %.split + %.pn = phi { ptr, i32 } [ %.us-phi96, %.split ], [ %97, %96 ], [ %.pn.ph, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.sink.split ] br i1 %.not.i.i.i.i.i, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54, label %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit %.phi.trans.insert = getelementptr inbounds i8, ptr %11, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 - %119 = add nsw i32 %.pre, -1 - br label %120 - -120: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread - %121 = phi i32 [ %14, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread ], [ %119, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge ] - %.pn79 = phi { ptr, i32 } [ %60, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread ], [ %.pn, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge ] - %122 = getelementptr inbounds i8, ptr %11, i64 8 - store i32 %121, ptr %122, align 8 - %123 = icmp eq i32 %121, 0 - br i1 %123, label %124, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54 - -124: ; preds = %120 - %125 = load ptr, ptr %11, align 8 - %126 = getelementptr inbounds i8, ptr %125, i64 8 - %127 = load ptr, ptr %126, align 8 - tail call void %127(ptr noundef nonnull align 8 dereferenceable(80) %11) #16 + %117 = add nsw i32 %.pre, -1 + br label %118 + +118: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread + %119 = phi i32 [ %14, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread ], [ %117, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge ] + %.pn79 = phi { ptr, i32 } [ %58, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.thread ], [ %.pn, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit._crit_edge ] + %120 = getelementptr inbounds i8, ptr %11, i64 8 + store i32 %119, ptr %120, align 8 + %121 = icmp eq i32 %119, 0 + br i1 %121, label %122, label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54 + +122: ; preds = %118 + %123 = load ptr, ptr %11, align 8 + %124 = getelementptr inbounds i8, ptr %123, i64 8 + %125 = load ptr, ptr %124, align 8 + tail call void %125(ptr noundef nonnull align 8 dereferenceable(80) %11) #16 br label %_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54 -_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit, %120, %124 - %.pn80 = phi { ptr, i32 } [ %.pn, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit ], [ %.pn79, %120 ], [ %.pn79, %124 ] +_ZN5Ipopt8SmartPtrIKNS_15ExpansionMatrixEED2Ev.exit54: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit, %118, %122 + %.pn80 = phi { ptr, i32 } [ %.pn, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit ], [ %.pn79, %118 ], [ %.pn79, %122 ] resume { ptr, i32 } %.pn80 } diff --git a/bench/ipopt/optimized/SensIndexSchurData.ll b/bench/ipopt/optimized/SensIndexSchurData.ll index b7cd2d323ed..578c084bd7e 100644 --- a/bench/ipopt/optimized/SensIndexSchurData.ll +++ b/bench/ipopt/optimized/SensIndexSchurData.ll @@ -1158,9 +1158,9 @@ define void @_ZNK5Ipopt14IndexSchurData6GetRowEiRNS_14IteratesVectorE(ptr nocapt %5 = load ptr, ptr %4, align 8 %6 = getelementptr inbounds i8, ptr %5, i64 16 %7 = load i32, ptr %6, align 8 - %8 = sext i32 %7 to i64 + %8 = zext i32 %7 to i64 %9 = icmp slt i32 %7, 0 - %10 = shl nsw i64 %8, 2 + %10 = shl nuw nsw i64 %8, 2 %11 = select i1 %9, i64 -1, i64 %10 %12 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %11) #19 %13 = getelementptr inbounds i8, ptr %2, i64 208 @@ -1203,7 +1203,6 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i: ; preds = %27, %_ZNK5Ipopt14Co .lr.ph.i: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i %32 = getelementptr inbounds i8, ptr %2, i64 232 - %wide.trip.count.i = zext nneg i32 %7 to i64 br label %33 33: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i, %.lr.ph.i @@ -1248,7 +1247,7 @@ _ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20.i: ; preds = %_ZNK5Ipopt1 _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i: ; preds = %52, %_ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20.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 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %8 br i1 %exitcond.not.i, label %_ZNK5Ipopt14IndexSchurData16GetVectorLengthsERKNS_14IteratesVectorE.exit, label %33, !llvm.loop !16 _ZNK5Ipopt14IndexSchurData16GetVectorLengthsERKNS_14IteratesVectorE.exit: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i @@ -1433,9 +1432,9 @@ define noundef nonnull ptr @_ZNK5Ipopt14IndexSchurData16GetVectorLengthsERKNS_14 %4 = load ptr, ptr %3, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 16 %6 = load i32, ptr %5, align 8 - %7 = sext i32 %6 to i64 + %7 = zext i32 %6 to i64 %8 = icmp slt i32 %6, 0 - %9 = shl nsw i64 %7, 2 + %9 = shl nuw nsw i64 %7, 2 %10 = select i1 %8, i64 -1, i64 %9 %11 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %10) #19 %12 = getelementptr inbounds i8, ptr %1, i64 208 @@ -1478,7 +1477,6 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit: ; preds = %_ZNK5Ipopt14Compoun .lr.ph: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit %31 = getelementptr inbounds i8, ptr %1, i64 232 - %wide.trip.count = zext nneg i32 %6 to i64 br label %32 32: ; preds = %.lr.ph, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27 @@ -1523,7 +1521,7 @@ _ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20: ; preds = %_ZNK5Ipopt14C _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27: ; preds = %_ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20, %51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next, %7 br i1 %exitcond.not, label %._crit_edge, label %32, !llvm.loop !16 ._crit_edge: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit @@ -1749,9 +1747,9 @@ _ZN5Ipopt11DenseVector6ValuesEv.exit: ; preds = %15, %_ZNK5Ipopt16De %32 = load ptr, ptr %31, align 8 %33 = getelementptr inbounds i8, ptr %32, i64 16 %34 = load i32, ptr %33, align 8 - %35 = sext i32 %34 to i64 + %35 = zext i32 %34 to i64 %36 = icmp slt i32 %34, 0 - %37 = shl nsw i64 %35, 2 + %37 = shl nuw nsw i64 %35, 2 %38 = select i1 %36, i64 -1, i64 %37 %39 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %38) #19 %40 = getelementptr inbounds i8, ptr %1, i64 208 @@ -1794,7 +1792,6 @@ _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i: ; preds = %54, %_ZNK5Ipopt14Co .lr.ph.i: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i %59 = getelementptr inbounds i8, ptr %1, i64 232 - %wide.trip.count.i = zext nneg i32 %34 to i64 br label %60 60: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i, %.lr.ph.i @@ -1839,7 +1836,7 @@ _ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20.i: ; preds = %_ZNK5Ipopt1 _ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i: ; preds = %79, %_ZNK5Ipopt14CompoundVector9ConstCompEi.exit.thread.i20.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 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %35 br i1 %exitcond.not.i, label %_ZNK5Ipopt14IndexSchurData16GetVectorLengthsERKNS_14IteratesVectorE.exit, label %60, !llvm.loop !16 _ZNK5Ipopt14IndexSchurData16GetVectorLengthsERKNS_14IteratesVectorE.exit: ; preds = %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit27.i, %_ZN5Ipopt8SmartPtrIKNS_6VectorEED2Ev.exit.i diff --git a/bench/llvm/optimized/ASTReader.cpp.ll b/bench/llvm/optimized/ASTReader.cpp.ll index 08103be6d0f..7289a2307be 100644 --- a/bench/llvm/optimized/ASTReader.cpp.ll +++ b/bench/llvm/optimized/ASTReader.cpp.ll @@ -51168,7 +51168,7 @@ _ZN4llvm23SmallVectorTemplateBaseIN5clang12GlobalDeclIDELb1EE9push_backES2_.exit 701: ; preds = %700, %697 %702 = and i64 %695, 4294967295 %703 = icmp ult i64 %695, 4294967296 - %704 = add nsw i64 %702, -4040 + %704 = add nsw i64 %695, -4040 %spec.select.i = select i1 %703, i64 %704, i64 %702 br i1 %703, label %712, label %705 @@ -51255,7 +51255,7 @@ _ZN4llvm23SmallVectorTemplateBaseImLb1EE9push_backEm.exit: ; preds = %_ZNK5clang 745: ; preds = %744, %741 %746 = and i64 %739, 4294967295 %747 = icmp ult i64 %739, 4294967296 - %748 = add nsw i64 %746, -4040 + %748 = add nsw i64 %739, -4040 %spec.select.i493 = select i1 %747, i64 %748, i64 %746 br i1 %747, label %756, label %749 @@ -57057,7 +57057,7 @@ define dso_local noundef i64 @_ZNK5clang9ASTReader15getGlobalTypeIDERNS_13serial 10: ; preds = %9, %5 %11 = and i64 %2, 4294967295 %12 = icmp ult i64 %2, 4294967296 - %13 = add nsw i64 %11, -4040 + %13 = add nsw i64 %2, -4040 %spec.select = select i1 %12, i64 %13, i64 %11 br i1 %12, label %22, label %14 @@ -73402,7 +73402,7 @@ _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i17: ; 121: ; preds = %120, %116 %122 = and i64 %114, 4294967295 %123 = icmp ult i64 %114, 4294967296 - %124 = add nsw i64 %122, -4040 + %124 = add nsw i64 %114, -4040 %spec.select.i.i = select i1 %123, i64 %124, i64 %122 br i1 %123, label %133, label %125 @@ -77394,7 +77394,7 @@ _ZN5clang13TypeLocReader18readSourceLocationEv.exit16: ; preds = %_ZNK5clang9AST 200: ; preds = %199, %195 %201 = and i64 %193, 4294967295 %202 = icmp ult i64 %193, 4294967296 - %203 = add nsw i64 %201, -4040 + %203 = add nsw i64 %193, -4040 %spec.select.i.i.i = select i1 %202, i64 %203, i64 %201 br i1 %202, label %212, label %204 @@ -78076,7 +78076,7 @@ _ZN5clang13TypeLocReader18readSourceLocationEv.exit16: ; preds = %_ZNK5clang9AST 200: ; preds = %199, %195 %201 = and i64 %193, 4294967295 %202 = icmp ult i64 %193, 4294967296 - %203 = add nsw i64 %201, -4040 + %203 = add nsw i64 %193, -4040 %spec.select.i.i.i = select i1 %202, i64 %203, i64 %201 br i1 %202, label %212, label %204 @@ -82103,7 +82103,7 @@ _ZN5clang13TypeLocReader18readSourceLocationEv.exit20: ; preds = %_ZNK5clang9AST 164: ; preds = %163, %159 %165 = and i64 %157, 4294967295 %166 = icmp ult i64 %157, 4294967296 - %167 = add nsw i64 %165, -4040 + %167 = add nsw i64 %157, -4040 %spec.select.i.i.i = select i1 %166, i64 %167, i64 %165 br i1 %166, label %176, label %168 @@ -83522,7 +83522,7 @@ define dso_local noundef ptr @_ZN5clang15ASTRecordReader18readTypeSourceInfoEv(p 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -83617,7 +83617,7 @@ define dso_local i64 @_ZN5clang9ASTReader12getLocalTypeERNS_13serialization10Mod 10: ; preds = %9, %5 %11 = and i64 %2, 4294967295 %12 = icmp ult i64 %2, 4294967296 - %13 = add nsw i64 %11, -4040 + %13 = add nsw i64 %2, -4040 %spec.select.i = select i1 %12, i64 %13, i64 %11 br i1 %12, label %22, label %14 @@ -83760,7 +83760,7 @@ define linkonce_odr hidden void @_ZN5clang13serialization15BasicReaderBaseINS_15 40: ; preds = %39, %35 %41 = and i64 %33, 4294967295 %42 = icmp ult i64 %33, 4294967296 - %43 = add nsw i64 %41, -4040 + %43 = add nsw i64 %33, -4040 %spec.select.i.i = select i1 %42, i64 %43, i64 %41 br i1 %42, label %52, label %44 @@ -83839,7 +83839,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %20, %_ZN5clang9ASTR 91: ; preds = %90, %86 %92 = and i64 %84, 4294967295 %93 = icmp ult i64 %84, 4294967296 - %94 = add nsw i64 %92, -4040 + %94 = add nsw i64 %84, -4040 %spec.select.i.i67 = select i1 %93, i64 %94, i64 %92 br i1 %93, label %103, label %95 @@ -83914,7 +83914,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit60: ; preds = %67, %_ZN5clang9ASTR 138: ; preds = %137, %133 %139 = and i64 %131, 4294967295 %140 = icmp ult i64 %131, 4294967296 - %141 = add nsw i64 %139, -4040 + %141 = add nsw i64 %131, -4040 %spec.select.i.i70 = select i1 %140, i64 %141, i64 %139 br i1 %140, label %150, label %142 @@ -84009,7 +84009,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit62: ; preds = %118, %_ZN5clang9AST 197: ; preds = %196, %192 %198 = and i64 %190, 4294967295 %199 = icmp ult i64 %190, 4294967296 - %200 = add nsw i64 %198, -4040 + %200 = add nsw i64 %190, -4040 %spec.select.i.i73 = select i1 %199, i64 %200, i64 %198 br i1 %199, label %209, label %201 @@ -84097,7 +84097,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit64: ; preds = %165, %_ZN5clang9AST 251: ; preds = %250, %246 %252 = and i64 %244, 4294967295 %253 = icmp ult i64 %244, 4294967296 - %254 = add nsw i64 %252, -4040 + %254 = add nsw i64 %244, -4040 %spec.select.i.i76 = select i1 %253, i64 %254, i64 %252 br i1 %253, label %263, label %255 @@ -95985,7 +95985,7 @@ _ZN5clang15ASTRecordReader14readIdentifierEv.exit: ; preds = %12, %37 73: ; preds = %72, %68 %74 = and i64 %66, 4294967295 %75 = icmp ult i64 %66, 4294967296 - %76 = add nsw i64 %74, -4040 + %76 = add nsw i64 %66, -4040 %spec.select.i.i = select i1 %75, i64 %76, i64 %74 br i1 %75, label %85, label %77 @@ -96059,7 +96059,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %53, %_ZN5clang9ASTR 121: ; preds = %120, %116 %122 = and i64 %114, 4294967295 %123 = icmp ult i64 %114, 4294967296 - %124 = add nsw i64 %122, -4040 + %124 = add nsw i64 %114, -4040 %spec.select.i.i47 = select i1 %123, i64 %124, i64 %122 br i1 %123, label %133, label %125 @@ -96133,7 +96133,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit44: ; preds = %101, %_ZN5clang9AST 169: ; preds = %168, %164 %170 = and i64 %162, 4294967295 %171 = icmp ult i64 %162, 4294967296 - %172 = add nsw i64 %170, -4040 + %172 = add nsw i64 %162, -4040 %spec.select.i.i50 = select i1 %171, i64 %172, i64 %170 br i1 %171, label %181, label %173 @@ -139732,7 +139732,7 @@ _ZNSt8optionalIN5clang8QualTypeEE7emplaceIJS1_EEENSt9enable_ifIX18is_constructib 505: ; preds = %504, %500 %506 = and i64 %498, 4294967295 %507 = icmp ult i64 %498, 4294967296 - %508 = add nsw i64 %506, -4040 + %508 = add nsw i64 %498, -4040 %spec.select.i.i = select i1 %507, i64 %508, i64 %506 br i1 %507, label %517, label %509 @@ -140529,7 +140529,7 @@ define linkonce_odr hidden void @_ZN5clang13serialization21DataStreamBasicReader 27: ; preds = %26, %22 %28 = and i64 %20, 4294967295 %29 = icmp ult i64 %20, 4294967296 - %30 = add nsw i64 %28, -4040 + %30 = add nsw i64 %20, -4040 %spec.select.i.i23 = select i1 %29, i64 %30, i64 %28 br i1 %29, label %39, label %31 @@ -141273,7 +141273,7 @@ _ZN5clang15ASTRecordReader14readIdentifierEv.exit: ; preds = %22, %45 83: ; preds = %82, %78 %84 = and i64 %76, 4294967295 %85 = icmp ult i64 %76, 4294967296 - %86 = add nsw i64 %84, -4040 + %86 = add nsw i64 %76, -4040 %spec.select.i.i = select i1 %85, i64 %86, i64 %84 br i1 %85, label %95, label %87 @@ -150205,7 +150205,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -150272,7 +150272,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %1, %_ZN5clang9ASTRe 69: ; preds = %68, %64 %70 = and i64 %62, 4294967295 %71 = icmp ult i64 %62, 4294967296 - %72 = add nsw i64 %70, -4040 + %72 = add nsw i64 %62, -4040 %spec.select.i.i8 = select i1 %71, i64 %72, i64 %70 br i1 %71, label %81, label %73 @@ -150346,7 +150346,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -150429,7 +150429,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 34: ; preds = %33, %29 %35 = and i64 %27, 4294967295 %36 = icmp ult i64 %27, 4294967296 - %37 = add nsw i64 %35, -4040 + %37 = add nsw i64 %27, -4040 %spec.select.i.i = select i1 %36, i64 %37, i64 %35 br i1 %36, label %46, label %38 @@ -150550,7 +150550,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 34: ; preds = %33, %29 %35 = and i64 %27, 4294967295 %36 = icmp ult i64 %27, 4294967296 - %37 = add nsw i64 %35, -4040 + %37 = add nsw i64 %27, -4040 %spec.select.i.i = select i1 %36, i64 %37, i64 %35 br i1 %36, label %46, label %38 @@ -150751,7 +150751,7 @@ _ZNK5clang9ASTReader30ReadUntranslatedSourceLocationEmPNS_22SourceLocationSequen 88: ; preds = %87, %83 %89 = and i64 %81, 4294967295 %90 = icmp ult i64 %81, 4294967296 - %91 = add nsw i64 %89, -4040 + %91 = add nsw i64 %81, -4040 %spec.select.i.i = select i1 %90, i64 %91, i64 %89 br i1 %90, label %100, label %92 @@ -150864,7 +150864,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151049,7 +151049,7 @@ _ZNK5clang9ASTReader30ReadUntranslatedSourceLocationEmPNS_22SourceLocationSequen 88: ; preds = %87, %83 %89 = and i64 %81, 4294967295 %90 = icmp ult i64 %81, 4294967296 - %91 = add nsw i64 %89, -4040 + %91 = add nsw i64 %81, -4040 %spec.select.i.i = select i1 %90, i64 %91, i64 %89 br i1 %90, label %100, label %92 @@ -151162,7 +151162,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151236,7 +151236,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151303,7 +151303,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %1, %_ZN5clang9ASTRe 69: ; preds = %68, %64 %70 = and i64 %62, 4294967295 %71 = icmp ult i64 %62, 4294967296 - %72 = add nsw i64 %70, -4040 + %72 = add nsw i64 %62, -4040 %spec.select.i.i8 = select i1 %71, i64 %72, i64 %70 br i1 %71, label %81, label %73 @@ -151390,7 +151390,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 28: ; preds = %27, %23 %29 = and i64 %21, 4294967295 %30 = icmp ult i64 %21, 4294967296 - %31 = add nsw i64 %29, -4040 + %31 = add nsw i64 %21, -4040 %spec.select.i.i = select i1 %30, i64 %31, i64 %29 br i1 %30, label %40, label %32 @@ -151493,7 +151493,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151569,7 +151569,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 28: ; preds = %27, %23 %29 = and i64 %21, 4294967295 %30 = icmp ult i64 %21, 4294967296 - %31 = add nsw i64 %29, -4040 + %31 = add nsw i64 %21, -4040 %spec.select.i.i = select i1 %30, i64 %31, i64 %29 br i1 %30, label %40, label %32 @@ -151713,7 +151713,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151787,7 +151787,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -151870,7 +151870,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 29: ; preds = %28, %24 %30 = and i64 %22, 4294967295 %31 = icmp ult i64 %22, 4294967296 - %32 = add nsw i64 %30, -4040 + %32 = add nsw i64 %22, -4040 %spec.select.i.i.i = select i1 %31, i64 %32, i64 %30 br i1 %31, label %41, label %33 @@ -152038,7 +152038,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 31: ; preds = %30, %26 %32 = and i64 %24, 4294967295 %33 = icmp ult i64 %24, 4294967296 - %34 = add nsw i64 %32, -4040 + %34 = add nsw i64 %24, -4040 %spec.select.i.i = select i1 %33, i64 %34, i64 %32 br i1 %33, label %43, label %35 @@ -152124,7 +152124,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -152343,7 +152343,7 @@ _ZN5clang15ASTRecordReader14readIdentifierEv.exit: ; preds = %1, %43 75: ; preds = %74, %70 %76 = and i64 %68, 4294967295 %77 = icmp ult i64 %68, 4294967296 - %78 = add nsw i64 %76, -4040 + %78 = add nsw i64 %68, -4040 %spec.select.i.i.i10 = select i1 %77, i64 %78, i64 %76 br i1 %77, label %87, label %79 @@ -152428,7 +152428,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -152682,7 +152682,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -152832,7 +152832,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 37: ; preds = %36, %32 %38 = and i64 %30, 4294967295 %39 = icmp ult i64 %30, 4294967296 - %40 = add nsw i64 %38, -4040 + %40 = add nsw i64 %30, -4040 %spec.select.i.i10 = select i1 %39, i64 %40, i64 %38 br i1 %39, label %49, label %41 @@ -152916,7 +152916,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 27: ; preds = %26, %22 %28 = and i64 %20, 4294967295 %29 = icmp ult i64 %20, 4294967296 - %30 = add nsw i64 %28, -4040 + %30 = add nsw i64 %20, -4040 %spec.select.i.i = select i1 %29, i64 %30, i64 %28 br i1 %29, label %39, label %31 @@ -153176,7 +153176,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 97: ; preds = %96, %92 %98 = and i64 %90, 4294967295 %99 = icmp ult i64 %90, 4294967296 - %100 = add nsw i64 %98, -4040 + %100 = add nsw i64 %90, -4040 %spec.select.i.i = select i1 %99, i64 %100, i64 %98 br i1 %99, label %109, label %101 @@ -153458,7 +153458,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 45: ; preds = %44, %40 %46 = and i64 %38, 4294967295 %47 = icmp ult i64 %38, 4294967296 - %48 = add nsw i64 %46, -4040 + %48 = add nsw i64 %38, -4040 %spec.select.i.i = select i1 %47, i64 %48, i64 %46 br i1 %47, label %57, label %49 @@ -153525,7 +153525,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %1, %_ZN5clang9ASTRe 88: ; preds = %87, %83 %89 = and i64 %81, 4294967295 %90 = icmp ult i64 %81, 4294967296 - %91 = add nsw i64 %89, -4040 + %91 = add nsw i64 %81, -4040 %spec.select.i.i9 = select i1 %90, i64 %91, i64 %89 br i1 %90, label %100, label %92 @@ -153613,7 +153613,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 34: ; preds = %33, %29 %35 = and i64 %27, 4294967295 %36 = icmp ult i64 %27, 4294967296 - %37 = add nsw i64 %35, -4040 + %37 = add nsw i64 %27, -4040 %spec.select.i.i = select i1 %36, i64 %37, i64 %35 br i1 %36, label %46, label %38 @@ -153785,7 +153785,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -153935,7 +153935,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 44: ; preds = %43, %39 %45 = and i64 %37, 4294967295 %46 = icmp ult i64 %37, 4294967296 - %47 = add nsw i64 %45, -4040 + %47 = add nsw i64 %37, -4040 %spec.select.i.i = select i1 %46, i64 %47, i64 %45 br i1 %46, label %56, label %48 @@ -154064,7 +154064,7 @@ _ZNK5clang9ASTReader30ReadUntranslatedSourceLocationEmPNS_22SourceLocationSequen 66: ; preds = %65, %61 %67 = and i64 %59, 4294967295 %68 = icmp ult i64 %59, 4294967296 - %69 = add nsw i64 %67, -4040 + %69 = add nsw i64 %59, -4040 %spec.select.i.i = select i1 %68, i64 %69, i64 %67 br i1 %68, label %78, label %70 @@ -154144,7 +154144,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154209,7 +154209,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %1, %_ZN5clang9ASTRe 68: ; preds = %67, %63 %69 = and i64 %61, 4294967295 %70 = icmp ult i64 %61, 4294967296 - %71 = add nsw i64 %69, -4040 + %71 = add nsw i64 %61, -4040 %spec.select.i.i6 = select i1 %70, i64 %71, i64 %69 br i1 %70, label %80, label %72 @@ -154282,7 +154282,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154358,7 +154358,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 28: ; preds = %27, %23 %29 = and i64 %21, 4294967295 %30 = icmp ult i64 %21, 4294967296 - %31 = add nsw i64 %29, -4040 + %31 = add nsw i64 %21, -4040 %spec.select.i.i = select i1 %30, i64 %31, i64 %29 br i1 %30, label %40, label %32 @@ -154526,7 +154526,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154616,7 +154616,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154696,7 +154696,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154770,7 +154770,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154855,7 +154855,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -154939,7 +154939,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 35: ; preds = %34, %30 %36 = and i64 %28, 4294967295 %37 = icmp ult i64 %28, 4294967296 - %38 = add nsw i64 %36, -4040 + %38 = add nsw i64 %28, -4040 %spec.select.i.i = select i1 %37, i64 %38, i64 %36 br i1 %37, label %47, label %39 @@ -155014,7 +155014,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -155128,7 +155128,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -155369,7 +155369,7 @@ _ZN5clang13serialization21DataStreamBasicReaderINS_15ASTRecordReaderEE9readArray 57: ; preds = %56, %52 %58 = and i64 %50, 4294967295 %59 = icmp ult i64 %50, 4294967296 - %60 = add nsw i64 %58, -4040 + %60 = add nsw i64 %50, -4040 %spec.select.i.i.i = select i1 %59, i64 %60, i64 %58 br i1 %59, label %69, label %61 @@ -155546,7 +155546,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -155639,7 +155639,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 34: ; preds = %33, %29 %35 = and i64 %27, 4294967295 %36 = icmp ult i64 %27, 4294967296 - %37 = add nsw i64 %35, -4040 + %37 = add nsw i64 %27, -4040 %spec.select.i.i = select i1 %36, i64 %37, i64 %35 br i1 %36, label %46, label %38 @@ -155713,7 +155713,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -155780,7 +155780,7 @@ _ZN5clang15ASTRecordReader8readTypeEv.exit: ; preds = %1, %_ZN5clang9ASTRe 69: ; preds = %68, %64 %70 = and i64 %62, 4294967295 %71 = icmp ult i64 %62, 4294967296 - %72 = add nsw i64 %70, -4040 + %72 = add nsw i64 %62, -4040 %spec.select.i.i8 = select i1 %71, i64 %72, i64 %70 br i1 %71, label %81, label %73 @@ -155888,7 +155888,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 34: ; preds = %33, %29 %35 = and i64 %27, 4294967295 %36 = icmp ult i64 %27, 4294967296 - %37 = add nsw i64 %35, -4040 + %37 = add nsw i64 %27, -4040 %spec.select.i.i = select i1 %36, i64 %37, i64 %35 br i1 %36, label %46, label %38 @@ -155962,7 +155962,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -156058,7 +156058,7 @@ define linkonce_odr hidden i64 @_ZN5clang13serialization18AbstractTypeReaderINS_ 26: ; preds = %25, %21 %27 = and i64 %19, 4294967295 %28 = icmp ult i64 %19, 4294967296 - %29 = add nsw i64 %27, -4040 + %29 = add nsw i64 %19, -4040 %spec.select.i.i = select i1 %28, i64 %29, i64 %27 br i1 %28, label %38, label %30 @@ -156376,7 +156376,7 @@ _ZN4llvm15SmallVectorImplIN5clang8QualTypeEE7reserveEm.exit: ; preds = %2, %15 39: ; preds = %38, %34 %40 = and i64 %32, 4294967295 %41 = icmp ult i64 %32, 4294967296 - %42 = add nsw i64 %40, -4040 + %42 = add nsw i64 %32, -4040 %spec.select.i.i = select i1 %41, i64 %42, i64 %40 br i1 %41, label %51, label %43 diff --git a/bench/llvm/optimized/DbiStreamBuilder.cpp.ll b/bench/llvm/optimized/DbiStreamBuilder.cpp.ll index 9b774c24795..370f3f8e97f 100644 --- a/bench/llvm/optimized/DbiStreamBuilder.cpp.ll +++ b/bench/llvm/optimized/DbiStreamBuilder.cpp.ll @@ -3597,46 +3597,42 @@ define dso_local void @_ZN4llvm3pdb16DbiStreamBuilder16createSectionMapENS_8Arra br i1 %.not19, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph - %.020 = phi ptr [ %22, %.lr.ph ], [ %1, %3 ] - %6 = phi i32 [ %21, %.lr.ph ], [ 0, %3 ] + %.020 = phi ptr [ %21, %.lr.ph ], [ %1, %3 ] + %6 = phi i32 [ %20, %.lr.ph ], [ 0, %3 ] %7 = call fastcc noundef nonnull align 1 dereferenceable(20) ptr @"_ZZN4llvm3pdb16DbiStreamBuilder16createSectionMapENS_8ArrayRefINS_6object12coff_sectionEEEENK3$_0clEv"(ptr nonnull %0, ptr nonnull %4) %8 = getelementptr inbounds nuw i8, ptr %.020, i64 36 call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 1) ] %.0.copyload.i.i.i = load i32, ptr %8, align 1 %9 = lshr i32 %.0.copyload.i.i.i, 30 %10 = trunc nuw nsw i32 %9 to i16 - %spec.select.i = and i16 %10, 1 - %11 = or i16 %10, 2 - %.not1013.i = icmp slt i32 %.0.copyload.i.i.i, 0 - %.1.i = select i1 %.not1013.i, i16 %11, i16 %spec.select.i - %12 = lshr i32 %.0.copyload.i.i.i, 27 - %13 = trunc nuw nsw i32 %12 to i16 - %14 = and i16 %13, 4 - %.2.i = or disjoint i16 %.1.i, %14 - %15 = and i32 %.0.copyload.i.i.i, 131072 - %.not12.i = icmp eq i32 %15, 0 - %16 = or disjoint i16 %.2.i, 8 - %.3.i = select i1 %.not12.i, i16 %16, i16 %.2.i - %17 = or i16 %.3.i, 256 + %11 = lshr i32 %.0.copyload.i.i.i, 27 + %12 = trunc nuw nsw i32 %11 to i16 + %13 = and i16 %12, 4 + %.2.i = or disjoint i16 %13, %10 + %14 = and i32 %.0.copyload.i.i.i, 131072 + %.not12.i = icmp eq i32 %14, 0 + %15 = or disjoint i16 %.2.i, 8 + %.3.i = select i1 %.not12.i, i16 %15, i16 %.2.i + %16 = or disjoint i16 %.3.i, 256 call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 1) ] - store i16 %17, ptr %7, align 1 - %18 = getelementptr inbounds nuw i8, ptr %.020, i64 8 - %19 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %20 = load i32, ptr %18, align 1 - store i32 %20, ptr %19, align 1 - %21 = add nuw nsw i32 %6, 1 - store i32 %21, ptr %4, align 4 - %22 = getelementptr inbounds i8, ptr %.020, i64 40 - %.not = icmp eq ptr %22, %5 + store i16 %16, ptr %7, align 1 + %17 = getelementptr inbounds nuw i8, ptr %.020, i64 8 + %18 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %19 = load i32, ptr %17, align 1 + store i32 %19, ptr %18, align 1 + %20 = add nuw nsw i32 %6, 1 + store i32 %20, ptr %4, align 4 + %21 = getelementptr inbounds i8, ptr %.020, i64 40 + %.not = icmp eq ptr %21, %5 br i1 %.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %3 - %23 = call fastcc noundef nonnull align 1 dereferenceable(20) ptr @"_ZZN4llvm3pdb16DbiStreamBuilder16createSectionMapENS_8ArrayRefINS_6object12coff_sectionEEEENK3$_0clEv"(ptr nonnull %0, ptr nonnull %4) + %22 = call fastcc noundef nonnull align 1 dereferenceable(20) ptr @"_ZZN4llvm3pdb16DbiStreamBuilder16createSectionMapENS_8ArrayRefINS_6object12coff_sectionEEEENK3$_0clEv"(ptr nonnull %0, ptr nonnull %4) + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 1) ] + store i16 520, ptr %22, align 1 + %23 = getelementptr inbounds nuw i8, ptr %22, i64 16 call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 1) ] - store i16 520, ptr %23, align 1 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 1) ] - store i32 -1, ptr %24, align 1 + store i32 -1, ptr %23, align 1 ret void } diff --git a/bench/llvm/optimized/Metadata.cpp.ll b/bench/llvm/optimized/Metadata.cpp.ll index 00c5b6d1aef..9c1868fa3d6 100644 --- a/bench/llvm/optimized/Metadata.cpp.ll +++ b/bench/llvm/optimized/Metadata.cpp.ll @@ -5925,19 +5925,16 @@ define dso_local noundef nonnull ptr @_ZN4llvm6MDNodenwEmmNS_8Metadata11StorageT %.not.i = icmp eq i32 %2, 0 %4 = select i1 %.not.i, i64 0, i64 2 %.sroa.speculated.i.i = tail call i64 @llvm.umax.i64(i64 %1, i64 %4) - %5 = shl i64 %.sroa.speculated.i.i, 3 - %6 = and i64 %5, 34359738360 %.inv.i = icmp ult i64 %1, 16 - %7 = add nuw nsw i64 %6, 15 - %8 = and i64 %7, 68719476728 - %9 = add nuw nsw i64 %8, 8 - %10 = select i1 %.inv.i, i64 %9, i64 32 - %11 = add i64 %10, %0 - %12 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %11) #26 - %13 = getelementptr inbounds i8, ptr %12, i64 %10 - %14 = getelementptr inbounds i8, ptr %13, i64 -16 - tail call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %14, i64 noundef %1, i32 noundef %2) #23 - ret ptr %13 + %5 = shl i64 %.sroa.speculated.i.i, 3 + %6 = add i64 %5, 16 + %7 = select i1 %.inv.i, i64 %6, i64 32 + %8 = add i64 %7, %0 + %9 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %8) #26 + %10 = getelementptr inbounds i8, ptr %9, i64 %7 + %11 = getelementptr inbounds i8, ptr %10, i64 -16 + tail call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %11, i64 noundef %1, i32 noundef %2) #23 + ret ptr %10 } ; Function Attrs: mustprogress nounwind uwtable @@ -6916,35 +6913,32 @@ _ZNK4llvm6MDNode10getContextEv.exit: ; preds = %_ZNK4llvm6MDNode8op %28 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #23 call void @llvm.experimental.noalias.scope.decl(metadata !113) %.sroa.speculated.i.i.i.i.i = call i64 @llvm.umax.i64(i64 %28, i64 2) - %29 = shl i64 %.sroa.speculated.i.i.i.i.i, 3 - %30 = and i64 %29, 34359738360 %.inv.i.i.i.i = icmp ult i64 %28, 16 - %31 = add nuw nsw i64 %30, 15 - %32 = and i64 %31, 68719476728 - %33 = add nuw nsw i64 %32, 8 - %34 = select i1 %.inv.i.i.i.i, i64 %33, i64 32 - %35 = add nuw nsw i64 %34, 16 - %36 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %35) #26, !noalias !113 - %37 = getelementptr inbounds i8, ptr %36, i64 %34 - %38 = getelementptr inbounds i8, ptr %37, i64 -16 - call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %38, i64 noundef %28, i32 noundef 2) #23, !noalias !113 + %29 = shl i64 %.sroa.speculated.i.i.i.i.i, 3 + %30 = add i64 %29, 16 + %31 = select i1 %.inv.i.i.i.i, i64 %30, i64 32 + %32 = add i64 %31, 16 + %33 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %32) #26, !noalias !113 + %34 = getelementptr inbounds i8, ptr %33, i64 %31 + %35 = getelementptr inbounds i8, ptr %34, i64 -16 + call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %35, i64 noundef %28, i32 noundef 2) #23, !noalias !113 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !113 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false), !noalias !113 - call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(8) %.0.i.i, i32 noundef 5, i32 noundef 2, ptr %27, i64 %28, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %3), !noalias !113 - %39 = getelementptr inbounds nuw i8, ptr %37, i64 4 - store i32 0, ptr %39, align 4, !noalias !113 + call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %.0.i.i, i32 noundef 5, i32 noundef 2, ptr %27, i64 %28, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %3), !noalias !113 + %36 = getelementptr inbounds nuw i8, ptr %34, i64 4 + store i32 0, ptr %36, align 4, !noalias !113 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !113 - store ptr %37, ptr %0, align 8, !alias.scope !113 - %40 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #23 - %41 = load ptr, ptr %4, align 8 - %42 = icmp eq ptr %41, %25 - br i1 %42, label %_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit, label %43 - -43: ; preds = %_ZNK4llvm6MDNode10getContextEv.exit - call void @free(ptr noundef %41) #23 + store ptr %34, ptr %0, align 8, !alias.scope !113 + %37 = call noundef i64 @_ZNK4llvm15SmallVectorBaseIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #23 + %38 = load ptr, ptr %4, align 8 + %39 = icmp eq ptr %38, %25 + br i1 %39, label %_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit, label %40 + +40: ; preds = %_ZNK4llvm6MDNode10getContextEv.exit + call void @free(ptr noundef %38) #23 br label %_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit -_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit: ; preds = %_ZNK4llvm6MDNode10getContextEv.exit, %43 +_ZN4llvm11SmallVectorIPNS_8MetadataELj4EED2Ev.exit: ; preds = %_ZNK4llvm6MDNode10getContextEv.exit, %40 ret void } @@ -11367,42 +11361,41 @@ define dso_local void @_ZN4llvm6MDNode6HeaderC2EmNS_8Metadata11StorageTypeE(ptr %10 = select i1 %8, i64 2, i64 0 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %1, i64 %10) %11 = shl i64 %.sroa.speculated.i, 2 - %12 = and i64 %11, 60 - %13 = select i1 %5, i64 %12, i64 8 - %14 = or disjoint i64 %13, %9 - %15 = or disjoint i64 %14, %7 - br i1 %5, label %20, label %16 - -16: ; preds = %3 - %17 = and i64 %15, -963 - %18 = or disjoint i64 %17, 2 - store i64 %18, ptr %0, align 8 - %19 = getelementptr inbounds i8, ptr %0, i64 -16 - tail call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull %0, i64 noundef 0) #23 - tail call void @_ZN4llvm15SmallVectorImplINS_9MDOperandEE10resizeImplILb0EEEvm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %1) + %12 = select i1 %5, i64 %11, i64 8 + %13 = or disjoint i64 %12, %9 + %14 = or disjoint i64 %13, %7 + br i1 %5, label %19, label %15 + +15: ; preds = %3 + %16 = and i64 %14, -963 + %17 = or disjoint i64 %16, 2 + store i64 %17, ptr %0, align 8 + %18 = getelementptr inbounds i8, ptr %0, i64 -16 + tail call void @_ZN4llvm15SmallVectorBaseIjEC2EPvm(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull %0, i64 noundef 0) #23 + tail call void @_ZN4llvm15SmallVectorImplINS_9MDOperandEE10resizeImplILb0EEEvm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %1) br label %.loopexit -20: ; preds = %3 - %21 = shl nuw nsw i64 %1, 6 - %22 = and i64 %15, -963 - %23 = or disjoint i64 %22, %21 - store i64 %23, ptr %0, align 8 +19: ; preds = %3 + %20 = shl nuw nsw i64 %1, 6 + %21 = and i64 %14, -963 + %22 = or disjoint i64 %21, %20 + store i64 %22, ptr %0, align 8 %.not910 = icmp eq i64 %.sroa.speculated.i, 0 br i1 %.not910, label %.loopexit, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %20 - %24 = sub nsw i64 0, %.sroa.speculated.i - %25 = getelementptr inbounds %"class.llvm::MDOperand", ptr %0, i64 %24 +.lr.ph.preheader: ; preds = %19 + %23 = sub nsw i64 0, %.sroa.speculated.i + %24 = getelementptr inbounds %"class.llvm::MDOperand", ptr %0, i64 %23 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.011 = phi ptr [ %26, %.lr.ph ], [ %25, %.lr.ph.preheader ] - %26 = getelementptr inbounds i8, ptr %.011, i64 8 + %.011 = phi ptr [ %25, %.lr.ph ], [ %24, %.lr.ph.preheader ] + %25 = getelementptr inbounds i8, ptr %.011, i64 8 store ptr null, ptr %.011, align 8 - %.not9 = icmp eq ptr %26, %0 + %.not9 = icmp eq ptr %25, %0 br i1 %.not9, label %.loopexit, label %.lr.ph, !llvm.loop !191 -.loopexit: ; preds = %.lr.ph, %20, %16 +.loopexit: ; preds = %.lr.ph, %19, %15 ret void } @@ -19045,159 +19038,153 @@ define dso_local noundef ptr @_ZN4llvm7MDTuple7getImplERNS_11LLVMContextENS_8Arr %10 = alloca %"class.llvm::ArrayRef", align 8 %11 = alloca %"struct.llvm::MDNodeKeyImpl", align 8 %12 = icmp eq i32 %3, 0 - br i1 %12, label %25, label %.split14 + br i1 %12, label %22, label %.split14 .split14: ; preds = %5 %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %2, i64 2) - %13 = shl i64 %.sroa.speculated.i.i.i, 3 - %14 = and i64 %13, 34359738360 %.inv.i.i = icmp ult i64 %2, 16 - %15 = add nuw nsw i64 %14, 15 - %16 = and i64 %15, 68719476728 - %17 = add nuw nsw i64 %16, 8 - %18 = select i1 %.inv.i.i, i64 %17, i64 32 - %19 = add nuw nsw i64 %18, 16 - %20 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %19) #26 - %21 = getelementptr inbounds i8, ptr %20, i64 %18 - %22 = getelementptr inbounds i8, ptr %21, i64 -16 - tail call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %22, i64 noundef %2, i32 noundef %3) #23 + %13 = shl i64 %.sroa.speculated.i.i.i, 3 + %14 = add i64 %13, 16 + %15 = select i1 %.inv.i.i, i64 %14, i64 32 + %16 = add i64 %15, 16 + %17 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %16) #26 + %18 = getelementptr inbounds i8, ptr %17, i64 %15 + %19 = getelementptr inbounds i8, ptr %18, i64 -16 + tail call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %19, i64 noundef %2, i32 noundef %3) #23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %10, i8 0, i64 16, i1 false) - tail call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5, i32 noundef %3, ptr %1, i64 %2, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %10) - %23 = getelementptr inbounds nuw i8, ptr %21, i64 4 - store i32 0, ptr %23, align 4 + tail call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5, i32 noundef %3, ptr %1, i64 %2, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %10) + %20 = getelementptr inbounds nuw i8, ptr %18, i64 4 + store i32 0, ptr %20, align 4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) %cond = icmp eq i32 %3, 1 - br i1 %cond, label %24, label %_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit + br i1 %cond, label %21, label %_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit -24: ; preds = %.split14 - tail call void @_ZN4llvm6MDNode22storeDistinctInContextEv(ptr noundef nonnull align 8 dereferenceable(16) %21) +21: ; preds = %.split14 + tail call void @_ZN4llvm6MDNode22storeDistinctInContextEv(ptr noundef nonnull align 8 dereferenceable(16) %18) br label %_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit -25: ; preds = %5 +22: ; preds = %5 store ptr %1, ptr %11, align 8 %.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %11, i64 8 store i64 %2, ptr %.sroa.3.0..sroa_idx.i.i, align 8 - %26 = getelementptr inbounds nuw i8, ptr %11, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %26, i8 0, i64 16, i1 false) - %27 = getelementptr inbounds nuw i8, ptr %11, i64 32 - %28 = tail call noundef i32 @_ZN4llvm12MDNodeOpsKey13calculateHashENS_8ArrayRefIPNS_8MetadataEEE(ptr %1, i64 %2) #23 - store i32 %28, ptr %27, align 8 - %29 = load ptr, ptr %0, align 8 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 576 - %31 = load ptr, ptr %30, align 8 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 592 - %33 = load i32, ptr %32, align 8 - %34 = icmp eq i32 %33, 0 - br i1 %34, label %.loopexit.i.i.i, label %35 - -35: ; preds = %25 - %36 = add i32 %33, -1 - br label %37 - -37: ; preds = %44, %35 - %.pn.i.i.i.i = phi i32 [ %28, %35 ], [ %46, %44 ] - %.015.i.i.i.i = phi i32 [ 1, %35 ], [ %45, %44 ] - %.016.i.i.i.i = and i32 %.pn.i.i.i.i, %36 - %38 = zext i32 %.016.i.i.i.i to i64 - %39 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %31, i64 %38 - %40 = load ptr, ptr %39, align 8 - %magicptr.i.i.i.i.i = ptrtoint ptr %40 to i64 + %23 = getelementptr inbounds nuw i8, ptr %11, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %23, i8 0, i64 16, i1 false) + %24 = getelementptr inbounds nuw i8, ptr %11, i64 32 + %25 = tail call noundef i32 @_ZN4llvm12MDNodeOpsKey13calculateHashENS_8ArrayRefIPNS_8MetadataEEE(ptr %1, i64 %2) #23 + store i32 %25, ptr %24, align 8 + %26 = load ptr, ptr %0, align 8 + %27 = getelementptr inbounds nuw i8, ptr %26, i64 576 + %28 = load ptr, ptr %27, align 8 + %29 = getelementptr inbounds nuw i8, ptr %26, i64 592 + %30 = load i32, ptr %29, align 8 + %31 = icmp eq i32 %30, 0 + br i1 %31, label %.loopexit.i.i.i, label %32 + +32: ; preds = %22 + %33 = add i32 %30, -1 + br label %34 + +34: ; preds = %41, %32 + %.pn.i.i.i.i = phi i32 [ %25, %32 ], [ %43, %41 ] + %.015.i.i.i.i = phi i32 [ 1, %32 ], [ %42, %41 ] + %.016.i.i.i.i = and i32 %.pn.i.i.i.i, %33 + %35 = zext i32 %.016.i.i.i.i to i64 + %36 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %28, i64 %35 + %37 = load ptr, ptr %36, align 8 + %magicptr.i.i.i.i.i = ptrtoint ptr %37 to i64 switch i64 %magicptr.i.i.i.i.i, label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.i.i.i.i [ i64 -4096, label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i i64 -8192, label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i ] -_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.i.i.i.i: ; preds = %37 - %41 = call noundef zeroext i1 @_ZNK4llvm12MDNodeOpsKey10compareOpsINS_7MDTupleEEEbPKT_j(ptr noundef nonnull align 8 dereferenceable(36) %11, ptr noundef %40, i32 noundef 0) - br i1 %41, label %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i, label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i +_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.i.i.i.i: ; preds = %34 + %38 = call noundef zeroext i1 @_ZNK4llvm12MDNodeOpsKey10compareOpsINS_7MDTupleEEEbPKT_j(ptr noundef nonnull align 8 dereferenceable(36) %11, ptr noundef %37, i32 noundef 0) + br i1 %38, label %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i, label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i _ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.i.i.i.i - %.pr.i.i.i.i = load ptr, ptr %39, align 8 + %.pr.i.i.i.i = load ptr, ptr %36, align 8 br label %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i -_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i, %37, %37 - %42 = phi ptr [ %.pr.i.i.i.i, %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i ], [ %40, %37 ], [ %40, %37 ] - %43 = icmp eq ptr %42, inttoptr (i64 -4096 to ptr) - br i1 %43, label %.loopexit.loopexit.i.i.i, label %44 +_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i, %34, %34 + %39 = phi ptr [ %.pr.i.i.i.i, %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.threadthread-pre-split.i.i.i.i ], [ %37, %34 ], [ %37, %34 ] + %40 = icmp eq ptr %39, inttoptr (i64 -4096 to ptr) + br i1 %40, label %.loopexit.loopexit.i.i.i, label %41 -44: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i - %45 = add i32 %.015.i.i.i.i, 1 - %46 = add i32 %.016.i.i.i.i, %.015.i.i.i.i - br label %37, !llvm.loop !225 +41: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i + %42 = add i32 %.015.i.i.i.i, 1 + %43 = add i32 %.016.i.i.i.i, %.015.i.i.i.i + br label %34, !llvm.loop !225 .loopexit.loopexit.i.i.i: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.thread.i.i.i.i - %.pre.i.i.i = load ptr, ptr %30, align 8 - %.pre12.i.i.i = load i32, ptr %32, align 8 - %47 = zext i32 %.pre12.i.i.i to i64 + %.pre.i.i.i = load ptr, ptr %27, align 8 + %.pre12.i.i.i = load i32, ptr %29, align 8 + %44 = zext i32 %.pre12.i.i.i to i64 br label %.loopexit.i.i.i -.loopexit.i.i.i: ; preds = %.loopexit.loopexit.i.i.i, %25 - %48 = phi i32 [ %.pre12.i.i.i, %.loopexit.loopexit.i.i.i ], [ 0, %25 ] - %49 = phi i64 [ %47, %.loopexit.loopexit.i.i.i ], [ 0, %25 ] - %50 = phi ptr [ %.pre.i.i.i, %.loopexit.loopexit.i.i.i ], [ %31, %25 ] - %51 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %50, i64 %49 +.loopexit.i.i.i: ; preds = %.loopexit.loopexit.i.i.i, %22 + %45 = phi i32 [ %.pre12.i.i.i, %.loopexit.loopexit.i.i.i ], [ 0, %22 ] + %46 = phi i64 [ %44, %.loopexit.loopexit.i.i.i ], [ 0, %22 ] + %47 = phi ptr [ %.pre.i.i.i, %.loopexit.loopexit.i.i.i ], [ %28, %22 ] + %48 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %47, i64 %46 br label %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i _ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i: ; preds = %_ZN4llvm10MDNodeInfoINS_7MDTupleEE7isEqualERKNS_13MDNodeKeyImplIS1_EEPKS1_.exit.i.i.i.i - %.pre.i23 = load ptr, ptr %30, align 8 - %.pre7.i = load i32, ptr %32, align 8 + %.pre.i23 = load ptr, ptr %27, align 8 + %.pre7.i = load i32, ptr %29, align 8 br label %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i _ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i, %.loopexit.i.i.i - %52 = phi i32 [ %48, %.loopexit.i.i.i ], [ %.pre7.i, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] - %53 = phi ptr [ %50, %.loopexit.i.i.i ], [ %.pre.i23, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] - %.pn9.i.i.i = phi ptr [ %51, %.loopexit.i.i.i ], [ %39, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] - %54 = zext i32 %52 to i64 - %55 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %53, i64 %54 - %56 = icmp eq ptr %.pn9.i.i.i, %55 - br i1 %56, label %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit, label %57 - -57: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i - %58 = load ptr, ptr %.pn9.i.i.i, align 8 + %49 = phi i32 [ %45, %.loopexit.i.i.i ], [ %.pre7.i, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] + %50 = phi ptr [ %47, %.loopexit.i.i.i ], [ %.pre.i23, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] + %.pn9.i.i.i = phi ptr [ %48, %.loopexit.i.i.i ], [ %36, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.loopexit.i ] + %51 = zext i32 %49 to i64 + %52 = getelementptr inbounds %"class.llvm::detail::DenseSetPair.930", ptr %50, i64 %51 + %53 = icmp eq ptr %.pn9.i.i.i, %52 + br i1 %53, label %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit, label %54 + +54: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i + %55 = load ptr, ptr %.pn9.i.i.i, align 8 br label %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit -_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i, %57 - %59 = phi ptr [ %58, %57 ], [ null, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i ] - %.not = icmp eq ptr %59, null +_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit: ; preds = %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i, %54 + %56 = phi ptr [ %55, %54 ], [ null, %_ZN4llvm6detail12DenseSetImplIPNS_7MDTupleENS_8DenseMapIS3_NS0_13DenseSetEmptyENS_10MDNodeInfoIS2_EENS0_12DenseSetPairIS3_EEEES7_E7find_asINS_13MDNodeKeyImplIS2_EEEENSB_8IteratorERKT_.exit.i ] + %.not = icmp eq ptr %56, null %brmerge.not = and i1 %4, %.not br i1 %brmerge.not, label %.split, label %_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit .split: ; preds = %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit - %60 = load i32, ptr %27, align 8 - %61 = shl i64 %2, 3 - %62 = and i64 %61, 34359738360 + %57 = load i32, ptr %24, align 8 %.inv.i.i25 = icmp ult i64 %2, 16 - %63 = add nuw nsw i64 %62, 15 - %64 = and i64 %63, 68719476728 - %65 = add nuw nsw i64 %64, 8 - %66 = select i1 %.inv.i.i25, i64 %65, i64 32 - %67 = add nuw nsw i64 %66, 16 - %68 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %67) #26 - %69 = getelementptr inbounds i8, ptr %68, i64 %66 - %70 = getelementptr inbounds i8, ptr %69, i64 -16 - call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %70, i64 noundef %2, i32 noundef 0) #23 + %58 = shl i64 %2, 3 + %59 = add i64 %58, 16 + %60 = select i1 %.inv.i.i25, i64 %59, i64 32 + %61 = add i64 %60, 16 + %62 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %61) #26 + %63 = getelementptr inbounds i8, ptr %62, i64 %60 + %64 = getelementptr inbounds i8, ptr %63, i64 -16 + call void @_ZN4llvm6MDNode6HeaderC1EmNS_8Metadata11StorageTypeE(ptr noundef nonnull align 8 dereferenceable(12) %64, i64 noundef %2, i32 noundef 0) #23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, i8 0, i64 16, i1 false) - call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5, i32 noundef 0, ptr %1, i64 %2, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %9) - %71 = getelementptr inbounds nuw i8, ptr %69, i64 4 - store i32 %60, ptr %71, align 4 + call void @_ZN4llvm6MDNodeC2ERNS_11LLVMContextEjNS_8Metadata11StorageTypeENS_8ArrayRefIPS3_EES7_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef 5, i32 noundef 0, ptr %1, i64 %2, ptr noundef nonnull byval(%"class.llvm::ArrayRef") align 8 %9) + %65 = getelementptr inbounds nuw i8, ptr %63, i64 4 + store i32 %57, ptr %65, align 4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) - %72 = load ptr, ptr %0, align 8 - %73 = getelementptr inbounds nuw i8, ptr %72, i64 576 + %66 = load ptr, ptr %0, align 8 + %67 = getelementptr inbounds nuw i8, ptr %66, i64 576 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) - store ptr %69, ptr %8, align 8 + store ptr %63, ptr %8, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - call void @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_7MDTupleENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS2_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E11try_emplaceIJRS5_EEESt4pairINS_16DenseMapIteratorIS3_S5_S7_S9_Lb0EEEbERKS3_DpOT_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.927") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %73, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 1 dereferenceable(1) %6), !noalias !401 + call void @_ZN4llvm12DenseMapBaseINS_8DenseMapIPNS_7MDTupleENS_6detail13DenseSetEmptyENS_10MDNodeInfoIS2_EENS4_12DenseSetPairIS3_EEEES3_S5_S7_S9_E11try_emplaceIJRS5_EEESt4pairINS_16DenseMapIteratorIS3_S5_S7_S9_Lb0EEEbERKS3_DpOT_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.927") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %67, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 1 dereferenceable(1) %6), !noalias !401 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) %.pre.i26 = load ptr, ptr %8, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) br label %_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit -_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit: ; preds = %24, %.split14, %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit, %.split - %.0 = phi ptr [ %59, %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit ], [ %.pre.i26, %.split ], [ %21, %.split14 ], [ %21, %24 ] +_ZN4llvm6MDNode9storeImplINS_7MDTupleENS_8DenseSetIPS2_NS_10MDNodeInfoIS2_EEEEEEPT_S9_NS_8Metadata11StorageTypeERT0_.exit: ; preds = %21, %.split14, %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit, %.split + %.0 = phi ptr [ %56, %_ZN4llvmL10getUniquedINS_7MDTupleENS_10MDNodeInfoIS1_EEEEPT_RNS_8DenseSetIS5_T0_EERKNS7_5KeyTyE.exit ], [ %.pre.i26, %.split ], [ %18, %.split14 ], [ %18, %21 ] ret ptr %.0 } diff --git a/bench/llvm/optimized/X86ISelLowering.cpp.ll b/bench/llvm/optimized/X86ISelLowering.cpp.ll index cc97f6a810e..f436b5b14db 100644 --- a/bench/llvm/optimized/X86ISelLowering.cpp.ll +++ b/bench/llvm/optimized/X86ISelLowering.cpp.ll @@ -58833,9 +58833,10 @@ _ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit: ; preds = %2, % br i1 %.not12, label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit.thread, label %14 14: ; preds = %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit - %15 = and i32 %12, -9 + %15 = xor i32 %12, 8 store i32 %15, ptr %1, align 4 - %switch.and = and i32 %12, -12 + %16 = add nsw i32 %12, -8 + %switch.and = and i32 %16, -12 %switch.selectcmp = icmp eq i32 %switch.and, 0 br label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit.thread @@ -58905,8 +58906,8 @@ _ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit: ; preds = %1, % br i1 %.not7, label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit.thread, label %13 13: ; preds = %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit - %14 = and i32 %11, -13 - %15 = icmp eq i32 %14, 0 + %14 = and i32 %11, -5 + %15 = icmp eq i32 %14, 8 br label %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit.thread _ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit.thread: ; preds = %1, %_ZN4llvm8dyn_castINS_14ConstantSDNodeENS_7SDValueEEEDcRT0_.exit, %13 diff --git a/bench/lua/optimized/lgc.ll b/bench/lua/optimized/lgc.ll index 9903106e11d..2774fb54f56 100644 --- a/bench/lua/optimized/lgc.ll +++ b/bench/lua/optimized/lgc.ll @@ -3939,7 +3939,7 @@ getgclist.exit.i.i.i: ; preds = %sw.bb9.i.i.i.i, %sw br label %if.end11.sink.split.i.i.i if.then7.i.i.i: ; preds = %for.end54.i.i - %xor.i.i.i = and i8 %61, -4 + %xor.i.i.i = xor i8 %61, 2 br label %if.end11.sink.split.i.i.i if.end11.sink.split.i.i.i: ; preds = %if.then7.i.i.i, %getgclist.exit.i.i.i @@ -4077,7 +4077,7 @@ getgclist.exit.i.i: ; preds = %sw.bb9.i.i.i, %sw.b br label %if.end11.sink.split.i.i if.then7.i.i: ; preds = %for.end.i - %xor.i.i = and i8 %83, -4 + %xor.i.i = xor i8 %83, 2 br label %if.end11.sink.split.i.i if.end11.sink.split.i.i: ; preds = %if.then7.i.i, %getgclist.exit.i.i @@ -4797,7 +4797,7 @@ getgclist.exit.i: ; preds = %sw.bb9.i.i, %sw.bb7 br label %if.end11.sink.split.i if.then7.i: ; preds = %if.else84 - %xor.i = and i8 %38, -4 + %xor.i = xor i8 %38, 2 br label %if.end11.sink.split.i if.end11.sink.split.i: ; preds = %if.then7.i, %getgclist.exit.i @@ -4972,7 +4972,7 @@ if.else13: ; preds = %if.else if.else18: ; preds = %if.else13 %cmp22 = icmp eq i32 %and3, 6 - %xor27 = and i8 %2, -60 + %xor27 = xor i8 %2, 2 %spec.select = select i1 %cmp22, i8 %xor27, i8 %2 %5 = or i8 %spec.select, 32 store i8 %5, ptr %marked, align 1 diff --git a/bench/meshlab/optimized/gltf_loader.cpp.ll b/bench/meshlab/optimized/gltf_loader.cpp.ll index 52b9cc6ca05..c20924b217c 100644 --- a/bench/meshlab/optimized/gltf_loader.cpp.ll +++ b/bench/meshlab/optimized/gltf_loader.cpp.ll @@ -13514,10 +13514,10 @@ _ZL19stbi__refill_bufferP13stbi__context.exit.i153.us.us: ; preds = %158, %155 _ZL10stbi__get8P13stbi__context.exit156.us.us: ; preds = %160, %_ZL19stbi__refill_bufferP13stbi__context.exit.i153.us.us, %147 %.0.i155.us.us = phi i8 [ %162, %160 ], [ %159, %_ZL19stbi__refill_bufferP13stbi__context.exit.i153.us.us ], [ 0, %147 ] - %163 = and i8 %.0.i150.us.us, 127 + %163 = xor i8 %.0.i150.us.us, -128 %164 = zext nneg i8 %163 to i32 %165 = icmp ult i32 %97, %164 - br i1 %165, label %.split57.us, label %.preheader.us.us + br i1 %165, label %.split57.us, label %.lr.ph48.us.us.preheader .loopexit.us.us.loopexit: ; preds = %.lr.ph48.us.us %166 = trunc nsw i64 %indvars.iv.next141 to i32 @@ -13527,8 +13527,8 @@ _ZL10stbi__get8P13stbi__context.exit156.us.us: ; preds = %160, %_ZL19stbi__re %167 = trunc nsw i64 %indvars.iv.next137 to i32 br label %.loopexit.us.us -.loopexit.us.us: ; preds = %101, %.loopexit.us.us.loopexit83, %.loopexit.us.us.loopexit, %.preheader14.us.us, %.preheader.us.us - %.4.us.us = phi i32 [ %.212050.us.us, %.preheader.us.us ], [ %.212050.us.us, %.preheader14.us.us ], [ %166, %.loopexit.us.us.loopexit ], [ %167, %.loopexit.us.us.loopexit83 ], [ %.212050.us.us, %101 ] +.loopexit.us.us: ; preds = %101, %.loopexit.us.us.loopexit83, %.loopexit.us.us.loopexit, %.preheader14.us.us + %.4.us.us = phi i32 [ %.212050.us.us, %.preheader14.us.us ], [ %166, %.loopexit.us.us.loopexit ], [ %167, %.loopexit.us.us.loopexit83 ], [ %.212050.us.us, %101 ] %168 = sub nsw i32 %41, %.4.us.us %169 = icmp sgt i32 %168, 0 br i1 %169, label %96, label %._crit_edge52.us.us, !llvm.loop !101 @@ -13545,11 +13545,7 @@ _ZL10stbi__get8P13stbi__context.exit156.us.us: ; preds = %160, %_ZL19stbi__re %exitcond143.not = icmp eq i32 %173, %164 br i1 %exitcond143.not, label %.loopexit.us.us.loopexit, label %.lr.ph48.us.us, !llvm.loop !102 -.preheader.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit156.us.us - %.not82 = icmp eq i8 %163, 0 - br i1 %.not82, label %.loopexit.us.us, label %.lr.ph48.us.us.preheader - -.lr.ph48.us.us.preheader: ; preds = %.preheader.us.us +.lr.ph48.us.us.preheader: ; preds = %_ZL10stbi__get8P13stbi__context.exit156.us.us %174 = sext i32 %.212050.us.us to i64 br label %.lr.ph48.us.us diff --git a/bench/mold/optimized/arch-riscv.cc.RV32BE.cc.ll b/bench/mold/optimized/arch-riscv.cc.RV32BE.cc.ll index e74d5039e73..e1997c7e0a7 100644 --- a/bench/mold/optimized/arch-riscv.cc.RV32BE.cc.ll +++ b/bench/mold/optimized/arch-riscv.cc.RV32BE.cc.ll @@ -5728,8 +5728,8 @@ if.end: ; preds = %entry %2 = load ptr, ptr %objs, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %ctx, i64 3288 %3 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i324 = icmp eq ptr %2, %3 - br i1 %cmp.i324, label %cleanup.cont, label %for.body.lr.ph + %cmp.i320 = icmp eq ptr %2, %3 + br i1 %cmp.i320, label %cleanup.cont, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.end %add.ptr.i.i = getelementptr inbounds i8, ptr %ref.tmp, i64 24 @@ -5754,15 +5754,15 @@ for.body.lr.ph: ; preds = %if.end br label %for.body for.body: ; preds = %for.body.lr.ph, %if.end53 - %stack.0332 = phi i64 [ -1, %for.body.lr.ph ], [ %stack.1, %if.end53 ] - %unaligned.0331 = phi i1 [ false, %for.body.lr.ph ], [ %spec.select, %if.end53 ] - %arch.sroa.0.0330 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.0.1, %if.end53 ] - %arch.sroa.16.0329 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.16.1, %if.end53 ] - %arch.sroa.29.0328 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.29.1, %if.end53 ] - %__begin2.sroa.0.0327 = phi ptr [ %2, %for.body.lr.ph ], [ %incdec.ptr.i, %if.end53 ] - %arch2.sroa.0.0326 = phi ptr [ undef, %for.body.lr.ph ], [ %arch2.sroa.0.1, %if.end53 ] - %arch2.sroa.12.0325 = phi ptr [ undef, %for.body.lr.ph ], [ %arch2.sroa.12.1, %if.end53 ] - %13 = load ptr, ptr %__begin2.sroa.0.0327, align 8 + %stack.0328 = phi i64 [ -1, %for.body.lr.ph ], [ %stack.1, %if.end53 ] + %unaligned.0327 = phi i1 [ false, %for.body.lr.ph ], [ %spec.select, %if.end53 ] + %arch.sroa.0.0326 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.0.1, %if.end53 ] + %arch.sroa.16.0325 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.16.1, %if.end53 ] + %arch.sroa.29.0324 = phi ptr [ null, %for.body.lr.ph ], [ %arch.sroa.29.1, %if.end53 ] + %__begin2.sroa.0.0323 = phi ptr [ %2, %for.body.lr.ph ], [ %incdec.ptr.i, %if.end53 ] + %arch2.sroa.0.0322 = phi ptr [ undef, %for.body.lr.ph ], [ %arch2.sroa.0.1, %if.end53 ] + %arch2.sroa.12.0321 = phi ptr [ undef, %for.body.lr.ph ], [ %arch2.sroa.12.1, %if.end53 ] + %13 = load ptr, ptr %__begin2.sroa.0.0323, align 8 %_M_engaged.i.i = getelementptr inbounds i8, ptr %13, i64 680 %14 = load i8, ptr %_M_engaged.i.i, align 8 %tobool.i.i = trunc i8 %14 to i1 @@ -5771,8 +5771,8 @@ for.body: ; preds = %for.body.lr.ph, %if if.then8: ; preds = %for.body %extra = getelementptr inbounds i8, ptr %13, i64 672 %15 = load i64, ptr %extra, align 8 - %cmp.not = icmp eq i64 %stack.0332, -1 - %cmp12.not = icmp eq i64 %stack.0332, %15 + %cmp.not = icmp eq i64 %stack.0328, -1 + %cmp12.not = icmp eq i64 %stack.0328, %15 %or.cond = select i1 %cmp.not, i1 true, i1 %cmp12.not br i1 %or.cond, label %if.end17, label %if.then13 @@ -5797,7 +5797,7 @@ _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA40_KcEERS5_OT_.exit: ; preds br label %if.end17 if.end17: ; preds = %if.then8, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA40_KcEERS5_OT_.exit, %for.body - %stack.1 = phi i64 [ %stack.0332, %for.body ], [ %15, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA40_KcEERS5_OT_.exit ], [ %15, %if.then8 ] + %stack.1 = phi i64 [ %stack.0328, %for.body ], [ %15, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA40_KcEERS5_OT_.exit ], [ %15, %if.then8 ] %arch19 = getelementptr inbounds i8, ptr %13, i64 688 %_M_engaged.i.i58 = getelementptr inbounds i8, ptr %13, i64 704 %17 = load i8, ptr %_M_engaged.i.i58, align 8 @@ -5853,8 +5853,8 @@ if.end23.i: ; preds = %_ZNKSt17basic_strin br label %while.cond.i while.cond.i: ; preds = %_ZNSt8optionalIN4mold3elf12_GLOBAL__N_14ExtnEED2Ev.exit.i, %if.end23.i - %arch2.sroa.12.3 = phi ptr [ %arch2.sroa.12.0325, %if.end23.i ], [ %arch2.sroa.12.6, %_ZNSt8optionalIN4mold3elf12_GLOBAL__N_14ExtnEED2Ev.exit.i ] - %arch2.sroa.0.3 = phi ptr [ %arch2.sroa.0.0326, %if.end23.i ], [ %arch2.sroa.0.6, %_ZNSt8optionalIN4mold3elf12_GLOBAL__N_14ExtnEED2Ev.exit.i ] + %arch2.sroa.12.3 = phi ptr [ %arch2.sroa.12.0321, %if.end23.i ], [ %arch2.sroa.12.6, %_ZNSt8optionalIN4mold3elf12_GLOBAL__N_14ExtnEED2Ev.exit.i ] + %arch2.sroa.0.3 = phi ptr [ %arch2.sroa.0.0322, %if.end23.i ], [ %arch2.sroa.0.6, %_ZNSt8optionalIN4mold3elf12_GLOBAL__N_14ExtnEED2Ev.exit.i ] %19 = load i64, ptr %str.i, align 8, !noalias !24 %cmp.i38.i = icmp eq i64 %19, 0 br i1 %cmp.i38.i, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i.i.thread, label %while.body.i @@ -5998,8 +5998,8 @@ _ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit br i1 %cmp.i.i63, label %if.then26, label %if.end34 if.then26: ; preds = %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit - %arch2.sroa.0.7289 = phi ptr [ null, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread ], [ %arch2.sroa.0.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] - %arch2.sroa.12.7285 = phi ptr [ null, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread ], [ %arch2.sroa.12.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] + %arch2.sroa.0.7285 = phi ptr [ null, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread ], [ %arch2.sroa.0.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] + %arch2.sroa.12.7281 = phi ptr [ null, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit.thread ], [ %arch2.sroa.12.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] call void @_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEEC2ERS4_(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp27, ptr noundef nonnull align 8 dereferenceable(4576) %ctx) %33 = load ptr, ptr %ref.tmp27, align 8 %tobool.not.i.i64 = icmp eq ptr %33, null @@ -6007,14 +6007,14 @@ if.then26: ; preds = %_ZN4mold3elfL17pars _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRNS1_10ObjectFileIS3_EEEERS5_OT_.exit68: ; preds = %if.then26 %call.i.i67 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4mold3elflsINS0_6RV32BEEEERSoS3_RKNS0_9InputFileIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i66, ptr noundef nonnull align 8 dereferenceable(280) %13) #21 - %.pr295 = load ptr, ptr %ref.tmp27, align 8 - %tobool.not.i.i69 = icmp eq ptr %.pr295, null + %.pr291 = load ptr, ptr %ref.tmp27, align 8 + %tobool.not.i.i69 = icmp eq ptr %.pr291, null br i1 %tobool.not.i.i69, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA43_KcEERS5_OT_.exit _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA43_KcEERS5_OT_.exit: ; preds = %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRNS1_10ObjectFileIS3_EEEERS5_OT_.exit68 %call.i.i72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i66, ptr noundef nonnull @.str.15) #21 - %.pr297 = load ptr, ptr %ref.tmp27, align 8 - %tobool.not.i.i73 = icmp eq ptr %.pr297, null + %.pr293 = load ptr, ptr %ref.tmp27, align 8 + %tobool.not.i.i73 = icmp eq ptr %.pr293, null br i1 %tobool.not.i.i73, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit, label %if.then.i.i74 if.then.i.i74: ; preds = %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA43_KcEERS5_OT_.exit @@ -6028,18 +6028,18 @@ _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11cha br label %if.end34 if.end34: ; preds = %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit - %cmp.i.i63292 = phi i1 [ true, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ false, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] - %arch2.sroa.0.7288 = phi ptr [ %arch2.sroa.0.7289, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ %arch2.sroa.0.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] - %arch2.sroa.12.7284 = phi ptr [ %arch2.sroa.12.7285, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ %arch2.sroa.12.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] - %cmp.i.i76 = icmp eq ptr %arch.sroa.0.0330, %arch.sroa.16.0329 + %cmp.i.i63288 = phi i1 [ true, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ false, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] + %arch2.sroa.0.7284 = phi ptr [ %arch2.sroa.0.7285, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ %arch2.sroa.0.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] + %arch2.sroa.12.7280 = phi ptr [ %arch2.sroa.12.7281, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit ], [ %arch2.sroa.12.2, %_ZN4mold3elfL17parse_arch_stringESt17basic_string_viewIcSt11char_traitsIcEE.exit ] + %cmp.i.i76 = icmp eq ptr %arch.sroa.0.0326, %arch.sroa.16.0325 br i1 %cmp.i.i76, label %if.then36, label %if.else if.then36: ; preds = %if.end34 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %arch2.sroa.12.7284 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %arch2.sroa.0.7288 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %arch2.sroa.12.7280 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %arch2.sroa.0.7284 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - %sub.ptr.lhs.cast.i28.i = ptrtoint ptr %arch.sroa.29.0328 to i64 - %sub.ptr.rhs.cast.i29.i = ptrtoint ptr %arch.sroa.0.0330 to i64 + %sub.ptr.lhs.cast.i28.i = ptrtoint ptr %arch.sroa.29.0324 to i64 + %sub.ptr.rhs.cast.i29.i = ptrtoint ptr %arch.sroa.0.0326 to i64 %sub.ptr.sub.i30.i = sub i64 %sub.ptr.lhs.cast.i28.i, %sub.ptr.rhs.cast.i29.i %cmp3.i = icmp ugt i64 %sub.ptr.sub.i.i, %sub.ptr.sub.i30.i br i1 %cmp3.i, label %cond.true.i.i.i, label %if.else.i @@ -6055,26 +6055,26 @@ if.then3.i.i.i.i.i: ; preds = %cond.true.i.i.i _ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i: ; preds = %cond.true.i.i.i %call5.i.i.i.i.i = call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i) #32 - br i1 %cmp.i.i63292, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i, label %for.body.i.i.i.i.i.i + br i1 %cmp.i.i63288, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i, %for.body.i.i.i.i.i.i %__cur.06.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %call5.i.i.i.i.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i ] - %__first.sroa.0.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %arch2.sroa.0.7288, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i ] + %__first.sroa.0.05.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %arch2.sroa.0.7284, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %__cur.06.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %__first.sroa.0.05.i.i.i.i.i.i) %major.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i.i.i.i, i64 32 %major3.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i.i.i.i.i.i, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %major.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %major3.i.i.i.i.i.i.i.i, i64 16, i1 false) %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i.i.i.i.i.i, i64 48 %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i.i.i.i, i64 48 - %cmp.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %arch2.sroa.12.7284 + %cmp.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %arch2.sroa.12.7280 br i1 %cmp.i.i.i.i.i.i.i, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i, label %for.body.i.i.i.i.i.i, !llvm.loop !29 _ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i: ; preds = %for.body.i.i.i.i.i.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE11_M_allocateEm.exit.i.i - %tobool.not.i.i86 = icmp eq ptr %arch.sroa.0.0330, null + %tobool.not.i.i86 = icmp eq ptr %arch.sroa.0.0326, null br i1 %tobool.not.i.i86, label %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i, label %if.then.i.i87 if.then.i.i87: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i - call void @_ZdlPv(ptr noundef nonnull %arch.sroa.0.0330) #30 + call void @_ZdlPv(ptr noundef nonnull %arch.sroa.0.0326) #30 br label %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i _ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i: ; preds = %if.then.i.i87, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i @@ -6082,41 +6082,41 @@ _ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m. br label %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit if.else.i: ; preds = %if.then36 - %cmp26.not.i.not = icmp eq ptr %arch2.sroa.12.7284, %arch2.sroa.0.7288 + %cmp26.not.i.not = icmp eq ptr %arch2.sroa.12.7280, %arch2.sroa.0.7284 br i1 %cmp26.not.i.not, label %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit, label %for.body.i.i.i.i.i79 for.body.i.i.i.i.i79: ; preds = %if.else.i, %for.body.i.i.i.i.i79 - %__cur.07.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i79 ], [ %arch.sroa.16.0329, %if.else.i ] - %__first.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i73.i, %for.body.i.i.i.i.i79 ], [ %arch2.sroa.0.7288, %if.else.i ] + %__cur.07.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i79 ], [ %arch.sroa.16.0325, %if.else.i ] + %__first.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i73.i, %for.body.i.i.i.i.i79 ], [ %arch2.sroa.0.7284, %if.else.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %__cur.07.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %__first.addr.06.i.i.i.i.i) %major.i.i.i.i.i.i71.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i.i, i64 32 %major3.i.i.i.i.i.i72.i = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i.i, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %major.i.i.i.i.i.i71.i, ptr noundef nonnull align 8 dereferenceable(16) %major3.i.i.i.i.i.i72.i, i64 16, i1 false) %incdec.ptr.i.i.i.i73.i = getelementptr inbounds i8, ptr %__first.addr.06.i.i.i.i.i, i64 48 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i.i, i64 48 - %cmp.not.i.i.i.i.i80 = icmp eq ptr %incdec.ptr.i.i.i.i73.i, %arch2.sroa.12.7284 + %cmp.not.i.i.i.i.i80 = icmp eq ptr %incdec.ptr.i.i.i.i73.i, %arch2.sroa.12.7280 br i1 %cmp.not.i.i.i.i.i80, label %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit, label %for.body.i.i.i.i.i79, !llvm.loop !30 _ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit: ; preds = %for.body.i.i.i.i.i79, %if.else.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i - %arch.sroa.29.3 = phi ptr [ %add.ptr.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i ], [ %arch.sroa.29.0328, %if.else.i ], [ %arch.sroa.29.0328, %for.body.i.i.i.i.i79 ] - %arch.sroa.0.3 = phi ptr [ %call5.i.i.i.i.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i ], [ %arch.sroa.0.0330, %if.else.i ], [ %arch.sroa.0.0330, %for.body.i.i.i.i.i79 ] + %arch.sroa.29.3 = phi ptr [ %add.ptr.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i ], [ %arch.sroa.29.0324, %if.else.i ], [ %arch.sroa.29.0324, %for.body.i.i.i.i.i79 ] + %arch.sroa.0.3 = phi ptr [ %call5.i.i.i.i.i, %_ZNSt12_Vector_baseIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE13_M_deallocateEPS3_m.exit.i ], [ %arch.sroa.0.0326, %if.else.i ], [ %arch.sroa.0.0326, %for.body.i.i.i.i.i79 ] %add.ptr72.i = getelementptr inbounds i8, ptr %arch.sroa.0.3, i64 %sub.ptr.sub.i.i - br i1 %cmp.i.i63292, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader + br i1 %cmp.i.i63288, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader if.else: ; preds = %if.end34 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %arch.sroa.16.0329 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %arch.sroa.0.0330 to i64 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %arch.sroa.16.0325 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %arch.sroa.0.0326 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i, 48 - %sub.ptr.lhs.cast.i.i.i91 = ptrtoint ptr %arch2.sroa.12.7284 to i64 - %sub.ptr.rhs.cast.i.i.i92 = ptrtoint ptr %arch2.sroa.0.7288 to i64 + %sub.ptr.lhs.cast.i.i.i91 = ptrtoint ptr %arch2.sroa.12.7280 to i64 + %sub.ptr.rhs.cast.i.i.i92 = ptrtoint ptr %arch2.sroa.0.7284 to i64 %sub.ptr.sub.i.i.i93 = sub i64 %sub.ptr.lhs.cast.i.i.i91, %sub.ptr.rhs.cast.i.i.i92 %sub.ptr.div.i.i.i94 = sdiv exact i64 %sub.ptr.sub.i.i.i93, 48 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %vec.i96) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %vec.i96, i8 0, i64 24, i1 false), !noalias !31 - %_M_string_length.i.i.i = getelementptr inbounds i8, ptr %arch.sroa.0.0330, i64 8 + %_M_string_length.i.i.i = getelementptr inbounds i8, ptr %arch.sroa.0.0326, i64 8 %34 = load i64, ptr %_M_string_length.i.i.i, align 8, !noalias !31 - %_M_string_length.i4.i.i = getelementptr inbounds i8, ptr %arch2.sroa.0.7288, i64 8 + %_M_string_length.i4.i.i = getelementptr inbounds i8, ptr %arch2.sroa.0.7284, i64 8 %35 = load i64, ptr %_M_string_length.i4.i.i, align 8, !noalias !31 %cmp.i.i97 = icmp eq i64 %34, %35 br i1 %cmp.i.i97, label %land.rhs.i.i, label %_ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EES4_.exit @@ -6126,21 +6126,21 @@ land.rhs.i.i: ; preds = %if.else br i1 %cmp.i.i.i99, label %while.cond.preheader.i, label %if.end.i.i.i while.cond.preheader.i: ; preds = %if.end.i.i.i, %land.rhs.i.i - %cmp.i3168.i = icmp eq ptr %arch2.sroa.12.7284, %arch2.sroa.0.7288 + %cmp.i3168.i = icmp eq ptr %arch2.sroa.12.7280, %arch2.sroa.0.7284 br i1 %cmp.i3168.i, label %while.end.i105, label %while.body.i101 if.end.i.i.i: ; preds = %land.rhs.i.i - %36 = load ptr, ptr %arch2.sroa.0.7288, align 8, !noalias !31 - %37 = load ptr, ptr %arch.sroa.0.0330, align 8, !noalias !31 + %36 = load ptr, ptr %arch2.sroa.0.7284, align 8, !noalias !31 + %37 = load ptr, ptr %arch.sroa.0.0326, align 8, !noalias !31 %bcmp.i.i100 = call i32 @bcmp(ptr %37, ptr %36, i64 %34), !noalias !31 %38 = icmp eq i32 %bcmp.i.i100, 0 br i1 %38, label %while.cond.preheader.i, label %_ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EES4_.exit while.body.i101: ; preds = %while.cond.preheader.i, %if.end33.i %x.sroa.13.073.i = phi i64 [ %x.sroa.13.1.i, %if.end33.i ], [ %sub.ptr.div.i.i.i, %while.cond.preheader.i ] - %x.sroa.0.072.i = phi ptr [ %x.sroa.0.1.i, %if.end33.i ], [ %arch.sroa.0.0330, %while.cond.preheader.i ] + %x.sroa.0.072.i = phi ptr [ %x.sroa.0.1.i, %if.end33.i ], [ %arch.sroa.0.0326, %while.cond.preheader.i ] %y.sroa.13.071.i = phi i64 [ %y.sroa.13.1.i, %if.end33.i ], [ %sub.ptr.div.i.i.i94, %while.cond.preheader.i ] - %y.sroa.0.070.i = phi ptr [ %y.sroa.0.1.i, %if.end33.i ], [ %arch2.sroa.0.7288, %while.cond.preheader.i ] + %y.sroa.0.070.i = phi ptr [ %y.sroa.0.1.i, %if.end33.i ], [ %arch2.sroa.0.7284, %while.cond.preheader.i ] %_M_string_length.i.i32.i = getelementptr inbounds i8, ptr %x.sroa.0.072.i, i64 8 %39 = load i64, ptr %_M_string_length.i.i32.i, align 8, !noalias !31 %_M_string_length.i4.i33.i = getelementptr inbounds i8, ptr %y.sroa.0.070.i, i64 8 @@ -6372,9 +6372,9 @@ while.end.loopexit.i: ; preds = %if.end33.i while.end.i105: ; preds = %while.end.loopexit.i, %while.cond.preheader.i %vec.val.i = phi ptr [ null, %while.cond.preheader.i ], [ %vec.val.pre.i, %while.end.loopexit.i ] - %y.sroa.0.0.lcssa.i = phi ptr [ %arch2.sroa.0.7288, %while.cond.preheader.i ], [ %y.sroa.0.1.i, %while.end.loopexit.i ] + %y.sroa.0.0.lcssa.i = phi ptr [ %arch2.sroa.0.7284, %while.cond.preheader.i ], [ %y.sroa.0.1.i, %while.end.loopexit.i ] %y.sroa.13.0.lcssa.i = phi i64 [ %sub.ptr.div.i.i.i94, %while.cond.preheader.i ], [ %y.sroa.13.1.i, %while.end.loopexit.i ] - %x.sroa.0.0.lcssa.i = phi ptr [ %arch.sroa.0.0330, %while.cond.preheader.i ], [ %x.sroa.0.1.i, %while.end.loopexit.i ] + %x.sroa.0.0.lcssa.i = phi ptr [ %arch.sroa.0.0326, %while.cond.preheader.i ], [ %x.sroa.0.1.i, %while.end.loopexit.i ] %x.sroa.13.0.lcssa.i = phi i64 [ %sub.ptr.div.i.i.i, %while.cond.preheader.i ], [ %x.sroa.13.1.i, %while.end.loopexit.i ] %add.ptr.i58.i = getelementptr inbounds %"struct.mold::elf::(anonymous namespace)::Extn", ptr %x.sroa.0.0.lcssa.i, i64 %x.sroa.13.0.lcssa.i call fastcc void @_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EE6insertIN9__gnu_cxx17__normal_iteratorIPS3_St4spanIS3_Lm18446744073709551615EEEEvEENS8_IS9_S5_EENS8_IPKS3_S5_EET_SH_(ptr noundef nonnull align 8 dereferenceable(24) %vec.i96, ptr %vec.val.i, ptr nonnull %x.sroa.0.0.lcssa.i, ptr %add.ptr.i58.i) @@ -6394,7 +6394,7 @@ _ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709 br label %for.body.i.i.i.i.i.i112 for.body.i.i.i.i.i.i112: ; preds = %_ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EES4_.exit, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i.i.i - %__first.addr.04.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i113, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i.i.i ], [ %arch.sroa.0.0330, %_ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EES4_.exit ] + %__first.addr.04.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i113, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i.i.i ], [ %arch.sroa.0.0326, %_ZN4mold3elfL16merge_extensionsESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EES4_.exit ] %68 = load ptr, ptr %__first.addr.04.i.i.i.i.i.i, align 8 %69 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 16 %cmp.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %68, %69 @@ -6414,15 +6414,15 @@ if.then.i.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. _ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__first.addr.04.i.i.i.i.i.i) #21 %incdec.ptr.i.i.i.i.i.i113 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i.i.i, i64 48 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i113, %arch.sroa.16.0329 + %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i113, %arch.sroa.16.0325 br i1 %cmp.not.i.i.i.i.i.i, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i.i.i, label %for.body.i.i.i.i.i.i112, !llvm.loop !28 _ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i.i.i: ; preds = %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i.i.i - %tobool.not.i.i.i.i.i = icmp eq ptr %arch.sroa.0.0330, null + %tobool.not.i.i.i.i.i = icmp eq ptr %arch.sroa.0.0326, null br i1 %tobool.not.i.i.i.i.i, label %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EED2Ev.exit, label %if.then.i.i.i.i.i114 if.then.i.i.i.i.i114: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i.i.i - call void @_ZdlPv(ptr noundef nonnull %arch.sroa.0.0330) #30 + call void @_ZdlPv(ptr noundef nonnull %arch.sroa.0.0326) #30 br label %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EED2Ev.exit _ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i.i.i, %if.then.i.i.i.i.i114 @@ -6437,14 +6437,14 @@ if.then43: ; preds = %_ZNSt6vectorIN4mold _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRNS1_10ObjectFileIS3_EEEERS5_OT_.exit135: ; preds = %if.then43 %call.i.i134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4mold3elflsINS0_6RV32BEEEERSoS3_RKNS0_9InputFileIT_EE(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i133, ptr noundef nonnull align 8 dereferenceable(280) %13) #21 - %.pr299 = load ptr, ptr %ref.tmp44, align 8 - %tobool.not.i.i136 = icmp eq ptr %.pr299, null + %.pr295 = load ptr, ptr %ref.tmp44, align 8 + %tobool.not.i.i136 = icmp eq ptr %.pr295, null br i1 %tobool.not.i.i136, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA46_KcEERS5_OT_.exit _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA46_KcEERS5_OT_.exit: ; preds = %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRNS1_10ObjectFileIS3_EEEERS5_OT_.exit135 %call.i.i139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %add.ptr.i.i133, ptr noundef nonnull @.str.16) #21 - %.pr301 = load ptr, ptr %ref.tmp44, align 8 - %tobool.not.i.i140 = icmp eq ptr %.pr301, null + %.pr297 = load ptr, ptr %ref.tmp44, align 8 + %tobool.not.i.i140 = icmp eq ptr %.pr297, null br i1 %tobool.not.i.i140, label %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147, label %if.then.i.i141 if.then.i.i141: ; preds = %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA46_KcEERS5_OT_.exit @@ -6455,19 +6455,19 @@ if.then.i.i141: ; preds = %_ZN4mold5ErrorINS_3 _ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147: ; preds = %if.then43, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRNS1_10ObjectFileIS3_EEEERS5_OT_.exit135, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRA46_KcEERS5_OT_.exit, %if.then.i.i141 call void @_ZN4mold7SyncOutINS_3elf7ContextINS1_6RV32BEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(400) %ref.tmp44) #21 - br i1 %cmp.i.i63292, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader + br i1 %cmp.i.i63288, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader if.end52: ; preds = %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EED2Ev.exit - br i1 %cmp.i.i63292, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader + br i1 %cmp.i.i63288, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150.preheader for.body.i.i.i.i150.preheader: ; preds = %if.end52, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 - %arch.sroa.0.2317.ph = phi ptr [ %ref.tmp38.sroa.0.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.0.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.0.3, %if.end52 ] - %arch.sroa.16.2315.ph = phi ptr [ %ref.tmp38.sroa.6.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %add.ptr72.i, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.6.3, %if.end52 ] - %arch.sroa.29.2313.ph = phi ptr [ %ref.tmp38.sroa.9.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.29.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.9.3, %if.end52 ] + %arch.sroa.0.2313.ph = phi ptr [ %ref.tmp38.sroa.0.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.0.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.0.3, %if.end52 ] + %arch.sroa.16.2311.ph = phi ptr [ %ref.tmp38.sroa.6.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %add.ptr72.i, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.6.3, %if.end52 ] + %arch.sroa.29.2309.ph = phi ptr [ %ref.tmp38.sroa.9.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.29.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.9.3, %if.end52 ] br label %for.body.i.i.i.i150 for.body.i.i.i.i150: ; preds = %for.body.i.i.i.i150.preheader, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 - %__first.addr.04.i.i.i.i151 = phi ptr [ %incdec.ptr.i.i.i.i155, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ], [ %arch2.sroa.0.7288, %for.body.i.i.i.i150.preheader ] + %__first.addr.04.i.i.i.i151 = phi ptr [ %incdec.ptr.i.i.i.i155, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ], [ %arch2.sroa.0.7284, %for.body.i.i.i.i150.preheader ] %72 = load ptr, ptr %__first.addr.04.i.i.i.i151, align 8 %73 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i151, i64 16 %cmp.i.i.i.i.i.i.i.i.i.i152 = icmp eq ptr %72, %73 @@ -6487,37 +6487,37 @@ if.then.i.i.i.i.i.i.i.i.i153: ; preds = %for.body.i.i.i.i150 _ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154: ; preds = %if.then.i.i.i.i.i.i.i.i.i153, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i163 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__first.addr.04.i.i.i.i151) #21 %incdec.ptr.i.i.i.i155 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i151, i64 48 - %cmp.not.i.i.i.i156 = icmp eq ptr %incdec.ptr.i.i.i.i155, %arch2.sroa.12.7284 + %cmp.not.i.i.i.i156 = icmp eq ptr %incdec.ptr.i.i.i.i155, %arch2.sroa.12.7280 br i1 %cmp.not.i.i.i.i156, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, label %for.body.i.i.i.i150, !llvm.loop !28 _ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159: ; preds = %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit, %if.end52 - %arch.sroa.0.2318 = phi ptr [ %arch.sroa.0.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.0.3, %if.end52 ], [ %ref.tmp38.sroa.0.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.0.2317.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] - %arch.sroa.16.2316 = phi ptr [ %add.ptr72.i, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.6.3, %if.end52 ], [ %ref.tmp38.sroa.6.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.16.2315.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] - %arch.sroa.29.2314 = phi ptr [ %arch.sroa.29.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.9.3, %if.end52 ], [ %ref.tmp38.sroa.9.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.29.2313.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] - %tobool.not.i.i.i161 = icmp eq ptr %arch2.sroa.0.7288, null + %arch.sroa.0.2314 = phi ptr [ %arch.sroa.0.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.0.3, %if.end52 ], [ %ref.tmp38.sroa.0.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.0.2313.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] + %arch.sroa.16.2312 = phi ptr [ %add.ptr72.i, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.6.3, %if.end52 ], [ %ref.tmp38.sroa.6.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.16.2311.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] + %arch.sroa.29.2310 = phi ptr [ %arch.sroa.29.3, %_ZNSt6vectorIN4mold3elf12_GLOBAL__N_14ExtnESaIS3_EEaSERKS5_.exit ], [ %ref.tmp38.sroa.9.3, %if.end52 ], [ %ref.tmp38.sroa.9.3, %_ZN4mold5ErrorINS_3elf7ContextINS1_6RV32BEEEEElsIRSt17basic_string_viewIcSt11char_traitsIcEEEERS5_OT_.exit147 ], [ %arch.sroa.29.2309.ph, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i154 ] + %tobool.not.i.i.i161 = icmp eq ptr %arch2.sroa.0.7284, null br i1 %tobool.not.i.i.i161, label %if.end53, label %if.then.i.i.i162 if.then.i.i.i162: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 - call void @_ZdlPv(ptr noundef nonnull %arch2.sroa.0.7288) #30 + call void @_ZdlPv(ptr noundef nonnull %arch2.sroa.0.7284) #30 br label %if.end53 if.end53: ; preds = %if.then.i.i.i162, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159, %if.end17 - %arch2.sroa.12.1 = phi ptr [ %arch2.sroa.12.0325, %if.end17 ], [ %arch2.sroa.12.7284, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch2.sroa.12.7284, %if.then.i.i.i162 ] - %arch2.sroa.0.1 = phi ptr [ %arch2.sroa.0.0326, %if.end17 ], [ null, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch2.sroa.0.7288, %if.then.i.i.i162 ] - %arch.sroa.29.1 = phi ptr [ %arch.sroa.29.0328, %if.end17 ], [ %arch.sroa.29.2314, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.29.2314, %if.then.i.i.i162 ] - %arch.sroa.16.1 = phi ptr [ %arch.sroa.16.0329, %if.end17 ], [ %arch.sroa.16.2316, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.16.2316, %if.then.i.i.i162 ] - %arch.sroa.0.1 = phi ptr [ %arch.sroa.0.0330, %if.end17 ], [ %arch.sroa.0.2318, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.0.2318, %if.then.i.i.i162 ] + %arch2.sroa.12.1 = phi ptr [ %arch2.sroa.12.0321, %if.end17 ], [ %arch2.sroa.12.7280, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch2.sroa.12.7280, %if.then.i.i.i162 ] + %arch2.sroa.0.1 = phi ptr [ %arch2.sroa.0.0322, %if.end17 ], [ null, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch2.sroa.0.7284, %if.then.i.i.i162 ] + %arch.sroa.29.1 = phi ptr [ %arch.sroa.29.0324, %if.end17 ], [ %arch.sroa.29.2310, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.29.2310, %if.then.i.i.i162 ] + %arch.sroa.16.1 = phi ptr [ %arch.sroa.16.0325, %if.end17 ], [ %arch.sroa.16.2312, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.16.2312, %if.then.i.i.i162 ] + %arch.sroa.0.1 = phi ptr [ %arch.sroa.0.0326, %if.end17 ], [ %arch.sroa.0.2314, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i159 ], [ %arch.sroa.0.2314, %if.then.i.i.i162 ] %unaligned_access = getelementptr inbounds i8, ptr %13, i64 712 %75 = load i8, ptr %unaligned_access, align 8 %tobool = trunc i8 %75 to i1 - %spec.select = select i1 %tobool, i1 true, i1 %unaligned.0331 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.0327, i64 8 + %spec.select = select i1 %tobool, i1 true, i1 %unaligned.0327 + %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.0323, i64 8 %cmp.i = icmp eq ptr %incdec.ptr.i, %3 br i1 %cmp.i, label %for.end, label %for.body for.end: ; preds = %if.end53 %cmp.i.i167 = icmp eq ptr %arch.sroa.0.1, %arch.sroa.16.1 - br i1 %cmp.i.i167, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i246, label %if.end60 + br i1 %cmp.i.i167, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i242, label %if.end60 if.end60: ; preds = %for.end %sub.ptr.lhs.cast.i.i.i168 = ptrtoint ptr %arch.sroa.16.1 to i64 @@ -6866,7 +6866,7 @@ _ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm184467440737095 store i8 1, ptr %add.ptr68, align 1 %add.ptr70 = getelementptr inbounds i8, ptr %126, i64 16 %cmp71.not = icmp eq i64 %stack.1, -1 - br i1 %cmp71.not, label %do.body.i197, label %do.body.i + br i1 %cmp71.not, label %do.body.i196, label %do.body.i do.body.i: ; preds = %_ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EE.exit store i8 4, ptr %add.ptr70, align 1 @@ -6874,44 +6874,43 @@ do.body.i: ; preds = %_ZN4mold3elfL9to_st br label %do.body.i186 do.body.i186: ; preds = %do.body.i186, %do.body.i - %i.0.i187 = phi i64 [ 0, %do.body.i ], [ %inc.i194, %do.body.i186 ] - %val.addr.0.i188 = phi i64 [ %stack.1, %do.body.i ], [ %shr.i190, %do.body.i186 ] + %i.0.i187 = phi i64 [ 0, %do.body.i ], [ %inc.i193, %do.body.i186 ] + %val.addr.0.i188 = phi i64 [ %stack.1, %do.body.i ], [ %shr.i189, %do.body.i186 ] %127 = trunc i64 %val.addr.0.i188 to i8 - %conv.i189 = and i8 %127, 127 - %shr.i190 = lshr i64 %val.addr.0.i188, 7 - %tobool.not.i191 = icmp ult i64 %val.addr.0.i188, 128 - %masksel.i192 = select i1 %tobool.not.i191, i8 0, i8 -128 - %cond.i193 = or disjoint i8 %conv.i189, %masksel.i192 - %inc.i194 = add nuw nsw i64 %i.0.i187, 1 - %arrayidx.i195 = getelementptr inbounds i8, ptr %add.ptr74, i64 %i.0.i187 - store i8 %cond.i193, ptr %arrayidx.i195, align 1 - br i1 %tobool.not.i191, label %_ZN4mold10write_ulebEPhm.exit196, label %do.body.i186, !llvm.loop !43 - -_ZN4mold10write_ulebEPhm.exit196: ; preds = %do.body.i186 - %add.ptr76 = getelementptr inbounds i8, ptr %add.ptr74, i64 %inc.i194 - br label %do.body.i197 - -do.body.i197: ; preds = %_ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EE.exit, %_ZN4mold10write_ulebEPhm.exit196 - %p.0 = phi ptr [ %add.ptr76, %_ZN4mold10write_ulebEPhm.exit196 ], [ %add.ptr70, %_ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EE.exit ] + %shr.i189 = lshr i64 %val.addr.0.i188, 7 + %tobool.not.i190 = icmp ult i64 %val.addr.0.i188, 128 + %or.i191 = or i8 %127, -128 + %cond.i192 = select i1 %tobool.not.i190, i8 %127, i8 %or.i191 + %inc.i193 = add nuw nsw i64 %i.0.i187, 1 + %arrayidx.i194 = getelementptr inbounds i8, ptr %add.ptr74, i64 %i.0.i187 + store i8 %cond.i192, ptr %arrayidx.i194, align 1 + br i1 %tobool.not.i190, label %_ZN4mold10write_ulebEPhm.exit195, label %do.body.i186, !llvm.loop !43 + +_ZN4mold10write_ulebEPhm.exit195: ; preds = %do.body.i186 + %add.ptr76 = getelementptr inbounds i8, ptr %add.ptr74, i64 %inc.i193 + br label %do.body.i196 + +do.body.i196: ; preds = %_ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EE.exit, %_ZN4mold10write_ulebEPhm.exit195 + %p.0 = phi ptr [ %add.ptr76, %_ZN4mold10write_ulebEPhm.exit195 ], [ %add.ptr70, %_ZN4mold3elfL9to_stringB5cxx11ESt4spanINS0_12_GLOBAL__N_14ExtnELm18446744073709551615EE.exit ] store i8 5, ptr %p.0, align 1 %add.ptr79 = getelementptr inbounds i8, ptr %p.0, i64 1 %128 = load ptr, ptr %arch_str, align 8 %129 = load i64, ptr %_M_string_length.i, align 8 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr79, ptr align 1 %128, i64 %129, i1 false) - %add.ptr.i208 = getelementptr i8, ptr %add.ptr79, i64 %129 - store i8 0, ptr %add.ptr.i208, align 1 - %add.ptr83 = getelementptr i8, ptr %add.ptr.i208, i64 1 - br i1 %spec.select, label %do.body.i210, label %if.end90 + %add.ptr.i206 = getelementptr i8, ptr %add.ptr79, i64 %129 + store i8 0, ptr %add.ptr.i206, align 1 + %add.ptr83 = getelementptr i8, ptr %add.ptr.i206, i64 1 + br i1 %spec.select, label %do.body.i208, label %if.end90 -do.body.i210: ; preds = %do.body.i197 +do.body.i208: ; preds = %do.body.i196 store i8 6, ptr %add.ptr83, align 1 - %add.ptr87 = getelementptr i8, ptr %add.ptr.i208, i64 2 + %add.ptr87 = getelementptr i8, ptr %add.ptr.i206, i64 2 store i8 1, ptr %add.ptr87, align 1 - %add.ptr89 = getelementptr i8, ptr %add.ptr.i208, i64 3 + %add.ptr89 = getelementptr i8, ptr %add.ptr.i206, i64 3 br label %if.end90 -if.end90: ; preds = %do.body.i210, %do.body.i197 - %p.1 = phi ptr [ %add.ptr89, %do.body.i210 ], [ %add.ptr83, %do.body.i197 ] +if.end90: ; preds = %do.body.i208, %do.body.i196 + %p.1 = phi ptr [ %add.ptr89, %do.body.i208 ], [ %add.ptr83, %do.body.i196 ] %130 = load ptr, ptr %contents, align 8 %sub.ptr.lhs.cast = ptrtoint ptr %p.1 to i64 %sub.ptr.rhs.cast = ptrtoint ptr %130 to i64 @@ -6931,8 +6930,8 @@ if.end90: ; preds = %do.body.i210, %do.b store i32 %134, ptr %sh_size, align 4 %135 = load ptr, ptr %arch_str, align 8 %136 = getelementptr inbounds i8, ptr %arch_str, i64 16 - %cmp.i.i.i232 = icmp eq ptr %135, %136 - br i1 %cmp.i.i.i232, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i233 + %cmp.i.i.i228 = icmp eq ptr %135, %136 + br i1 %cmp.i.i.i228, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i229 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %if.end90 %137 = load i64, ptr %_M_string_length.i, align 8 @@ -6940,47 +6939,47 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.threa call void @llvm.assume(i1 %cmp3.i.i.i) br label %cleanup -if.then.i.i233: ; preds = %if.end90 +if.then.i.i229: ; preds = %if.end90 call void @_ZdlPv(ptr noundef %135) #30 br label %cleanup -cleanup: ; preds = %if.then.i.i233, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i +cleanup: ; preds = %if.then.i.i229, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %arch_str) #21 - br label %for.body.i.i.i.i237 - -for.body.i.i.i.i237: ; preds = %cleanup, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241 - %__first.addr.04.i.i.i.i238 = phi ptr [ %incdec.ptr.i.i.i.i242, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241 ], [ %arch.sroa.0.1, %cleanup ] - %138 = load ptr, ptr %__first.addr.04.i.i.i.i238, align 8 - %139 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i238, i64 16 - %cmp.i.i.i.i.i.i.i.i.i.i239 = icmp eq ptr %138, %139 - br i1 %cmp.i.i.i.i.i.i.i.i.i.i239, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i250, label %if.then.i.i.i.i.i.i.i.i.i240 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i250: ; preds = %for.body.i.i.i.i237 - %_M_string_length.i.i.i.i.i.i.i.i.i.i251 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i238, i64 8 - %140 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i251, align 8 - %cmp3.i.i.i.i.i.i.i.i.i.i252 = icmp ult i64 %140, 16 - call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i.i252) - br label %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241 - -if.then.i.i.i.i.i.i.i.i.i240: ; preds = %for.body.i.i.i.i237 + br label %for.body.i.i.i.i233 + +for.body.i.i.i.i233: ; preds = %cleanup, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237 + %__first.addr.04.i.i.i.i234 = phi ptr [ %incdec.ptr.i.i.i.i238, %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237 ], [ %arch.sroa.0.1, %cleanup ] + %138 = load ptr, ptr %__first.addr.04.i.i.i.i234, align 8 + %139 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i234, i64 16 + %cmp.i.i.i.i.i.i.i.i.i.i235 = icmp eq ptr %138, %139 + br i1 %cmp.i.i.i.i.i.i.i.i.i.i235, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i246, label %if.then.i.i.i.i.i.i.i.i.i236 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i246: ; preds = %for.body.i.i.i.i233 + %_M_string_length.i.i.i.i.i.i.i.i.i.i247 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i234, i64 8 + %140 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i247, align 8 + %cmp3.i.i.i.i.i.i.i.i.i.i248 = icmp ult i64 %140, 16 + call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i.i.i248) + br label %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237 + +if.then.i.i.i.i.i.i.i.i.i236: ; preds = %for.body.i.i.i.i233 call void @_ZdlPv(ptr noundef %138) #30 - br label %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241 + br label %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237 -_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241: ; preds = %if.then.i.i.i.i.i.i.i.i.i240, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i250 - call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__first.addr.04.i.i.i.i238) #21 - %incdec.ptr.i.i.i.i242 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i238, i64 48 - %cmp.not.i.i.i.i243 = icmp eq ptr %incdec.ptr.i.i.i.i242, %arch.sroa.16.1 - br i1 %cmp.not.i.i.i.i243, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i246, label %for.body.i.i.i.i237, !llvm.loop !28 +_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237: ; preds = %if.then.i.i.i.i.i.i.i.i.i236, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i.i.i.i246 + call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %__first.addr.04.i.i.i.i234) #21 + %incdec.ptr.i.i.i.i238 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i.i234, i64 48 + %cmp.not.i.i.i.i239 = icmp eq ptr %incdec.ptr.i.i.i.i238, %arch.sroa.16.1 + br i1 %cmp.not.i.i.i.i239, label %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i242, label %for.body.i.i.i.i233, !llvm.loop !28 -_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i246: ; preds = %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i241, %for.end - %tobool.not.i.i.i248 = icmp eq ptr %arch.sroa.0.1, null - br i1 %tobool.not.i.i.i248, label %cleanup.cont, label %if.then.i.i.i249 +_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i242: ; preds = %_ZSt8_DestroyIN4mold3elf12_GLOBAL__N_14ExtnEEvPT_.exit.i.i.i.i237, %for.end + %tobool.not.i.i.i244 = icmp eq ptr %arch.sroa.0.1, null + br i1 %tobool.not.i.i.i244, label %cleanup.cont, label %if.then.i.i.i245 -if.then.i.i.i249: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i246 +if.then.i.i.i245: ; preds = %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i242 call void @_ZdlPv(ptr noundef nonnull %arch.sroa.0.1) #30 br label %cleanup.cont -cleanup.cont: ; preds = %if.end, %if.then.i.i.i249, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i246, %entry +cleanup.cont: ; preds = %if.end, %if.then.i.i.i245, %_ZSt8_DestroyIPN4mold3elf12_GLOBAL__N_14ExtnES3_EvT_S5_RSaIT0_E.exit.i242, %entry ret void } diff --git a/bench/node/optimized/simdutf.ll b/bench/node/optimized/simdutf.ll index 78ab3c7b3cb..1bc9a36b5d5 100644 --- a/bench/node/optimized/simdutf.ll +++ b/bench/node/optimized/simdutf.ll @@ -26319,19 +26319,19 @@ return: ; preds = %_ZN7simdutf6scalar1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define dso_local noundef range(i64 -4611686018427387904, 4611686018427387903) i64 @_ZNK7simdutf7haswell14implementation23convert_latin1_to_utf32EPKcmPDi(ptr nocapture nonnull readnone align 8 %this, ptr noundef readonly %buf, i64 noundef %len, ptr noundef %utf32_output) unnamed_addr #19 align 2 { entry: - %xor.i = and i64 %len, -8 - %cmp9.not.i = icmp eq i64 %xor.i, 0 + %0 = and i64 %len, -8 + %cmp9.not.i = icmp eq i64 %0, 0 br i1 %cmp9.not.i, label %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_latin1_to_utf32EPKcmPDi.exit, label %for.body.i for.body.i: ; preds = %entry, %for.body.i %i.010.i = phi i64 [ %add.i, %for.body.i ], [ 0, %entry ] %arrayidx.i = getelementptr inbounds i8, ptr %buf, i64 %i.010.i - %0 = load <8 x i8>, ptr %arrayidx.i, align 1 - %conv.i.i = zext <8 x i8> %0 to <8 x i32> + %1 = load <8 x i8>, ptr %arrayidx.i, align 1 + %conv.i.i = zext <8 x i8> %1 to <8 x i32> %arrayidx2.i = getelementptr inbounds i32, ptr %utf32_output, i64 %i.010.i store <8 x i32> %conv.i.i, ptr %arrayidx2.i, align 1 %add.i = add nuw i64 %i.010.i, 8 - %cmp.i = icmp ult i64 %add.i, %xor.i + %cmp.i = icmp ult i64 %add.i, %0 br i1 %cmp.i, label %for.body.i, label %if.end, !llvm.loop !330 _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_latin1_to_utf32EPKcmPDi.exit: ; preds = %entry @@ -26339,10 +26339,10 @@ _ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_latin1_to_utf32EPKcmPDi.exit: ; br i1 %cmp, label %return, label %if.end if.end: ; preds = %for.body.i, %_ZN7simdutf7haswell12_GLOBAL__N_128avx2_convert_latin1_to_utf32EPKcmPDi.exit - %add.ptr.i17 = getelementptr inbounds i8, ptr %buf, i64 %xor.i - %add.ptr4.i18 = getelementptr inbounds i32, ptr %utf32_output, i64 %xor.i + %add.ptr.i17 = getelementptr inbounds i8, ptr %buf, i64 %0 + %add.ptr4.i18 = getelementptr inbounds i32, ptr %utf32_output, i64 %0 %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr4.i18 to i64 - %cmp3.not = icmp eq i64 %xor.i, %len + %cmp3.not = icmp eq i64 %0, %len br i1 %cmp3.not, label %return, label %if.then4 if.then4: ; preds = %if.end @@ -26354,8 +26354,8 @@ for.body.i12: ; preds = %if.then4, %for.body %i.07.i = phi i64 [ %inc.i, %for.body.i12 ], [ 0, %if.then4 ] %utf32_output.addr.06.i = phi ptr [ %incdec.ptr.i, %for.body.i12 ], [ %add.ptr4.i18, %if.then4 ] %arrayidx.i13 = getelementptr inbounds i8, ptr %add.ptr.i17, i64 %i.07.i - %1 = load i8, ptr %arrayidx.i13, align 1 - %conv.i = zext i8 %1 to i32 + %2 = load i8, ptr %arrayidx.i13, align 1 + %conv.i = zext i8 %2 to i32 %incdec.ptr.i = getelementptr inbounds i8, ptr %utf32_output.addr.06.i, i64 4 store i32 %conv.i, ptr %utf32_output.addr.06.i, align 4 %inc.i = add nuw nsw i64 %i.07.i, 1 @@ -26372,7 +26372,7 @@ _ZN7simdutf6scalar12_GLOBAL__N_115latin1_to_utf327convertEPKcmPDi.exit: ; preds %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i.pre-phi, %sub.ptr.lhs.cast %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 2 %cmp12 = icmp eq ptr %utf32_output.addr.0.lcssa.i, %add.ptr4.i18 - %add = add nsw i64 %sub.ptr.div.i, %xor.i + %add = add nsw i64 %sub.ptr.div.i, %0 %spec.select = select i1 %cmp12, i64 0, i64 %add br label %return diff --git a/bench/ockam-rs/optimized/1j8f46ag92qmaepd.ll b/bench/ockam-rs/optimized/1j8f46ag92qmaepd.ll index 10eb7777dcc..e658a005218 100644 --- a/bench/ockam-rs/optimized/1j8f46ag92qmaepd.ll +++ b/bench/ockam-rs/optimized/1j8f46ag92qmaepd.ll @@ -131752,7 +131752,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i, ptr %.sroa.392.sroa.3.0..sroa.392.0..sroa_idx.sroa_idx, align 8 %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4, i64 32, i1 false) - br label %52 + br label %50 20: ; preds = %16 %21 = icmp eq i8 %17, -128 @@ -131763,7 +131763,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %24 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %23, ptr %24, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 25: ; preds = %20 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) @@ -131773,11 +131773,11 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %13, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) - br label %52 + br label %50 26: ; preds = %20 %27 = icmp ult i8 %17, -123 - br i1 %27, label %29, label %28 + br i1 %27, label %.lr.ph.preheader, label %28 28: ; preds = %26 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) @@ -131787,57 +131787,55 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %8, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) - br label %52 + br label %50 -29: ; preds = %26 - %30 = and i8 %17, 127 - %31 = zext nneg i8 %30 to i64 - %.not = icmp eq i8 %30, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph +.lr.ph.preheader: ; preds = %26 + %29 = xor i8 %17, -128 + %umax = zext nneg i8 %29 to i64 + br label %.lr.ph -._crit_edge: ; preds = %45, %29 - %.0127.lcssa = phi i32 [ 0, %29 ], [ %50, %45 ] +._crit_edge: ; preds = %43 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) - call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %.0127.lcssa) - %32 = load i32, ptr %11, align 8, !range !10563, !noundef !5 - %33 = icmp eq i32 %32, 2 - %34 = getelementptr inbounds i8, ptr %11, i64 4 - %35 = load i32, ptr %34, align 4 - br i1 %33, label %38, label %41 - -.lr.ph: ; preds = %29, %45 - %.0127210 = phi i32 [ %50, %45 ], [ 0, %29 ] - %.sroa.025.0209 = phi i64 [ %47, %45 ], [ 0, %29 ] + call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %48) + %30 = load i32, ptr %11, align 8, !range !10563, !noundef !5 + %31 = icmp eq i32 %30, 2 + %32 = getelementptr inbounds i8, ptr %11, i64 4 + %33 = load i32, ptr %32, align 4 + br i1 %31, label %36, label %39 + +.lr.ph: ; preds = %.lr.ph.preheader, %43 + %.0127210 = phi i32 [ %48, %43 ], [ 0, %.lr.ph.preheader ] + %.sroa.025.0209 = phi i64 [ %45, %43 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !17977 store i8 0, ptr %4, align 1, !noalias !17977 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !17977 call void @"_ZN82_$LT$der..reader..nested..NestedReader$LT$R$GT$$u20$as$u20$der..reader..Reader$GT$9read_into17hc601bc601191414cE.llvm.886194288487101291"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !17981 - %36 = load i32, ptr %3, align 8, !range !10563, !noalias !17977, !noundef !5 - %37 = icmp eq i32 %36, 2 - br i1 %37, label %45, label %51 + %34 = load i32, ptr %3, align 8, !range !10563, !noalias !17977, !noundef !5 + %35 = icmp eq i32 %34, 2 + br i1 %35, label %43, label %49 -38: ; preds = %._crit_edge +36: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - %39 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %35) - %.fca.0.extract = extractvalue { i8, i8 } %39, 0 - %.fca.1.extract = extractvalue { i8, i8 } %39, 1 + %37 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %33) + %.fca.0.extract = extractvalue { i8, i8 } %37, 0 + %.fca.1.extract = extractvalue { i8, i8 } %37, 1 %trunc = trunc i8 %.fca.0.extract to i1 - %40 = icmp eq i8 %.fca.1.extract, %17 - %.0 = select i1 %trunc, i1 %40, i1 false - br i1 %.0, label %43, label %42 + %38 = icmp eq i8 %.fca.1.extract, %17 + %.0 = select i1 %trunc, i1 %38, i1 false + br i1 %.0, label %41, label %40 -41: ; preds = %._crit_edge +39: ; preds = %._crit_edge %.sroa.5121.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.5121.0..sroa_idx, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - store i32 %32, ptr %0, align 8 + store i32 %30, ptr %0, align 8 %.sroa.2123.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %.sroa.2123.0..sroa_idx, align 4 + store i32 %33, ptr %.sroa.2123.0..sroa_idx, align 4 %.sroa.3124.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, i64 48, i1 false) - br label %52 + br label %50 -42: ; preds = %38 +40: ; preds = %36 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) store i8 13, ptr %9, align 8 @@ -131845,26 +131843,26 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %10, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) - br label %52 + br label %50 -43: ; preds = %38 - %44 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %44, align 4 +41: ; preds = %36 + %42 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %33, ptr %42, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 -45: ; preds = %.lr.ph - %46 = shl i32 %.0127210, 8 - %47 = add nuw nsw i64 %.sroa.025.0209, 1 +43: ; preds = %.lr.ph + %44 = shl i32 %.0127210, 8 + %45 = add nuw nsw i64 %.sroa.025.0209, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !17977 - %48 = load i8, ptr %4, align 1, !noalias !17977, !noundef !5 + %46 = load i8, ptr %4, align 1, !noalias !17977, !noundef !5 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17977 - %49 = zext i8 %48 to i32 - %50 = or disjoint i32 %46, %49 - %exitcond.not = icmp eq i64 %47, %31 + %47 = zext i8 %46 to i32 + %48 = or disjoint i32 %44, %47 + %exitcond.not = icmp eq i64 %45, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -51: ; preds = %.lr.ph +49: ; preds = %.lr.ph %.sroa.416.0..sroa_idx.i134 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.416.0.copyload.i135 = load i32, ptr %.sroa.416.0..sroa_idx.i134, align 4, !noalias !17977 %.sroa.517.0..sroa_idx.i136 = getelementptr inbounds i8, ptr %3, i64 8 @@ -131878,7 +131876,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %.sroa.4.sroa.6.0.extract.shift152 = lshr i32 %.sroa.416.0.copyload.i135, 8 %.sroa.4.sroa.6.0.extract.trunc153 = trunc nuw i32 %.sroa.4.sroa.6.0.extract.shift152 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17977 - store i32 %36, ptr %0, align 8 + store i32 %34, ptr %0, align 8 %.sroa.2114.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.4.sroa.0151.0.extract.trunc, ptr %.sroa.2114.0..sroa_idx, align 4 %.sroa.3115.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -131889,9 +131887,9 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i139, ptr %.sroa.3115.sroa.3.0..sroa.3115.0..sroa_idx.sroa_idx, align 8 %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4, i64 32, i1 false) - br label %52 + br label %50 -52: ; preds = %19, %41, %51, %22, %25, %28, %43, %42 +50: ; preds = %19, %39, %49, %22, %25, %28, %41, %40 ret void } @@ -131951,7 +131949,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i, ptr %.sroa.392.sroa.3.0..sroa.392.0..sroa_idx.sroa_idx, align 8 %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4, i64 32, i1 false) - br label %52 + br label %50 20: ; preds = %16 %21 = icmp eq i8 %17, -128 @@ -131962,7 +131960,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %24 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %23, ptr %24, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 25: ; preds = %20 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) @@ -131972,11 +131970,11 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %13, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) - br label %52 + br label %50 26: ; preds = %20 %27 = icmp ult i8 %17, -123 - br i1 %27, label %29, label %28 + br i1 %27, label %.lr.ph.preheader, label %28 28: ; preds = %26 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) @@ -131986,57 +131984,55 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %8, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) - br label %52 + br label %50 -29: ; preds = %26 - %30 = and i8 %17, 127 - %31 = zext nneg i8 %30 to i64 - %.not = icmp eq i8 %30, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph +.lr.ph.preheader: ; preds = %26 + %29 = xor i8 %17, -128 + %umax = zext nneg i8 %29 to i64 + br label %.lr.ph -._crit_edge: ; preds = %45, %29 - %.0127.lcssa = phi i32 [ 0, %29 ], [ %50, %45 ] +._crit_edge: ; preds = %43 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) - call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %.0127.lcssa) - %32 = load i32, ptr %11, align 8, !range !10563, !noundef !5 - %33 = icmp eq i32 %32, 2 - %34 = getelementptr inbounds i8, ptr %11, i64 4 - %35 = load i32, ptr %34, align 4 - br i1 %33, label %38, label %41 - -.lr.ph: ; preds = %29, %45 - %.0127210 = phi i32 [ %50, %45 ], [ 0, %29 ] - %.sroa.025.0209 = phi i64 [ %47, %45 ], [ 0, %29 ] + call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %48) + %30 = load i32, ptr %11, align 8, !range !10563, !noundef !5 + %31 = icmp eq i32 %30, 2 + %32 = getelementptr inbounds i8, ptr %11, i64 4 + %33 = load i32, ptr %32, align 4 + br i1 %31, label %36, label %39 + +.lr.ph: ; preds = %.lr.ph.preheader, %43 + %.0127210 = phi i32 [ %48, %43 ], [ 0, %.lr.ph.preheader ] + %.sroa.025.0209 = phi i64 [ %45, %43 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !17987 store i8 0, ptr %4, align 1, !noalias !17987 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !17987 call void @"_ZN82_$LT$der..reader..nested..NestedReader$LT$R$GT$$u20$as$u20$der..reader..Reader$GT$9read_into17hfeb2d4cf27dd1ae7E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !17991 - %36 = load i32, ptr %3, align 8, !range !10563, !noalias !17987, !noundef !5 - %37 = icmp eq i32 %36, 2 - br i1 %37, label %45, label %51 + %34 = load i32, ptr %3, align 8, !range !10563, !noalias !17987, !noundef !5 + %35 = icmp eq i32 %34, 2 + br i1 %35, label %43, label %49 -38: ; preds = %._crit_edge +36: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - %39 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %35) - %.fca.0.extract = extractvalue { i8, i8 } %39, 0 - %.fca.1.extract = extractvalue { i8, i8 } %39, 1 + %37 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %33) + %.fca.0.extract = extractvalue { i8, i8 } %37, 0 + %.fca.1.extract = extractvalue { i8, i8 } %37, 1 %trunc = trunc i8 %.fca.0.extract to i1 - %40 = icmp eq i8 %.fca.1.extract, %17 - %.0 = select i1 %trunc, i1 %40, i1 false - br i1 %.0, label %43, label %42 + %38 = icmp eq i8 %.fca.1.extract, %17 + %.0 = select i1 %trunc, i1 %38, i1 false + br i1 %.0, label %41, label %40 -41: ; preds = %._crit_edge +39: ; preds = %._crit_edge %.sroa.5121.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.5121.0..sroa_idx, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - store i32 %32, ptr %0, align 8 + store i32 %30, ptr %0, align 8 %.sroa.2123.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %.sroa.2123.0..sroa_idx, align 4 + store i32 %33, ptr %.sroa.2123.0..sroa_idx, align 4 %.sroa.3124.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, i64 48, i1 false) - br label %52 + br label %50 -42: ; preds = %38 +40: ; preds = %36 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) store i8 13, ptr %9, align 8 @@ -132044,26 +132040,26 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %10, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) - br label %52 + br label %50 -43: ; preds = %38 - %44 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %44, align 4 +41: ; preds = %36 + %42 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %33, ptr %42, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 -45: ; preds = %.lr.ph - %46 = shl i32 %.0127210, 8 - %47 = add nuw nsw i64 %.sroa.025.0209, 1 +43: ; preds = %.lr.ph + %44 = shl i32 %.0127210, 8 + %45 = add nuw nsw i64 %.sroa.025.0209, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !17987 - %48 = load i8, ptr %4, align 1, !noalias !17987, !noundef !5 + %46 = load i8, ptr %4, align 1, !noalias !17987, !noundef !5 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17987 - %49 = zext i8 %48 to i32 - %50 = or disjoint i32 %46, %49 - %exitcond.not = icmp eq i64 %47, %31 + %47 = zext i8 %46 to i32 + %48 = or disjoint i32 %44, %47 + %exitcond.not = icmp eq i64 %45, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -51: ; preds = %.lr.ph +49: ; preds = %.lr.ph %.sroa.416.0..sroa_idx.i134 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.416.0.copyload.i135 = load i32, ptr %.sroa.416.0..sroa_idx.i134, align 4, !noalias !17987 %.sroa.517.0..sroa_idx.i136 = getelementptr inbounds i8, ptr %3, i64 8 @@ -132077,7 +132073,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %.sroa.4.sroa.6.0.extract.shift152 = lshr i32 %.sroa.416.0.copyload.i135, 8 %.sroa.4.sroa.6.0.extract.trunc153 = trunc nuw i32 %.sroa.4.sroa.6.0.extract.shift152 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17987 - store i32 %36, ptr %0, align 8 + store i32 %34, ptr %0, align 8 %.sroa.2114.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.4.sroa.0151.0.extract.trunc, ptr %.sroa.2114.0..sroa_idx, align 4 %.sroa.3115.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -132088,9 +132084,9 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i139, ptr %.sroa.3115.sroa.3.0..sroa.3115.0..sroa_idx.sroa_idx, align 8 %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4, i64 32, i1 false) - br label %52 + br label %50 -52: ; preds = %19, %41, %51, %22, %25, %28, %43, %42 +50: ; preds = %19, %39, %49, %22, %25, %28, %41, %40 ret void } @@ -132150,7 +132146,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i, ptr %.sroa.392.sroa.3.0..sroa.392.0..sroa_idx.sroa_idx, align 8 %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4.0..sroa.392.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.392.sroa.4, i64 32, i1 false) - br label %52 + br label %50 20: ; preds = %16 %21 = icmp eq i8 %17, -128 @@ -132161,7 +132157,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %24 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %23, ptr %24, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 25: ; preds = %20 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) @@ -132171,11 +132167,11 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %13, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) - br label %52 + br label %50 26: ; preds = %20 %27 = icmp ult i8 %17, -123 - br i1 %27, label %29, label %28 + br i1 %27, label %.lr.ph.preheader, label %28 28: ; preds = %26 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %8) @@ -132185,57 +132181,55 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %8, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %8) - br label %52 + br label %50 -29: ; preds = %26 - %30 = and i8 %17, 127 - %31 = zext nneg i8 %30 to i64 - %.not = icmp eq i8 %30, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph +.lr.ph.preheader: ; preds = %26 + %29 = xor i8 %17, -128 + %umax = zext nneg i8 %29 to i64 + br label %.lr.ph -._crit_edge: ; preds = %45, %29 - %.0127.lcssa = phi i32 [ 0, %29 ], [ %50, %45 ] +._crit_edge: ; preds = %43 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) - call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %.0127.lcssa) - %32 = load i32, ptr %11, align 8, !range !10563, !noundef !5 - %33 = icmp eq i32 %32, 2 - %34 = getelementptr inbounds i8, ptr %11, i64 4 - %35 = load i32, ptr %34, align 4 - br i1 %33, label %38, label %41 - -.lr.ph: ; preds = %29, %45 - %.0127210 = phi i32 [ %50, %45 ], [ 0, %29 ] - %.sroa.025.0209 = phi i64 [ %47, %45 ], [ 0, %29 ] + call void @"_ZN73_$LT$der..length..Length$u20$as$u20$core..convert..TryFrom$LT$u32$GT$$GT$8try_from17h5ca2265a6a4372a4E"(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %11, i32 noundef %48) + %30 = load i32, ptr %11, align 8, !range !10563, !noundef !5 + %31 = icmp eq i32 %30, 2 + %32 = getelementptr inbounds i8, ptr %11, i64 4 + %33 = load i32, ptr %32, align 4 + br i1 %31, label %36, label %39 + +.lr.ph: ; preds = %.lr.ph.preheader, %43 + %.0127210 = phi i32 [ %48, %43 ], [ 0, %.lr.ph.preheader ] + %.sroa.025.0209 = phi i64 [ %45, %43 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !17997 store i8 0, ptr %4, align 1, !noalias !17997 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !17997 call void @_ZN3der6reader6Reader9read_into17h22335ac301972a55E.llvm.886194288487101291(ptr noalias nocapture noundef nonnull sret({ i32, [13 x i32] }) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !18001 - %36 = load i32, ptr %3, align 8, !range !10563, !noalias !17997, !noundef !5 - %37 = icmp eq i32 %36, 2 - br i1 %37, label %45, label %51 + %34 = load i32, ptr %3, align 8, !range !10563, !noalias !17997, !noundef !5 + %35 = icmp eq i32 %34, 2 + br i1 %35, label %43, label %49 -38: ; preds = %._crit_edge +36: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - %39 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %35) - %.fca.0.extract = extractvalue { i8, i8 } %39, 0 - %.fca.1.extract = extractvalue { i8, i8 } %39, 1 + %37 = call { i8, i8 } @_ZN3der6length6Length13initial_octet17h3479d4ffaafc5d46E(i32 noundef %33) + %.fca.0.extract = extractvalue { i8, i8 } %37, 0 + %.fca.1.extract = extractvalue { i8, i8 } %37, 1 %trunc = trunc i8 %.fca.0.extract to i1 - %40 = icmp eq i8 %.fca.1.extract, %17 - %.0 = select i1 %trunc, i1 %40, i1 false - br i1 %.0, label %43, label %42 + %38 = icmp eq i8 %.fca.1.extract, %17 + %.0 = select i1 %trunc, i1 %38, i1 false + br i1 %.0, label %41, label %40 -41: ; preds = %._crit_edge +39: ; preds = %._crit_edge %.sroa.5121.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.5121.0..sroa_idx, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11) - store i32 %32, ptr %0, align 8 + store i32 %30, ptr %0, align 8 %.sroa.2123.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %.sroa.2123.0..sroa_idx, align 4 + store i32 %33, ptr %.sroa.2123.0..sroa_idx, align 4 %.sroa.3124.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.3124, i64 48, i1 false) - br label %52 + br label %50 -42: ; preds = %38 +40: ; preds = %36 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) store i8 13, ptr %9, align 8 @@ -132243,26 +132237,26 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %0, ptr noundef nonnull align 8 dereferenceable(56) %10, i64 56, i1 false) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) - br label %52 + br label %50 -43: ; preds = %38 - %44 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %35, ptr %44, align 4 +41: ; preds = %36 + %42 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %33, ptr %42, align 4 store i32 2, ptr %0, align 8 - br label %52 + br label %50 -45: ; preds = %.lr.ph - %46 = shl i32 %.0127210, 8 - %47 = add nuw nsw i64 %.sroa.025.0209, 1 +43: ; preds = %.lr.ph + %44 = shl i32 %.0127210, 8 + %45 = add nuw nsw i64 %.sroa.025.0209, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !17997 - %48 = load i8, ptr %4, align 1, !noalias !17997, !noundef !5 + %46 = load i8, ptr %4, align 1, !noalias !17997, !noundef !5 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17997 - %49 = zext i8 %48 to i32 - %50 = or disjoint i32 %46, %49 - %exitcond.not = icmp eq i64 %47, %31 + %47 = zext i8 %46 to i32 + %48 = or disjoint i32 %44, %47 + %exitcond.not = icmp eq i64 %45, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -51: ; preds = %.lr.ph +49: ; preds = %.lr.ph %.sroa.416.0..sroa_idx.i134 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.416.0.copyload.i135 = load i32, ptr %.sroa.416.0..sroa_idx.i134, align 4, !noalias !17997 %.sroa.517.0..sroa_idx.i136 = getelementptr inbounds i8, ptr %3, i64 8 @@ -132276,7 +132270,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %.sroa.4.sroa.6.0.extract.shift152 = lshr i32 %.sroa.416.0.copyload.i135, 8 %.sroa.4.sroa.6.0.extract.trunc153 = trunc nuw i32 %.sroa.4.sroa.6.0.extract.shift152 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !17997 - store i32 %36, ptr %0, align 8 + store i32 %34, ptr %0, align 8 %.sroa.2114.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.4.sroa.0151.0.extract.trunc, ptr %.sroa.2114.0..sroa_idx, align 4 %.sroa.3115.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -132287,9 +132281,9 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store i64 %.sroa.618.0.copyload.i139, ptr %.sroa.3115.sroa.3.0..sroa.3115.0..sroa_idx.sroa_idx, align 8 %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4.0..sroa.3115.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.3115.sroa.4, i64 32, i1 false) - br label %52 + br label %50 -52: ; preds = %19, %41, %51, %22, %25, %28, %43, %42 +50: ; preds = %19, %39, %49, %22, %25, %28, %41, %40 ret void } diff --git a/bench/oiio/optimized/maketexture.cpp.ll b/bench/oiio/optimized/maketexture.cpp.ll index 3e34b82106e..b5b62131af0 100644 --- a/bench/oiio/optimized/maketexture.cpp.ll +++ b/bench/oiio/optimized/maketexture.cpp.ll @@ -61743,9 +61743,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -61967,9 +61967,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -62198,9 +62198,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -62475,9 +62475,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -62706,9 +62706,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -62937,9 +62937,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -63168,9 +63168,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -63395,9 +63395,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 @@ -63622,9 +63622,9 @@ if.end: ; preds = %lor.lhs.false, %ent %5 = load i32, ptr %roi, align 8 %sub.i = sub nsw i32 %4, %5 %mul = mul nsw i32 %sub.i, %call6 - %conv = sext i32 %mul to i64 + %conv = zext i32 %mul to i64 %6 = icmp slt i32 %mul, 0 - %7 = shl nsw i64 %conv, 2 + %7 = shl nuw nsw i64 %conv, 2 %8 = select i1 %6, i64 -1, i64 %7 %call8 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 %call9 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %8) #26 diff --git a/bench/opencv/optimized/linemod.cpp.ll b/bench/opencv/optimized/linemod.cpp.ll index ef3f1bcfced..3e1911103e2 100644 --- a/bench/opencv/optimized/linemod.cpp.ll +++ b/bench/opencv/optimized/linemod.cpp.ll @@ -3124,8 +3124,8 @@ _ZNSt6vectorI7CvPointSaIS0_EE9push_backERKS0_.exit.i: ; preds = %_ZNSt6vectorI7C %135 = ptrtoint ptr %134 to i64 %136 = ptrtoint ptr %133 to i64 %137 = sub i64 %135, %136 - %sext558.i = shl i64 %137, 29 - %138 = ashr i64 %sext558.i, 32 + %sext.i = shl i64 %137, 29 + %138 = ashr i64 %sext.i, 32 %139 = icmp slt i64 %indvars.iv.next497.i, %138 br i1 %139, label %.lr.ph430.i, label %._crit_edge.i, !llvm.loop !33 @@ -3216,13 +3216,13 @@ _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %.noexc220.i, % .noexc221.i: ; preds = %155, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i, %.preheader401.i %180 = phi i1 [ false, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ false, %.preheader401.i ], [ true, %155 ] %181 = phi i32 [ %149, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ 0, %.preheader401.i ], [ %149, %155 ] - %.0.lcssa.i.i.i.i.i580.i = phi i64 [ %.0.lcssa.i.i.i.i.i.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ 0, %.preheader401.i ], [ %.0.lcssa.i.i.i.i.i.i, %155 ] - %.sroa.0339.2578.i = phi ptr [ %.sroa.0339.2.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ null, %.preheader401.i ], [ %.sroa.0339.2.i, %155 ] + %.0.lcssa.i.i.i.i.i579.i = phi i64 [ %.0.lcssa.i.i.i.i.i.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ 0, %.preheader401.i ], [ %.0.lcssa.i.i.i.i.i.i, %155 ] + %.sroa.0339.2577.i = phi ptr [ %.sroa.0339.2.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ null, %.preheader401.i ], [ %.sroa.0339.2.i, %155 ] %182 = phi i64 [ %143, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ 0, %.preheader401.i ], [ %143, %155 ] - %.sroa.0372.2.lcssa566573577.i = phi ptr [ %.sroa.0372.4.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ null, %.preheader401.i ], [ %.sroa.0372.4.i, %155 ] + %.sroa.0372.2.lcssa565572576.i = phi ptr [ %.sroa.0372.4.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i ], [ null, %.preheader401.i ], [ %.sroa.0372.4.i, %155 ] %183 = fdiv double 1.000000e+00, %3 - %184 = ptrtoint ptr %.sroa.0339.2578.i to i64 - %185 = sub i64 %.0.lcssa.i.i.i.i.i580.i, %184 + %184 = ptrtoint ptr %.sroa.0339.2577.i to i64 + %185 = sub i64 %.0.lcssa.i.i.i.i.i579.i, %184 %186 = sdiv exact i64 %185, 24 %187 = trunc i64 %186 to i32 %188 = icmp sgt i32 %187, 0 @@ -3235,7 +3235,7 @@ _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %.noexc220.i, % .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.i.preheader.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %.lr.ph.i.i ], [ 0, %.lr.ph.i.preheader.i ] - %189 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2578.i, i64 %indvars.iv.i.i + %189 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2577.i, i64 %indvars.iv.i.i %190 = getelementptr inbounds i8, ptr %189, i64 16 %191 = load double, ptr %190, align 8 %192 = load double, ptr %189, align 8 @@ -3243,12 +3243,12 @@ _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit.i: ; preds = %.noexc220.i, % %194 = fmul double %183, %191 %195 = fmul double %194, %193 store double %195, ptr %189, align 8 - %196 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2578.i, i64 %indvars.iv.i.i, i32 1 + %196 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2577.i, i64 %indvars.iv.i.i, i32 1 %197 = load double, ptr %196, align 8 %198 = fadd double %197, -2.400000e+02 %199 = fmul double %194, %198 store double %199, ptr %196, align 8 - %200 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2578.i, i64 %indvars.iv.i.i, i32 2 + %200 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2577.i, i64 %indvars.iv.i.i, i32 2 store double %191, ptr %200, align 8 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond504.not.i = icmp eq i64 %indvars.iv.next.i.i, %umax.i @@ -3280,7 +3280,7 @@ _ZL15reprojectPointsRKSt6vectorIN2cv7Point3_IdEESaIS2_EERS4_d.exit.i: ; preds = .lr.ph438.i: ; preds = %.lr.ph438.i, %.lr.ph438.preheader.i %indvars.iv505.i = phi i64 [ 0, %.lr.ph438.preheader.i ], [ %indvars.iv.next506.i, %.lr.ph438.i ] - %209 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2578.i, i64 %indvars.iv505.i + %209 = getelementptr inbounds %"class.cv::Point3_", ptr %.sroa.0339.2577.i, i64 %indvars.iv505.i %210 = load double, ptr %209, align 8 %211 = fptrunc double %210 to float %212 = load ptr, ptr %207, align 8 @@ -3437,9 +3437,9 @@ _ZL15reprojectPointsRKSt6vectorIN2cv7Point3_IdEESaIS2_EERS4_d.exit.i: ; preds = %307 = sub i32 %.0388.lcssa.i, %.0390.lcssa.i %308 = add i32 %307, 1 store i32 %299, ptr %10, align 4 - %sext.i = shl i64 %297, 29 - %309 = ashr exact i64 %sext.i, 29 - %.inv.i = icmp sgt i64 %sext.i, -1 + %309 = and i64 %297, 34359738367 + %sext.mask.i = and i64 %297, 17179869184 + %.inv.i = icmp eq i64 %sext.mask.i, 0 %310 = select i1 %.inv.i, i64 %309, i64 -1 %311 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %310) #24 to label %312 unwind label %178 @@ -3541,8 +3541,8 @@ _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EEC2EmRKS3_.exit234.i: ; preds = %.noexc233.i %343 = sitofp i32 %342 to double %344 = mul nsw i64 %341, %340 %345 = getelementptr inbounds i8, ptr %336, i64 %344 - %sext559.i = shl i64 %.0197471.i, 32 - %346 = ashr exact i64 %sext559.i, 32 + %sext558.i = shl i64 %.0197471.i, 32 + %346 = ashr exact i64 %sext558.i, 32 br label %347 347: ; preds = %347, %.preheader398.i @@ -3633,8 +3633,8 @@ _ZL15reprojectPointsRKSt6vectorIN2cv7Point3_IdEESaIS2_EERS4_d.exit240.i: ; preds %.2484.i = phi i64 [ %429, %._crit_edge481.i ], [ 0, %.preheader397.preheader.i ] %385 = add nsw i32 %.0194485.i, %.0390.lcssa.i %386 = sitofp i32 %385 to double - %sext560.i = shl i64 %.2484.i, 32 - %387 = ashr exact i64 %sext560.i, 32 + %sext559.i = shl i64 %.2484.i, 32 + %387 = ashr exact i64 %sext559.i, 32 %388 = insertelement <2 x double> poison, double %386, i64 0 br label %389 @@ -3732,32 +3732,32 @@ _ZL15reprojectPointsRKSt6vectorIN2cv7Point3_IdEESaIS2_EERS4_d.exit240.i: ; preds br label %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit244.i _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit244.i: ; preds = %435, %434 - %.not.i.i.i245.i = icmp eq ptr %.sroa.0339.2578.i, null + %.not.i.i.i245.i = icmp eq ptr %.sroa.0339.2577.i, null br i1 %.not.i.i.i245.i, label %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit246.i, label %436 436: ; preds = %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit244.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.0339.2578.i) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0339.2577.i) #25 br label %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit246.i _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit246.i: ; preds = %436, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit244.i - %.not.i.i.i247.i = icmp eq ptr %.sroa.0372.2.lcssa566573577.i, null + %.not.i.i.i247.i = icmp eq ptr %.sroa.0372.2.lcssa565572576.i, null br i1 %.not.i.i.i247.i, label %_ZNSt6vectorIP9_IplImageSaIS1_EED2Ev.exit, label %437 437: ; preds = %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit246.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.0372.2.lcssa566573577.i) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0372.2.lcssa565572576.i) #25 br label %_ZNSt6vectorIP9_IplImageSaIS1_EED2Ev.exit _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i: ; preds = %428, %426, %357, %178 %.pn.i = phi { ptr, i32 } [ %179, %178 ], [ %358, %357 ], [ %427, %426 ], [ %427, %428 ] - %.not.i.i.i248.i = icmp eq ptr %.sroa.0339.2578.i, null + %.not.i.i.i248.i = icmp eq ptr %.sroa.0339.2577.i, null br i1 %.not.i.i.i248.i, label %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit249.i, label %438 438: ; preds = %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i - call void @_ZdlPv(ptr noundef nonnull %.sroa.0339.2578.i) #25 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0339.2577.i) #25 br label %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit249.i _ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit249.i: ; preds = %438, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i, %176, %.loopexit.split-lp.i, %.loopexit400.i - %.sroa.0372.1.i = phi ptr [ %.sroa.0372.4.i, %176 ], [ %.sroa.0372.2.lcssa566573577.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i ], [ %.sroa.0372.2.lcssa566573577.i, %438 ], [ %.sroa.0372.3419.i, %.loopexit400.i ], [ %.sroa.0372.0.ph.i, %.loopexit.split-lp.i ] + %.sroa.0372.1.i = phi ptr [ %.sroa.0372.4.i, %176 ], [ %.sroa.0372.2.lcssa565572576.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i ], [ %.sroa.0372.2.lcssa565572576.i, %438 ], [ %.sroa.0372.3419.i, %.loopexit400.i ], [ %.sroa.0372.0.ph.i, %.loopexit.split-lp.i ] %.pn215.i = phi { ptr, i32 } [ %177, %176 ], [ %.pn.i, %_ZNSt6vectorIN2cv7Point3_IdEESaIS2_EED2Ev.exit.i ], [ %.pn.i, %438 ], [ %lpad.loopexit.i, %.loopexit400.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] %.not.i.i.i250.i = icmp eq ptr %.sroa.0372.1.i, null br i1 %.not.i.i.i250.i, label %.body.thread, label %439 diff --git a/bench/opencv/optimized/onnx_importer.cpp.ll b/bench/opencv/optimized/onnx_importer.cpp.ll index a527b1cce13..6739f09c650 100644 --- a/bench/opencv/optimized/onnx_importer.cpp.ll +++ b/bench/opencv/optimized/onnx_importer.cpp.ll @@ -27317,7 +27317,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2cv3dnn14dnn4_v20 59: ; preds = %.noexc %60 = icmp slt i32 %54, 0 - %61 = ashr exact i64 %sext, 29 + %61 = lshr exact i64 %sext, 29 %62 = select i1 %60, i64 -1, i64 %61 %63 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %62) #29 to label %.noexc.i unwind label %71, !noalias !179 @@ -27622,7 +27622,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2cv3dnn14dnn4_v20 67: ; preds = %.noexc %68 = icmp slt i32 %62, 0 - %69 = ashr exact i64 %sext, 29 + %69 = lshr exact i64 %sext, 29 %70 = select i1 %68, i64 -1, i64 %69 %71 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %70) #29 to label %.noexc.i unwind label %79, !noalias !182 @@ -27687,7 +27687,7 @@ _ZN2cv3dnn14dnn4_v202405219DictValue8arrayIntIPiEES2_T_i.exit: ; preds = %.lr.ph 87: ; preds = %.noexc38 %88 = icmp slt i32 %62, 0 - %89 = ashr exact i64 %sext, 29 + %89 = lshr exact i64 %sext, 29 %90 = select i1 %88, i64 -1, i64 %89 %91 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %90) #29 to label %.noexc.i37 unwind label %98, !noalias !185 @@ -39071,7 +39071,7 @@ _ZNK11opencv_onnx9NodeProto10input_sizeEv.exit: ; preds = %50 68: ; preds = %.noexc %69 = icmp slt i32 %63, 0 - %70 = ashr exact i64 %sext, 29 + %70 = lshr exact i64 %sext, 29 %71 = select i1 %69, i64 -1, i64 %70 %72 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %71) #29 to label %.noexc.i unwind label %80, !noalias !239 @@ -40646,7 +40646,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN2cv3MatESt4lessIS 72: ; preds = %.noexc %73 = icmp slt i32 %67, 0 - %74 = ashr exact i64 %sext, 29 + %74 = lshr exact i64 %sext, 29 %75 = select i1 %73, i64 -1, i64 %74 %76 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %75) #29 to label %.noexc.i unwind label %84, !noalias !256 @@ -41292,7 +41292,7 @@ _ZNK2cv3dnn14dnn4_v202405214Dict3getIiEET_RKNSt7__cxx1112basic_stringIcSt11char_ 121: ; preds = %.noexc90 %122 = icmp slt i32 %116, 0 - %123 = ashr exact i64 %sext, 29 + %123 = lshr exact i64 %sext, 29 %124 = select i1 %122, i64 -1, i64 %123 %125 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %124) #29 to label %.noexc.i unwind label %133, !noalias !259 @@ -42142,7 +42142,7 @@ _ZN2cv3MataSERKNS_7MatExprE.exit: ; preds = %56 74: ; preds = %.noexc37 %75 = icmp slt i32 %69, 0 - %76 = ashr exact i64 %sext, 29 + %76 = lshr exact i64 %sext, 29 %77 = select i1 %75, i64 -1, i64 %76 %78 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #29 to label %.noexc.i unwind label %86, !noalias !266 diff --git a/bench/openssl/optimized/libcrypto-lib-scalar.ll b/bench/openssl/optimized/libcrypto-lib-scalar.ll index c93428549a3..9a784f142bd 100644 --- a/bench/openssl/optimized/libcrypto-lib-scalar.ll +++ b/bench/openssl/optimized/libcrypto-lib-scalar.ll @@ -358,12 +358,12 @@ if.then: ; preds = %entry if.end: ; preds = %entry %rem = urem i64 %ser_len, 56 - %sub = sub nuw i64 %ser_len, %rem %cmp1 = icmp eq i64 %rem, 0 - %sub3 = add i64 %sub, -56 - %spec.select = select i1 %cmp1, i64 %sub3, i64 %sub + %0 = sub nsw i64 0, %rem + %spec.select.p = select i1 %cmp1, i64 -56, i64 %0 + %spec.select = add i64 %spec.select.p, %ser_len %arrayidx = getelementptr inbounds i8, ptr %ser, i64 %spec.select - %sub5 = sub i64 %ser_len, %spec.select + %sub5 = sub nsw i64 0, %spec.select.p br label %for.cond1.preheader.i for.cond1.preheader.i: ; preds = %for.end.i, %if.end @@ -377,8 +377,8 @@ for.body4.i: ; preds = %for.cond1.preheader %k.110.i = phi i64 [ %inc5.i, %for.body4.i ], [ %k.014.i, %for.cond1.preheader.i ] %j.09.i = phi i64 [ %inc.i, %for.body4.i ], [ 0, %for.cond1.preheader.i ] %arrayidx.i = getelementptr inbounds i8, ptr %arrayidx, i64 %k.110.i - %0 = load i8, ptr %arrayidx.i, align 1 - %conv.i = zext i8 %0 to i64 + %1 = load i8, ptr %arrayidx.i, align 1 + %conv.i = zext i8 %1 to i64 %mul.i = shl nuw nsw i64 %j.09.i, 3 %shl.i = shl nuw i64 %conv.i, %mul.i %or.i = or i64 %shl.i, %out.011.i @@ -386,8 +386,8 @@ for.body4.i: ; preds = %for.cond1.preheader %inc5.i = add nuw i64 %k.110.i, 1 %cmp2.i = icmp ult i64 %j.09.i, 7 %cmp3.i = icmp ult i64 %inc5.i, %sub5 - %1 = select i1 %cmp2.i, i1 %cmp3.i, i1 false - br i1 %1, label %for.body4.i, label %for.end.i, !llvm.loop !11 + %2 = select i1 %cmp2.i, i1 %cmp3.i, i1 false + br i1 %2, label %for.body4.i, label %for.end.i, !llvm.loop !11 for.end.i: ; preds = %for.body4.i, %for.cond1.preheader.i %k.1.lcssa.i = phi i64 [ %k.014.i, %for.cond1.preheader.i ], [ %inc5.i, %for.body4.i ] @@ -430,8 +430,8 @@ for.body4.i.i: ; preds = %for.cond1.preheader %k.110.i.i = phi i64 [ %inc5.i.i, %for.body4.i.i ], [ %k.014.i.i, %for.cond1.preheader.i.i ] %j.09.i.i = phi i64 [ %inc.i.i, %for.body4.i.i ], [ 0, %for.cond1.preheader.i.i ] %arrayidx.i.i = getelementptr inbounds i8, ptr %add.ptr, i64 %k.110.i.i - %2 = load i8, ptr %arrayidx.i.i, align 1 - %conv.i.i = zext i8 %2 to i64 + %3 = load i8, ptr %arrayidx.i.i, align 1 + %conv.i.i = zext i8 %3 to i64 %mul.i.i = shl nuw nsw i64 %j.09.i.i, 3 %shl.i.i = shl nuw i64 %conv.i.i, %mul.i.i %or.i.i = or i64 %shl.i.i, %out.011.i.i @@ -439,8 +439,8 @@ for.body4.i.i: ; preds = %for.cond1.preheader %inc5.i.i = add nuw nsw i64 %k.110.i.i, 1 %cmp2.i.i = icmp ult i64 %j.09.i.i, 7 %cmp3.i.i = icmp ult i64 %k.110.i.i, 55 - %3 = and i1 %cmp3.i.i, %cmp2.i.i - br i1 %3, label %for.body4.i.i, label %for.end.i.i, !llvm.loop !11 + %4 = and i1 %cmp3.i.i, %cmp2.i.i + br i1 %4, label %for.body4.i.i, label %for.end.i.i, !llvm.loop !11 for.end.i.i: ; preds = %for.body4.i.i, %for.cond1.preheader.i.i %k.1.lcssa.i.i = phi i64 [ %k.014.i.i, %for.cond1.preheader.i.i ], [ %inc5.i.i, %for.body4.i.i ] @@ -460,12 +460,12 @@ for.body.i19: ; preds = %for.body.i19, %for. %indvars.iv.i20 = phi i64 [ 0, %for.body.i.preheader ], [ %indvars.iv.next.i25, %for.body.i19 ] %chain.010.i = phi i128 [ 0, %for.body.i.preheader ], [ %shr.i24, %for.body.i19 ] %arrayidx.i21 = getelementptr inbounds [7 x i64], ptr %t1, i64 0, i64 %indvars.iv.i20 - %4 = load i64, ptr %arrayidx.i21, align 8 - %conv.i22 = zext i64 %4 to i128 + %5 = load i64, ptr %arrayidx.i21, align 8 + %conv.i22 = zext i64 %5 to i128 %add.i23 = add nuw nsw i128 %chain.010.i, %conv.i22 %arrayidx3.i = getelementptr inbounds [7 x i64], ptr %t2, i64 0, i64 %indvars.iv.i20 - %5 = load i64, ptr %arrayidx3.i, align 8 - %conv4.i = zext i64 %5 to i128 + %6 = load i64, ptr %arrayidx3.i, align 8 + %conv4.i = zext i64 %6 to i128 %add5.i = add nuw nsw i128 %add.i23, %conv4.i %conv6.i = trunc i128 %add5.i to i64 store i64 %conv6.i, ptr %arrayidx.i21, align 8 @@ -478,12 +478,12 @@ for.body.i.i: ; preds = %for.body.i19, %for. %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %for.body.i.i ], [ 0, %for.body.i19 ] %chain.02.i.i = phi i128 [ %shr.i.i, %for.body.i.i ], [ 0, %for.body.i19 ] %arrayidx.i.i28 = getelementptr inbounds i64, ptr %t1, i64 %indvars.iv.i.i - %6 = load i64, ptr %arrayidx.i.i28, align 8 - %conv.i.i29 = zext i64 %6 to i128 + %7 = load i64, ptr %arrayidx.i.i28, align 8 + %conv.i.i29 = zext i64 %7 to i128 %add.i.i = add nsw i128 %chain.02.i.i, %conv.i.i29 %arrayidx2.i.i = getelementptr inbounds [7 x i64], ptr @sc_p, i64 0, i64 %indvars.iv.i.i - %7 = load i64, ptr %arrayidx2.i.i, align 8 - %conv3.i.i = zext i64 %7 to i128 + %8 = load i64, ptr %arrayidx2.i.i, align 8 + %conv3.i.i = zext i64 %8 to i128 %sub4.i.i = sub nsw i128 %add.i.i, %conv3.i.i %conv5.i.i = trunc i128 %sub4.i.i to i64 store i64 %conv5.i.i, ptr %arrayidx.i.i28, align 8 @@ -502,12 +502,12 @@ for.body14.i.i: ; preds = %for.body14.i.i, %fo %indvars.iv6.i.i = phi i64 [ 0, %for.end.i.i31 ], [ %indvars.iv.next7.i.i, %for.body14.i.i ] %chain.14.i.i = phi i128 [ 0, %for.end.i.i31 ], [ %shr29.i.i, %for.body14.i.i ] %arrayidx17.i.i = getelementptr inbounds [7 x i64], ptr %t1, i64 0, i64 %indvars.iv6.i.i - %8 = load i64, ptr %arrayidx17.i.i, align 8 - %conv18.i.i = zext i64 %8 to i128 + %9 = load i64, ptr %arrayidx17.i.i, align 8 + %conv18.i.i = zext i64 %9 to i128 %add19.i.i = add nuw nsw i128 %chain.14.i.i, %conv18.i.i %arrayidx22.i.i = getelementptr inbounds [7 x i64], ptr @sc_p, i64 0, i64 %indvars.iv6.i.i - %9 = load i64, ptr %arrayidx22.i.i, align 8 - %and.i.i = and i64 %9, %add10.i.i + %10 = load i64, ptr %arrayidx22.i.i, align 8 + %and.i.i = and i64 %10, %add10.i.i %conv23.i.i = zext i64 %and.i.i to i128 %add24.i.i = add nuw nsw i128 %add19.i.i, %conv23.i.i %conv25.i.i = trunc i128 %add24.i.i to i64 diff --git a/bench/openusd/optimized/parserHelpers.cpp.ll b/bench/openusd/optimized/parserHelpers.cpp.ll index 1dd53768c74..410d9031fd7 100644 --- a/bench/openusd/optimized/parserHelpers.cpp.ll +++ b/bench/openusd/optimized/parserHelpers.cpp.ll @@ -29743,7 +29743,7 @@ define linkonce_odr noundef zeroext i8 @_ZSt13__invoke_implIhRN32pxrInternal_v0_ %3 = load i64, ptr %1, align 8 %4 = icmp ugt i64 %3, 255 %5 = trunc nuw i64 %3 to i16 - %6 = or i16 %5, 256 + %6 = or disjoint i16 %5, 256 %.sroa.06.0.insert.insert.i.i.i = select i1 %4, i16 0, i16 %6 %7 = and i16 %.sroa.06.0.insert.insert.i.i.i, 256 %.not.i.i = icmp eq i16 %7, 0 @@ -29830,7 +29830,7 @@ define linkonce_odr noundef zeroext i8 @_ZSt13__invoke_implIhRN32pxrInternal_v0_ %3 = load i64, ptr %1, align 8 %4 = icmp ugt i64 %3, 255 %5 = trunc nuw i64 %3 to i16 - %6 = or i16 %5, 256 + %6 = or disjoint i16 %5, 256 %.sroa.06.0.insert.insert.i.i.i = select i1 %4, i16 0, i16 %6 %7 = and i16 %.sroa.06.0.insert.insert.i.i.i, 256 %.not.i.i = icmp eq i16 %7, 0 @@ -30946,7 +30946,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__12SdfAssetPathC2ERKS0_.exit.i.i.i: ; preds define linkonce_odr noundef i32 @_ZSt13__invoke_implIiRN32pxrInternal_v0_24__pxrReserved__17Sdf_ParserHelpers8_GetImplIivEEJRKmEET_St14__invoke_otherOT0_DpOT1_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { %3 = load i64, ptr %1, align 8 %4 = icmp ugt i64 %3, 2147483647 - %5 = or i64 %3, 4294967296 + %5 = or disjoint i64 %3, 4294967296 %.sroa.06.0.insert.insert.i.i.i = select i1 %4, i64 0, i64 %5 %6 = and i64 %.sroa.06.0.insert.insert.i.i.i, 4294967296 %.not.i.i = icmp eq i64 %6, 0 @@ -32017,7 +32017,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__12SdfAssetPathC2ERKS0_.exit.i.i.i: ; preds define linkonce_odr noundef i32 @_ZSt13__invoke_implIjRN32pxrInternal_v0_24__pxrReserved__17Sdf_ParserHelpers8_GetImplIjvEEJRKmEET_St14__invoke_otherOT0_DpOT1_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { %3 = load i64, ptr %1, align 8 %4 = icmp ugt i64 %3, 4294967295 - %5 = or i64 %3, 4294967296 + %5 = or disjoint i64 %3, 4294967296 %.sroa.06.0.insert.insert.i.i.i = select i1 %4, i64 0, i64 %5 %6 = and i64 %.sroa.06.0.insert.insert.i.i.i, 4294967296 %.not.i.i = icmp eq i64 %6, 0 @@ -32077,7 +32077,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__17Sdf_ParserHelpers8_GetImplIjvEclEm.exit: define linkonce_odr noundef i32 @_ZSt13__invoke_implIjRN32pxrInternal_v0_24__pxrReserved__17Sdf_ParserHelpers8_GetImplIjvEEJRKlEET_St14__invoke_otherOT0_DpOT1_(ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) local_unnamed_addr #0 comdat personality ptr @__gxx_personality_v0 { %3 = load i64, ptr %1, align 8 %4 = icmp ugt i64 %3, 4294967295 - %5 = or i64 %3, 4294967296 + %5 = or disjoint i64 %3, 4294967296 %.sroa.06.0.insert.insert.i.i.i = select i1 %4, i64 0, i64 %5 %6 = and i64 %.sroa.06.0.insert.insert.i.i.i, 4294967296 %.not.i.i = icmp eq i64 %6, 0 diff --git a/bench/openusd/optimized/stbImage.cpp.ll b/bench/openusd/optimized/stbImage.cpp.ll index dd7c203a884..26fd081c489 100644 --- a/bench/openusd/optimized/stbImage.cpp.ll +++ b/bench/openusd/optimized/stbImage.cpp.ll @@ -47834,7 +47834,7 @@ sub_1: ; preds = %sub_0 60: ; preds = %56 %61 = add i32 %44, -32768 %or.cond = icmp ult i32 %61, -32760 - br i1 %or.cond, label %202, label %.preheader17 + br i1 %or.cond, label %200, label %.preheader17 .preheader17: ; preds = %60 %62 = icmp sgt i32 %35, 0 @@ -47899,7 +47899,7 @@ _ZL17stbi__malloc_mad2iii.exit.us: ; preds = %87 90: ; preds = %.lr.ph55.us, %90 %indvars.iv142 = phi i64 [ 0, %.lr.ph55.us ], [ %indvars.iv.next143, %90 ] - %91 = add nuw nsw i64 %indvars.iv142, %201 + %91 = add nuw nsw i64 %indvars.iv142, %199 %.idx = mul i64 %91, 12 %92 = getelementptr inbounds i8, ptr %57, i64 %.idx %93 = shl nsw i64 %indvars.iv142, 2 @@ -47914,7 +47914,7 @@ _ZL17stbi__malloc_mad2iii.exit.us: ; preds = %87 br label %95 95: ; preds = %.loopexit.us.us, %.preheader15.us.us - %96 = phi i32 [ %44, %.preheader15.us.us ], [ %194, %.loopexit.us.us ] + %96 = phi i32 [ %44, %.preheader15.us.us ], [ %192, %.loopexit.us.us ] %.212447.us.us = phi i32 [ 0, %.preheader15.us.us ], [ %.4.us.us, %.loopexit.us.us ] %97 = load ptr, ptr %65, align 8 %98 = load ptr, ptr %66, align 8 @@ -48048,7 +48048,7 @@ _ZL10stbi__get8P13stbi__context.exit163.us.us: ; preds = %156, %_ZL19stbi__re store i8 %.0.i162.us.us, ptr %161, align 1 %162 = add nuw nsw i32 %.142.us.us, 1 %exitcond133.not = icmp eq i32 %162, %126 - br i1 %exitcond133.not, label %.loopexit.us.us.loopexit77, label %.preheader13.us.us, !llvm.loop !1054 + br i1 %exitcond133.not, label %.loopexit.us.us, label %.preheader13.us.us, !llvm.loop !1054 163: ; preds = %_ZL10stbi__get8P13stbi__context.exit.us.us %164 = icmp ult ptr %125, %124 @@ -48102,43 +48102,32 @@ _ZL19stbi__refill_bufferP13stbi__context.exit.i154.us.us: ; preds = %184, %181 _ZL10stbi__get8P13stbi__context.exit157.us.us: ; preds = %186, %_ZL19stbi__refill_bufferP13stbi__context.exit.i154.us.us, %165 %.0.i156.us.us = phi i8 [ %188, %186 ], [ %185, %_ZL19stbi__refill_bufferP13stbi__context.exit.i154.us.us ], [ 0, %165 ] - %189 = and i8 %.0.i151.us.us, 127 + %189 = xor i8 %.0.i151.us.us, -128 %190 = zext nneg i8 %189 to i32 %191 = icmp ult i32 %96, %190 - br i1 %191, label %.split52.us, label %.preheader.us.us + br i1 %191, label %.split52.us, label %.lr.ph45.us.us.preheader -.loopexit.us.us.loopexit: ; preds = %.lr.ph45.us.us - %192 = trunc nsw i64 %indvars.iv.next135 to i32 - br label %.loopexit.us.us - -.loopexit.us.us.loopexit77: ; preds = %_ZL10stbi__get8P13stbi__context.exit163.us.us - %193 = trunc nsw i64 %indvars.iv.next131 to i32 - br label %.loopexit.us.us - -.loopexit.us.us: ; preds = %.loopexit.us.us.loopexit77, %.loopexit.us.us.loopexit, %.preheader.us.us - %.4.us.us = phi i32 [ %.212447.us.us, %.preheader.us.us ], [ %192, %.loopexit.us.us.loopexit ], [ %193, %.loopexit.us.us.loopexit77 ] - %194 = sub nsw i32 %44, %.4.us.us - %195 = icmp sgt i32 %194, 0 - br i1 %195, label %95, label %._crit_edge49.us.us, !llvm.loop !1055 +.loopexit.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit163.us.us, %.lr.ph45.us.us + %.4.us.us.in = phi i64 [ %indvars.iv.next135, %.lr.ph45.us.us ], [ %indvars.iv.next131, %_ZL10stbi__get8P13stbi__context.exit163.us.us ] + %.4.us.us = trunc i64 %.4.us.us.in to i32 + %192 = sub nsw i32 %44, %.4.us.us + %193 = icmp sgt i32 %192, 0 + br i1 %193, label %95, label %._crit_edge49.us.us, !llvm.loop !1055 .lr.ph45.us.us: ; preds = %.lr.ph45.us.us.preheader, %.lr.ph45.us.us - %indvars.iv134 = phi i64 [ %200, %.lr.ph45.us.us.preheader ], [ %indvars.iv.next135, %.lr.ph45.us.us ] - %.011444.us.us = phi i32 [ 0, %.lr.ph45.us.us.preheader ], [ %199, %.lr.ph45.us.us ] + %indvars.iv134 = phi i64 [ %198, %.lr.ph45.us.us.preheader ], [ %indvars.iv.next135, %.lr.ph45.us.us ] + %.011444.us.us = phi i32 [ 0, %.lr.ph45.us.us.preheader ], [ %197, %.lr.ph45.us.us ] %indvars.iv.next135 = add nsw i64 %indvars.iv134, 1 - %196 = shl nsw i64 %indvars.iv134, 2 - %197 = add nuw nsw i64 %196, %indvars.iv138 - %198 = getelementptr inbounds i8, ptr %.1118.us, i64 %197 - store i8 %.0.i156.us.us, ptr %198, align 1 - %199 = add nuw nsw i32 %.011444.us.us, 1 - %exitcond137.not = icmp eq i32 %199, %190 - br i1 %exitcond137.not, label %.loopexit.us.us.loopexit, label %.lr.ph45.us.us, !llvm.loop !1056 - -.preheader.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit157.us.us - %.not76 = icmp eq i8 %189, 0 - br i1 %.not76, label %.loopexit.us.us, label %.lr.ph45.us.us.preheader - -.lr.ph45.us.us.preheader: ; preds = %.preheader.us.us - %200 = sext i32 %.212447.us.us to i64 + %194 = shl nsw i64 %indvars.iv134, 2 + %195 = add nuw nsw i64 %194, %indvars.iv138 + %196 = getelementptr inbounds i8, ptr %.1118.us, i64 %195 + store i8 %.0.i156.us.us, ptr %196, align 1 + %197 = add nuw nsw i32 %.011444.us.us, 1 + %exitcond137.not = icmp eq i32 %197, %190 + br i1 %exitcond137.not, label %.loopexit.us.us, label %.lr.ph45.us.us, !llvm.loop !1056 + +.lr.ph45.us.us.preheader: ; preds = %_ZL10stbi__get8P13stbi__context.exit157.us.us + %198 = sext i32 %.212447.us.us to i64 br label %.lr.ph45.us.us ._crit_edge49.us.us: ; preds = %.loopexit.us.us @@ -48147,166 +48136,166 @@ _ZL10stbi__get8P13stbi__context.exit157.us.us: ; preds = %186, %_ZL19stbi__re br i1 %exitcond141.not, label %.lr.ph55.us, label %.preheader15.us.us, !llvm.loop !1057 .lr.ph55.us: ; preds = %._crit_edge49.us.us - %201 = mul nuw nsw i64 %indvars.iv147, %75 + %199 = mul nuw nsw i64 %indvars.iv147, %75 br label %90 -202: ; preds = %60, %261 - %.0120 = phi i32 [ %262, %261 ], [ 0, %60 ] - %203 = icmp slt i32 %.0120, %35 - br i1 %203, label %204, label %._crit_edge60.thread - -204: ; preds = %202, %_ZL17stbi__hdr_convertPfPhi.exit - %.0122 = phi i32 [ %260, %_ZL17stbi__hdr_convertPfPhi.exit ], [ 0, %202 ] - %.1121 = phi i32 [ %.2, %_ZL17stbi__hdr_convertPfPhi.exit ], [ %.0120, %202 ] - %205 = icmp slt i32 %.0122, %44 - br i1 %205, label %206, label %261 - -206: ; preds = %204, %.split63.us - %.1123 = phi i32 [ %.0122, %204 ], [ 1, %.split63.us ] - %.2 = phi i32 [ %.1121, %204 ], [ 0, %.split63.us ] - %207 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %208 = load ptr, ptr %207, align 8 - %.not.i = icmp eq ptr %208, null - br i1 %.not.i, label %._crit_edge.i, label %209 - -._crit_edge.i: ; preds = %206 +200: ; preds = %60, %259 + %.0120 = phi i32 [ %260, %259 ], [ 0, %60 ] + %201 = icmp slt i32 %.0120, %35 + br i1 %201, label %202, label %._crit_edge60.thread + +202: ; preds = %200, %_ZL17stbi__hdr_convertPfPhi.exit + %.0122 = phi i32 [ %258, %_ZL17stbi__hdr_convertPfPhi.exit ], [ 0, %200 ] + %.1121 = phi i32 [ %.2, %_ZL17stbi__hdr_convertPfPhi.exit ], [ %.0120, %200 ] + %203 = icmp slt i32 %.0122, %44 + br i1 %203, label %204, label %259 + +204: ; preds = %202, %.split63.us + %.1123 = phi i32 [ %.0122, %202 ], [ 1, %.split63.us ] + %.2 = phi i32 [ %.1121, %202 ], [ 0, %.split63.us ] + %205 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %206 = load ptr, ptr %205, align 8 + %.not.i = icmp eq ptr %206, null + br i1 %.not.i, label %._crit_edge.i, label %207 + +._crit_edge.i: ; preds = %204 %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %0, i64 192 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8 %.phi.trans.insert31.i = getelementptr inbounds nuw i8, ptr %0, i64 200 %.pre32.i = load ptr, ptr %.phi.trans.insert31.i, align 8 - br label %227 + br label %225 -209: ; preds = %206 - %210 = getelementptr inbounds nuw i8, ptr %0, i64 200 +207: ; preds = %204 + %208 = getelementptr inbounds nuw i8, ptr %0, i64 200 + %209 = load ptr, ptr %208, align 8 + %210 = getelementptr inbounds nuw i8, ptr %0, i64 192 %211 = load ptr, ptr %210, align 8 - %212 = getelementptr inbounds nuw i8, ptr %0, i64 192 - %213 = load ptr, ptr %212, align 8 - %214 = ptrtoint ptr %211 to i64 - %215 = ptrtoint ptr %213 to i64 - %216 = sub i64 %214, %215 - %217 = trunc i64 %216 to i32 - %218 = icmp slt i32 %217, 4 - br i1 %218, label %219, label %227 - -219: ; preds = %209 - %sext.i = shl i64 %216, 32 - %220 = ashr exact i64 %sext.i, 32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %7, ptr align 1 %213, i64 %220, i1 false) - %221 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %222 = load ptr, ptr %221, align 8 - %223 = getelementptr inbounds i8, ptr %7, i64 %220 - %224 = sub nsw i32 4, %217 - %225 = call noundef i32 %208(ptr noundef %222, ptr noundef nonnull %223, i32 noundef %224) - %226 = load ptr, ptr %210, align 8 - store ptr %226, ptr %212, align 8 + %212 = ptrtoint ptr %209 to i64 + %213 = ptrtoint ptr %211 to i64 + %214 = sub i64 %212, %213 + %215 = trunc i64 %214 to i32 + %216 = icmp slt i32 %215, 4 + br i1 %216, label %217, label %225 + +217: ; preds = %207 + %sext.i = shl i64 %214, 32 + %218 = ashr exact i64 %sext.i, 32 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %7, ptr align 1 %211, i64 %218, i1 false) + %219 = getelementptr inbounds nuw i8, ptr %0, i64 40 + %220 = load ptr, ptr %219, align 8 + %221 = getelementptr inbounds i8, ptr %7, i64 %218 + %222 = sub nsw i32 4, %215 + %223 = call noundef i32 %206(ptr noundef %220, ptr noundef nonnull %221, i32 noundef %222) + %224 = load ptr, ptr %208, align 8 + store ptr %224, ptr %210, align 8 br label %_ZL10stbi__getnP13stbi__contextPhi.exit -227: ; preds = %209, %._crit_edge.i - %228 = phi ptr [ %.pre32.i, %._crit_edge.i ], [ %211, %209 ] - %229 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %213, %209 ] - %230 = getelementptr inbounds i8, ptr %229, i64 4 - %.not30.i = icmp ugt ptr %230, %228 - br i1 %.not30.i, label %_ZL10stbi__getnP13stbi__contextPhi.exit, label %231 - -231: ; preds = %227 - %232 = getelementptr inbounds nuw i8, ptr %0, i64 192 - %233 = load i32, ptr %229, align 1 - store i32 %233, ptr %7, align 4 - store ptr %230, ptr %232, align 8 +225: ; preds = %207, %._crit_edge.i + %226 = phi ptr [ %.pre32.i, %._crit_edge.i ], [ %209, %207 ] + %227 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %211, %207 ] + %228 = getelementptr inbounds i8, ptr %227, i64 4 + %.not30.i = icmp ugt ptr %228, %226 + br i1 %.not30.i, label %_ZL10stbi__getnP13stbi__contextPhi.exit, label %229 + +229: ; preds = %225 + %230 = getelementptr inbounds nuw i8, ptr %0, i64 192 + %231 = load i32, ptr %227, align 1 + store i32 %231, ptr %7, align 4 + store ptr %228, ptr %230, align 8 br label %_ZL10stbi__getnP13stbi__contextPhi.exit -_ZL10stbi__getnP13stbi__contextPhi.exit: ; preds = %219, %227, %231 - %234 = mul i32 %44, 3 - %235 = mul i32 %234, %.2 - %236 = sext i32 %235 to i64 - %237 = getelementptr inbounds float, ptr %57, i64 %236 - %238 = mul nsw i32 %.1123, 3 - %239 = sext i32 %238 to i64 - %240 = getelementptr inbounds float, ptr %237, i64 %239 - %241 = getelementptr inbounds i8, ptr %7, i64 3 - %242 = load i8, ptr %241, align 1 - %.not.i147 = icmp eq i8 %242, 0 - br i1 %.not.i147, label %_ZL17stbi__hdr_convertPfPhi.exit, label %243 - -243: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit - %244 = zext i8 %242 to i32 - %245 = add nsw i32 %244, -136 - %246 = call noundef float @ldexpf(float noundef 1.000000e+00, i32 noundef %245) #46 - %247 = load i8, ptr %7, align 4 - %248 = uitofp i8 %247 to float - %249 = fmul float %246, %248 - %250 = getelementptr inbounds i8, ptr %7, i64 1 - %251 = load i8, ptr %250, align 1 - %252 = uitofp i8 %251 to float - %253 = fmul float %246, %252 - %254 = getelementptr inbounds i8, ptr %7, i64 2 - %255 = load i8, ptr %254, align 2 - %256 = uitofp i8 %255 to float - %257 = fmul float %246, %256 +_ZL10stbi__getnP13stbi__contextPhi.exit: ; preds = %217, %225, %229 + %232 = mul i32 %44, 3 + %233 = mul i32 %232, %.2 + %234 = sext i32 %233 to i64 + %235 = getelementptr inbounds float, ptr %57, i64 %234 + %236 = mul nsw i32 %.1123, 3 + %237 = sext i32 %236 to i64 + %238 = getelementptr inbounds float, ptr %235, i64 %237 + %239 = getelementptr inbounds i8, ptr %7, i64 3 + %240 = load i8, ptr %239, align 1 + %.not.i147 = icmp eq i8 %240, 0 + br i1 %.not.i147, label %_ZL17stbi__hdr_convertPfPhi.exit, label %241 + +241: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit + %242 = zext i8 %240 to i32 + %243 = add nsw i32 %242, -136 + %244 = call noundef float @ldexpf(float noundef 1.000000e+00, i32 noundef %243) #46 + %245 = load i8, ptr %7, align 4 + %246 = uitofp i8 %245 to float + %247 = fmul float %244, %246 + %248 = getelementptr inbounds i8, ptr %7, i64 1 + %249 = load i8, ptr %248, align 1 + %250 = uitofp i8 %249 to float + %251 = fmul float %244, %250 + %252 = getelementptr inbounds i8, ptr %7, i64 2 + %253 = load i8, ptr %252, align 2 + %254 = uitofp i8 %253 to float + %255 = fmul float %244, %254 br label %_ZL17stbi__hdr_convertPfPhi.exit -_ZL17stbi__hdr_convertPfPhi.exit: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit, %243 - %.sink152 = phi float [ %253, %243 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] - %.sink = phi float [ %249, %243 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] - %.sink.i = phi float [ %257, %243 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] - %258 = getelementptr inbounds i8, ptr %240, i64 4 - store float %.sink152, ptr %258, align 4 - store float %.sink, ptr %240, align 4 - %259 = getelementptr inbounds i8, ptr %240, i64 8 - store float %.sink.i, ptr %259, align 4 - %260 = add nsw i32 %.1123, 1 - br label %204, !llvm.loop !1058 - -261: ; preds = %204 - %262 = add nsw i32 %.1121, 1 - br label %202, !llvm.loop !1059 +_ZL17stbi__hdr_convertPfPhi.exit: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit, %241 + %.sink152 = phi float [ %251, %241 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] + %.sink = phi float [ %247, %241 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] + %.sink.i = phi float [ %255, %241 ], [ 0.000000e+00, %_ZL10stbi__getnP13stbi__contextPhi.exit ] + %256 = getelementptr inbounds i8, ptr %238, i64 4 + store float %.sink152, ptr %256, align 4 + store float %.sink, ptr %238, align 4 + %257 = getelementptr inbounds i8, ptr %238, i64 8 + store float %.sink.i, ptr %257, align 4 + %258 = add nsw i32 %.1123, 1 + br label %202, !llvm.loop !1058 + +259: ; preds = %202 + %260 = add nsw i32 %.1121, 1 + br label %200, !llvm.loop !1059 .split63.us: ; preds = %.lr.ph59.split.us store i8 %76, ptr %8, align 1 - %263 = getelementptr inbounds i8, ptr %8, i64 1 - store i8 %77, ptr %263, align 1 - %264 = getelementptr inbounds i8, ptr %8, i64 2 - store i8 %78, ptr %264, align 1 - %265 = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef nonnull %0) - %266 = getelementptr inbounds i8, ptr %8, i64 3 - store i8 %265, ptr %266, align 1 + %261 = getelementptr inbounds i8, ptr %8, i64 1 + store i8 %77, ptr %261, align 1 + %262 = getelementptr inbounds i8, ptr %8, i64 2 + store i8 %78, ptr %262, align 1 + %263 = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef nonnull %0) + %264 = getelementptr inbounds i8, ptr %8, i64 3 + store i8 %263, ptr %264, align 1 call fastcc void @_ZL17stbi__hdr_convertPfPhi(ptr noundef %57, ptr noundef %8) call void @free(ptr noundef %.011758.us) #46 - br label %206 + br label %204 .split68.us: ; preds = %81 call void @free(ptr noundef %57) #46 call void @free(ptr noundef %.011758.us) #46 - %267 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.106, ptr %267, align 8 + %265 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.106, ptr %265, align 8 br label %._crit_edge60.thread _ZL17stbi__malloc_mad2iii.exit.thread: ; preds = %_ZL17stbi__malloc_mad2iii.exit.us call void @free(ptr noundef %57) #46 - %268 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.30, ptr %268, align 8 + %266 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.30, ptr %266, align 8 br label %._crit_edge60.thread .split52.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit157.us.us call void @free(ptr noundef %57) #46 call void @free(ptr noundef nonnull %.1118.us) #46 - %269 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.107, ptr %269, align 8 + %267 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.107, ptr %267, align 8 br label %._crit_edge60.thread .thread: ; preds = %128, %100 call void @free(ptr noundef %57) #46 call void @free(ptr noundef nonnull %.1118.us) #46 - %270 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.107, ptr %270, align 8 + %268 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.107, ptr %268, align 8 br label %._crit_edge60.thread ._crit_edge60: ; preds = %._crit_edge56.us call void @free(ptr noundef nonnull %.1118.us) #46 br label %._crit_edge60.thread -._crit_edge60.thread: ; preds = %.preheader17, %202, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %58, %54, %50, %46, %.tail.thread, %25, %._crit_edge.thread, %11 - %.0 = phi ptr [ null, %11 ], [ null, %25 ], [ null, %.tail.thread ], [ null, %46 ], [ null, %50 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %58 ], [ null, %54 ], [ null, %._crit_edge.thread ], [ %57, %._crit_edge60 ], [ %57, %202 ], [ %57, %.preheader17 ] +._crit_edge60.thread: ; preds = %.preheader17, %200, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %58, %54, %50, %46, %.tail.thread, %25, %._crit_edge.thread, %11 + %.0 = phi ptr [ null, %11 ], [ null, %25 ], [ null, %.tail.thread ], [ null, %46 ], [ null, %50 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %58 ], [ null, %54 ], [ null, %._crit_edge.thread ], [ %57, %._crit_edge60 ], [ %57, %200 ], [ %57, %.preheader17 ] ret ptr %.0 } diff --git a/bench/protobuf/optimized/dynamic_message.cc.ll b/bench/protobuf/optimized/dynamic_message.cc.ll index 5a78cfa01c1..0a3c64e0804 100644 --- a/bench/protobuf/optimized/dynamic_message.cc.ll +++ b/bench/protobuf/optimized/dynamic_message.cc.ll @@ -743,9 +743,9 @@ cond.end: ; preds = %if.end11, %cond.tru %field_count_.i = getelementptr inbounds i8, ptr %type, i64 4 %23 = load i32, ptr %field_count_.i, align 4 %add = add nsw i32 %23, %22 - %conv = sext i32 %add to i64 + %conv = zext i32 %add to i64 %24 = icmp slt i32 %add, 0 - %25 = shl nsw i64 %conv, 2 + %25 = shl nuw nsw i64 %conv, 2 %26 = select i1 %24, i64 -1, i64 %25 %call20 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %26) #22 %27 = load ptr, ptr %offsets.i, align 8 @@ -786,43 +786,41 @@ if.then27: ; preds = %for.body if.then30: ; preds = %if.then27 store i32 32, ptr %has_bits_offset, align 4 %31 = load i32, ptr %field_count_.i, align 4 - %conv33 = sext i32 %31 to i64 + %conv33 = zext i32 %31 to i64 %32 = icmp slt i32 %31, 0 - %33 = shl nsw i64 %conv33, 2 + %33 = shl nuw nsw i64 %conv33, 2 %34 = select i1 %32, i64 -1, i64 %33 %call34 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %34) #22 %cmp37153 = icmp sgt i32 %31, 0 br i1 %cmp37153, label %for.body38.preheader, label %for.end for.body38.preheader: ; preds = %if.then30 - %35 = zext nneg i32 %31 to i64 - %36 = shl nuw nsw i64 %35, 2 - tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %call34, i8 -1, i64 %36, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %call34, i8 -1, i64 %33, i1 false) br label %for.end for.end: ; preds = %for.body38.preheader, %if.then30 - %37 = load ptr, ptr %has_bits_indices39, align 8 + %35 = load ptr, ptr %has_bits_indices39, align 8 store ptr %call34, ptr %has_bits_indices39, align 8 - %tobool.not.i.i81 = icmp eq ptr %37, null + %tobool.not.i.i81 = icmp eq ptr %35, null br i1 %tobool.not.i.i81, label %if.end40, label %_ZNKSt14default_deleteIA_jEclIjEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i82 _ZNKSt14default_deleteIA_jEclIjEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i82: ; preds = %for.end - tail call void @_ZdaPv(ptr noundef nonnull %37) #23 + tail call void @_ZdaPv(ptr noundef nonnull %35) #23 br label %if.end40 if.end40: ; preds = %_ZNKSt14default_deleteIA_jEclIjEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i82, %for.end, %if.then27 %inc41 = add nsw i32 %max_hasbit.0157, 1 - %38 = load ptr, ptr %has_bits_indices39, align 8 - %arrayidx.i = getelementptr inbounds i32, ptr %38, i64 %indvars.iv + %36 = load ptr, ptr %has_bits_indices39, align 8 + %arrayidx.i = getelementptr inbounds i32, ptr %36, i64 %indvars.iv store i32 %max_hasbit.0157, ptr %arrayidx.i, align 4 br label %for.inc46 for.inc46: ; preds = %for.body, %if.end40 %max_hasbit.1 = phi i32 [ %inc41, %if.end40 ], [ %max_hasbit.0157, %for.body ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %39 = load i32, ptr %field_count_.i, align 4 - %40 = sext i32 %39 to i64 - %cmp24 = icmp slt i64 %indvars.iv.next, %40 + %37 = load i32, ptr %field_count_.i, align 4 + %38 = sext i32 %37 to i64 + %cmp24 = icmp slt i64 %indvars.iv.next, %38 br i1 %cmp24, label %for.body, label %for.end48, !llvm.loop !14 for.end48: ; preds = %for.inc46 @@ -834,12 +832,12 @@ if.then50: ; preds = %for.end48 %div.i = sdiv i32 %add.i, 32 %mul = shl nsw i32 %div.i, 2 %add.i.i.i = add nsw i32 %mul, 39 - %41 = srem i32 %add.i.i.i, 8 - %mul.i.i = sub nsw i32 %add.i.i.i, %41 + %39 = srem i32 %add.i.i.i, 8 + %mul.i.i = sub nsw i32 %add.i.i.i, %39 br label %if.end57 if.end57: ; preds = %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EE5resetIPjvEEvT_.exit, %if.then50, %for.end48 - %42 = phi i32 [ %39, %if.then50 ], [ %39, %for.end48 ], [ %28, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EE5resetIPjvEEvT_.exit ] + %40 = phi i32 [ %37, %if.then50 ], [ %37, %for.end48 ], [ %28, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EE5resetIPjvEEvT_.exit ] %size.0 = phi i32 [ %mul.i.i, %if.then50 ], [ 32, %for.end48 ], [ 32, %_ZNSt10unique_ptrIA_jSt14default_deleteIS0_EE5resetIPjvEEvT_.exit ] %cmp58 = icmp sgt i32 %22, 0 br i1 %cmp58, label %if.then59, label %if.end66 @@ -850,29 +848,29 @@ if.then59: ; preds = %if.end57 %mul61 = shl i32 %22, 2 %add63 = add i32 %mul61, 7 %add.i.i.i84 = add i32 %add63, %size.0 - %43 = srem i32 %add.i.i.i84, 8 - %mul.i.i85 = sub nsw i32 %add.i.i.i84, %43 + %41 = srem i32 %add.i.i.i84, 8 + %mul.i.i85 = sub nsw i32 %add.i.i.i84, %41 br label %if.end66 if.end66: ; preds = %if.then59, %if.end57 %size.1 = phi i32 [ %mul.i.i85, %if.then59 ], [ %size.0, %if.end57 ] %extension_range_count_.i = getelementptr inbounds i8, ptr %type, i64 136 - %44 = load i32, ptr %extension_range_count_.i, align 8 - %cmp68 = icmp sgt i32 %44, 0 + %42 = load i32, ptr %extension_range_count_.i, align 8 + %cmp68 = icmp sgt i32 %42, 0 br i1 %cmp68, label %if.then69, label %if.end75 if.then69: ; preds = %if.end66 %add.i.i.i86 = add i32 %size.1, 31 - %45 = srem i32 %add.i.i.i86, 8 - %mul.i.i87 = sub nsw i32 %add.i.i.i86, %45 + %43 = srem i32 %add.i.i.i86, 8 + %mul.i.i87 = sub nsw i32 %add.i.i.i86, %43 br label %if.end75 if.end75: ; preds = %if.end66, %if.then69 %.sink = phi i32 [ %size.1, %if.then69 ], [ -1, %if.end66 ] %size.2 = phi i32 [ %mul.i.i87, %if.then69 ], [ %size.1, %if.end66 ] - %46 = getelementptr inbounds i8, ptr %call12, i64 12 - store i32 %.sink, ptr %46, align 4 - %cmp79158 = icmp sgt i32 %42, 0 + %44 = getelementptr inbounds i8, ptr %call12, i64 12 + store i32 %.sink, ptr %44, align 4 + %cmp79158 = icmp sgt i32 %40, 0 br i1 %cmp79158, label %for.body80.lr.ph, label %for.cond96.preheader for.body80.lr.ph: ; preds = %if.end75 @@ -881,9 +879,9 @@ for.body80.lr.ph: ; preds = %if.end75 for.cond96.preheader: ; preds = %for.inc92, %if.end75 %size.3.lcssa = phi i32 [ %size.2, %if.end75 ], [ %size.4, %for.inc92 ] - %.lcssa149 = phi i32 [ %42, %if.end75 ], [ %81, %for.inc92 ] - %47 = load i32, ptr %real_oneof_decl_count_.i, align 4 - %cmp98163 = icmp sgt i32 %47, 0 + %.lcssa149 = phi i32 [ %40, %if.end75 ], [ %79, %for.inc92 ] + %45 = load i32, ptr %real_oneof_decl_count_.i, align 4 + %cmp98163 = icmp sgt i32 %45, 0 br i1 %cmp98163, label %for.body99.preheader, label %for.end108.thread for.end108.thread: ; preds = %for.cond96.preheader @@ -893,86 +891,86 @@ for.end108.thread: ; preds = %for.cond96.preheade br label %for.end131 for.body99.preheader: ; preds = %for.cond96.preheader - %48 = sext i32 %.lcssa149 to i64 - %wide.trip.count = zext nneg i32 %47 to i64 - %invariant.gep = getelementptr i32, ptr %call20, i64 %48 + %46 = sext i32 %.lcssa149 to i64 + %wide.trip.count = zext nneg i32 %45 to i64 + %invariant.gep = getelementptr i32, ptr %call20, i64 %46 br label %for.body99 for.body80: ; preds = %for.body80.lr.ph, %for.inc92 - %49 = phi i32 [ %42, %for.body80.lr.ph ], [ %81, %for.inc92 ] + %47 = phi i32 [ %40, %for.body80.lr.ph ], [ %79, %for.inc92 ] %indvars.iv175 = phi i64 [ 0, %for.body80.lr.ph ], [ %indvars.iv.next176, %for.inc92 ] %size.3160 = phi i32 [ %size.2, %for.body80.lr.ph ], [ %size.4, %for.inc92 ] - %50 = load ptr, ptr %fields_.i89, align 8 - %add.ptr.i91 = getelementptr inbounds %"class.google::protobuf::FieldDescriptor", ptr %50, i64 %indvars.iv175 - %51 = getelementptr i8, ptr %add.ptr.i91, i64 1 - %call81.val = load i8, ptr %51, align 1 - %52 = getelementptr i8, ptr %add.ptr.i91, i64 40 - %call81.val75 = load ptr, ptr %52, align 8 - %53 = and i8 %call81.val, 16 - %bf.cast.not.i.i.i = icmp eq i8 %53, 0 + %48 = load ptr, ptr %fields_.i89, align 8 + %add.ptr.i91 = getelementptr inbounds %"class.google::protobuf::FieldDescriptor", ptr %48, i64 %indvars.iv175 + %49 = getelementptr i8, ptr %add.ptr.i91, i64 1 + %call81.val = load i8, ptr %49, align 1 + %50 = getelementptr i8, ptr %add.ptr.i91, i64 40 + %call81.val75 = load ptr, ptr %50, align 8 + %51 = and i8 %call81.val, 16 + %bf.cast.not.i.i.i = icmp eq i8 %51, 0 %tobool.not5.i.i = icmp eq ptr %call81.val75, null %tobool.not.i.i92 = select i1 %bf.cast.not.i.i.i, i1 true, i1 %tobool.not5.i.i br i1 %tobool.not.i.i92, label %if.then83, label %land.lhs.true.i.i land.lhs.true.i.i: ; preds = %for.body80 %field_count_.i.i.i.i = getelementptr inbounds i8, ptr %call81.val75, i64 4 - %54 = load i32, ptr %field_count_.i.i.i.i, align 4 - %cmp.i.i.i = icmp eq i32 %54, 1 + %52 = load i32, ptr %field_count_.i.i.i.i, align 4 + %cmp.i.i.i = icmp eq i32 %52, 1 br i1 %cmp.i.i.i, label %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit, label %for.inc92 _ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit: ; preds = %land.lhs.true.i.i %fields_.i.i.i.i = getelementptr inbounds i8, ptr %call81.val75, i64 48 - %55 = load ptr, ptr %fields_.i.i.i.i, align 8 - %proto3_optional_.i.i.i = getelementptr inbounds i8, ptr %55, i64 1 + %53 = load ptr, ptr %fields_.i.i.i.i, align 8 + %proto3_optional_.i.i.i = getelementptr inbounds i8, ptr %53, i64 1 %bf.load.i3.i.i = load i8, ptr %proto3_optional_.i.i.i, align 1 %bf.load.i3.fr.i.i = freeze i8 %bf.load.i3.i.i - %56 = and i8 %bf.load.i3.fr.i.i, 2 - %bf.cast.i.not.i.i = icmp eq i8 %56, 0 + %54 = and i8 %bf.load.i3.fr.i.i, 2 + %bf.cast.i.not.i.i = icmp eq i8 %54, 0 br i1 %bf.cast.i.not.i.i, label %for.inc92, label %if.then83 if.then83: ; preds = %for.body80, %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit - %57 = and i8 %call81.val, 96 - %cmp.i = icmp eq i8 %57, 96 + %55 = and i8 %call81.val, 96 + %cmp.i = icmp eq i8 %55, 96 %type_once_.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i91, i64 24 - %58 = load ptr, ptr %type_once_.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %58, null + %56 = load ptr, ptr %type_once_.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %56, null br i1 %cmp.i, label %if.then.i, label %if.else16.i if.then.i: ; preds = %if.then83 br i1 %tobool.not.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %if.then.i - %59 = load atomic i32, ptr %58 acquire, align 4 - %cmp.not.i.i.i.i = icmp eq i32 %59, 221 + %57 = load atomic i32, ptr %56 acquire, align 4 + %cmp.not.i.i.i.i = icmp eq i32 %57, 221 br i1 %cmp.not.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %if.then.i.i.i - %60 = cmpxchg ptr %58, i32 0, i32 1707250555 monotonic monotonic, align 4 - %61 = extractvalue { i32, i1 } %60, 1 - br i1 %61, label %if.then.i.i.i.i.i, label %lor.lhs.false.i.i.i.i.i + %58 = cmpxchg ptr %56, i32 0, i32 1707250555 monotonic monotonic, align 4 + %59 = extractvalue { i32, i1 } %58, 1 + br i1 %59, label %if.then.i.i.i.i.i, label %lor.lhs.false.i.i.i.i.i lor.lhs.false.i.i.i.i.i: ; preds = %if.then.i.i.i.i - %call1.i.i.i.i.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %58, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) + %call1.i.i.i.i.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %56, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) %cmp.i.i.i.i.i = icmp eq i32 %call1.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i if.then.i.i.i.i.i: ; preds = %lor.lhs.false.i.i.i.i.i, %if.then.i.i.i.i tail call void @_ZN6google8protobuf15FieldDescriptor12TypeOnceInitEPKS1_(ptr noundef nonnull %add.ptr.i91) - %62 = atomicrmw xchg ptr %58, i32 221 release, align 4 - %cmp4.i.i.i.i.i = icmp eq i32 %62, 94570706 + %60 = atomicrmw xchg ptr %56, i32 221 release, align 4 + %cmp4.i.i.i.i.i = icmp eq i32 %60, 94570706 br i1 %cmp4.i.i.i.i.i, label %if.then5.i.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i if.then5.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i - tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %58, i1 noundef zeroext true) + tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %56, i1 noundef zeroext true) br label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i _ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i: ; preds = %if.then5.i.i.i.i.i, %if.then.i.i.i.i.i, %lor.lhs.false.i.i.i.i.i, %if.then.i.i.i, %if.then.i %type_.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i91, i64 2 - %63 = load i8, ptr %type_.i.i.i, align 2 - %idxprom.i.i = zext i8 %63 to i64 + %61 = load i8, ptr %type_.i.i.i, align 2 + %idxprom.i.i = zext i8 %61 to i64 %arrayidx.i.i = getelementptr inbounds [19 x i32], ptr @_ZN6google8protobuf15FieldDescriptor17kTypeToCppTypeMapE, i64 0, i64 %idxprom.i.i - %64 = load i32, ptr %arrayidx.i.i, align 4 - switch i32 %64, label %if.end.i [ + %62 = load i32, ptr %arrayidx.i.i, align 4 + switch i32 %62, label %if.end.i [ i32 1, label %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit i32 2, label %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit i32 3, label %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit @@ -986,38 +984,38 @@ _ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i: ; preds = %if.then5.i.i ] sw.bb9.i: ; preds = %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i - %65 = load ptr, ptr %type_once_.i.i.i, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %65, null + %63 = load ptr, ptr %type_once_.i.i.i, align 8 + %tobool.not.i.i.i.i = icmp eq ptr %63, null br i1 %tobool.not.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i, label %if.then.i.i.i7.i if.then.i.i.i7.i: ; preds = %sw.bb9.i - %66 = load atomic i32, ptr %65 acquire, align 4 - %cmp.not.i.i.i.i.i = icmp eq i32 %66, 221 + %64 = load atomic i32, ptr %63 acquire, align 4 + %cmp.not.i.i.i.i.i = icmp eq i32 %64, 221 br i1 %cmp.not.i.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i, label %if.then.i.i.i.i8.i if.then.i.i.i.i8.i: ; preds = %if.then.i.i.i7.i - %67 = cmpxchg ptr %65, i32 0, i32 1707250555 monotonic monotonic, align 4 - %68 = extractvalue { i32, i1 } %67, 1 - br i1 %68, label %if.then.i.i.i.i.i.i, label %lor.lhs.false.i.i.i.i.i.i + %65 = cmpxchg ptr %63, i32 0, i32 1707250555 monotonic monotonic, align 4 + %66 = extractvalue { i32, i1 } %65, 1 + br i1 %66, label %if.then.i.i.i.i.i.i, label %lor.lhs.false.i.i.i.i.i.i lor.lhs.false.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i8.i - %call1.i.i.i.i.i.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %65, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) + %call1.i.i.i.i.i.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %63, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) %cmp.i.i.i.i.i.i = icmp eq i32 %call1.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i if.then.i.i.i.i.i.i: ; preds = %lor.lhs.false.i.i.i.i.i.i, %if.then.i.i.i.i8.i tail call void @_ZN6google8protobuf15FieldDescriptor12TypeOnceInitEPKS1_(ptr noundef nonnull %add.ptr.i91) - %69 = atomicrmw xchg ptr %65, i32 221 release, align 4 - %cmp4.i.i.i.i.i.i = icmp eq i32 %69, 94570706 + %67 = atomicrmw xchg ptr %63, i32 221 release, align 4 + %cmp4.i.i.i.i.i.i = icmp eq i32 %67, 94570706 br i1 %cmp4.i.i.i.i.i.i, label %if.then5.i.i.i.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i if.then5.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i - tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %65, i1 noundef zeroext true) + tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %63, i1 noundef zeroext true) br label %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i _ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i: ; preds = %if.then5.i.i.i.i.i.i, %if.then.i.i.i.i.i.i, %lor.lhs.false.i.i.i.i.i.i, %if.then.i.i.i7.i, %sw.bb9.i - %70 = load i8, ptr %type_.i.i.i, align 2 - %cmp.i.i.i96 = icmp eq i8 %70, 11 + %68 = load i8, ptr %type_.i.i.i, align 2 + %cmp.i.i.i96 = icmp eq i8 %68, 11 br i1 %cmp.i.i.i96, label %_ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i, label %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit _ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i: ; preds = %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i @@ -1032,42 +1030,42 @@ if.else16.i: ; preds = %if.then83 br i1 %tobool.not.i.i.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i, label %if.then.i.i11.i if.then.i.i11.i: ; preds = %if.else16.i - %71 = load atomic i32, ptr %58 acquire, align 4 - %cmp.not.i.i.i12.i = icmp eq i32 %71, 221 + %69 = load atomic i32, ptr %56 acquire, align 4 + %cmp.not.i.i.i12.i = icmp eq i32 %69, 221 br i1 %cmp.not.i.i.i12.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i, label %if.then.i.i.i13.i if.then.i.i.i13.i: ; preds = %if.then.i.i11.i - %72 = cmpxchg ptr %58, i32 0, i32 1707250555 monotonic monotonic, align 4 - %73 = extractvalue { i32, i1 } %72, 1 - br i1 %73, label %if.then.i.i.i.i20.i, label %lor.lhs.false.i.i.i.i14.i + %70 = cmpxchg ptr %56, i32 0, i32 1707250555 monotonic monotonic, align 4 + %71 = extractvalue { i32, i1 } %70, 1 + br i1 %71, label %if.then.i.i.i.i20.i, label %lor.lhs.false.i.i.i.i14.i lor.lhs.false.i.i.i.i14.i: ; preds = %if.then.i.i.i13.i - %call1.i.i.i.i15.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %58, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) + %call1.i.i.i.i15.i = tail call noundef i32 @_ZN4absl12lts_2023080213base_internal12SpinLockWaitEPSt6atomicIjEiPKNS1_22SpinLockWaitTransitionENS1_14SchedulingModeE(ptr noundef nonnull %56, i32 noundef 3, ptr noundef nonnull @_ZZN4absl12lts_2023080213base_internal12CallOnceImplIPFvPKN6google8protobuf15FieldDescriptorEEJS7_EEEvPSt6atomicIjENS1_14SchedulingModeEOT_DpOT0_E5trans, i32 noundef 1) %cmp.i.i.i.i16.i = icmp eq i32 %call1.i.i.i.i15.i, 0 br i1 %cmp.i.i.i.i16.i, label %if.then.i.i.i.i20.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i if.then.i.i.i.i20.i: ; preds = %lor.lhs.false.i.i.i.i14.i, %if.then.i.i.i13.i tail call void @_ZN6google8protobuf15FieldDescriptor12TypeOnceInitEPKS1_(ptr noundef nonnull %add.ptr.i91) - %74 = atomicrmw xchg ptr %58, i32 221 release, align 4 - %cmp4.i.i.i.i21.i = icmp eq i32 %74, 94570706 + %72 = atomicrmw xchg ptr %56, i32 221 release, align 4 + %cmp4.i.i.i.i21.i = icmp eq i32 %72, 94570706 br i1 %cmp4.i.i.i.i21.i, label %if.then5.i.i.i.i22.i, label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i if.then5.i.i.i.i22.i: ; preds = %if.then.i.i.i.i20.i - tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %58, i1 noundef zeroext true) + tail call void @AbslInternalSpinLockWake_lts_20230802(ptr noundef nonnull %56, i1 noundef zeroext true) br label %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i _ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i: ; preds = %if.then5.i.i.i.i22.i, %if.then.i.i.i.i20.i, %lor.lhs.false.i.i.i.i14.i, %if.then.i.i11.i, %if.else16.i %type_.i.i17.i = getelementptr inbounds i8, ptr %add.ptr.i91, i64 2 - %75 = load i8, ptr %type_.i.i17.i, align 2 - %idxprom.i18.i = zext i8 %75 to i64 + %73 = load i8, ptr %type_.i.i17.i, align 2 + %idxprom.i18.i = zext i8 %73 to i64 %arrayidx.i19.i = getelementptr inbounds [19 x i32], ptr @_ZN6google8protobuf15FieldDescriptor17kTypeToCppTypeMapE, i64 0, i64 %idxprom.i18.i - %76 = load i32, ptr %arrayidx.i19.i, align 4 - %switch.tableidx = add nsw i32 %76, -1 - %77 = sext i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds [10 x i32], ptr @switch.table._ZN6google8protobuf21DynamicMessageFactory18GetPrototypeNoLockEPKNS0_10DescriptorE.2, i64 0, i64 %77 + %74 = load i32, ptr %arrayidx.i19.i, align 4 + %switch.tableidx = add nsw i32 %74, -1 + %75 = sext i32 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds [10 x i32], ptr @switch.table._ZN6google8protobuf21DynamicMessageFactory18GetPrototypeNoLockEPKNS0_10DescriptorE.2, i64 0, i64 %75 %switch.load = load i32, ptr %switch.gep, align 4 - %78 = sext i32 %switch.tableidx to i64 - %switch.gep201 = getelementptr inbounds [10 x i32], ptr @switch.table._ZN6google8protobuf21DynamicMessageFactory18GetPrototypeNoLockEPKNS0_10DescriptorE.2, i64 0, i64 %78 + %76 = sext i32 %switch.tableidx to i64 + %switch.gep201 = getelementptr inbounds [10 x i32], ptr @switch.table._ZN6google8protobuf21DynamicMessageFactory18GetPrototypeNoLockEPKNS0_10DescriptorE.2, i64 0, i64 %76 %switch.load202 = load i32, ptr %switch.gep201, align 4 br label %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit @@ -1076,11 +1074,11 @@ if.end.i: ; preds = %_ZNK6google8protobu _ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit: ; preds = %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i, %_ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i, %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i, %sw.bb12.i %retval.0.i148 = phi i32 [ %spec.select.i, %_ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i ], [ 24, %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 16, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 24, %sw.bb12.i ], [ %switch.load, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i ] - %79 = phi i32 [ 8, %_ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %sw.bb12.i ], [ %switch.load202, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i ] + %77 = phi i32 [ 8, %_ZN6google8protobuf12_GLOBAL__N_115IsMapFieldInApiEPKNS0_15FieldDescriptorE.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor4typeEv.exit.i.i.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit.i ], [ 8, %sw.bb12.i ], [ %switch.load202, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit23.i ] %sub.i.i = add i32 %size.3160, -1 - %add.i.i = add i32 %sub.i.i, %79 - %80 = srem i32 %add.i.i, %79 - %mul.i = sub nsw i32 %add.i.i, %80 + %add.i.i = add i32 %sub.i.i, %77 + %78 = srem i32 %add.i.i, %77 + %mul.i = sub nsw i32 %add.i.i, %78 %arrayidx89 = getelementptr inbounds i32, ptr %call20, i64 %indvars.iv175 store i32 %mul.i, ptr %arrayidx89, align 4 %add90 = add nsw i32 %mul.i, %retval.0.i148 @@ -1088,19 +1086,19 @@ _ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit: br label %for.inc92 for.inc92: ; preds = %land.lhs.true.i.i, %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit, %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit - %81 = phi i32 [ %49, %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit ], [ %.pre190, %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit ], [ %49, %land.lhs.true.i.i ] + %79 = phi i32 [ %47, %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit ], [ %.pre190, %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit ], [ %47, %land.lhs.true.i.i ] %size.4 = phi i32 [ %size.3160, %_ZN6google8protobuf12_GLOBAL__N_111InRealOneofEPKNS0_15FieldDescriptorE.exit ], [ %add90, %_ZN6google8protobuf12_GLOBAL__N_114FieldSpaceUsedEPKNS0_15FieldDescriptorE.exit ], [ %size.3160, %land.lhs.true.i.i ] %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 1 - %82 = sext i32 %81 to i64 - %cmp79 = icmp slt i64 %indvars.iv.next176, %82 + %80 = sext i32 %79 to i64 + %cmp79 = icmp slt i64 %indvars.iv.next176, %80 br i1 %cmp79, label %for.body80, label %for.cond96.preheader, !llvm.loop !15 for.body99: ; preds = %for.body99.preheader, %for.body99 %indvars.iv178 = phi i64 [ 0, %for.body99.preheader ], [ %indvars.iv.next179, %for.body99 ] %size.5165 = phi i32 [ %size.3.lcssa, %for.body99.preheader ], [ %add105, %for.body99 ] %add.i.i100 = add i32 %size.5165, 7 - %83 = srem i32 %add.i.i100, 8 - %mul.i101 = sub nsw i32 %add.i.i100, %83 + %81 = srem i32 %add.i.i100, 8 + %mul.i101 = sub nsw i32 %add.i.i100, %81 %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv178 store i32 %mul.i101, ptr %gep, align 4 %add105 = add nsw i32 %mul.i101, 8 @@ -1113,16 +1111,16 @@ for.end108: ; preds = %for.body99 store i32 -1, ptr %weak_field_map_offset, align 8 store i32 %add105, ptr %call12, align 8 %oneof_decls_.i.i = getelementptr inbounds i8, ptr %type, i64 64 - %84 = load ptr, ptr %oneof_decls_.i.i, align 8 - %wide.trip.count188 = zext nneg i32 %47 to i64 + %82 = load ptr, ptr %oneof_decls_.i.i, align 8 + %wide.trip.count188 = zext nneg i32 %45 to i64 br label %for.cond116.preheader for.cond116.preheader: ; preds = %for.end108, %for.inc129 %indvars.iv185 = phi i64 [ 0, %for.end108 ], [ %indvars.iv.next186, %for.inc129 ] - %add.ptr.i.i = getelementptr inbounds %"class.google::protobuf::OneofDescriptor", ptr %84, i64 %indvars.iv185 + %add.ptr.i.i = getelementptr inbounds %"class.google::protobuf::OneofDescriptor", ptr %82, i64 %indvars.iv185 %field_count_.i104 = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 4 - %85 = load i32, ptr %field_count_.i104, align 4 - %cmp119168 = icmp sgt i32 %85, 0 + %83 = load i32, ptr %field_count_.i104, align 4 + %cmp119168 = icmp sgt i32 %83, 0 br i1 %cmp119168, label %for.body120.lr.ph, label %for.inc129 for.body120.lr.ph: ; preds = %for.cond116.preheader @@ -1131,34 +1129,34 @@ for.body120.lr.ph: ; preds = %for.cond116.prehead for.body120: ; preds = %for.body120.lr.ph, %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit %indvars.iv182 = phi i64 [ 0, %for.body120.lr.ph ], [ %indvars.iv.next183, %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit ] - %86 = load ptr, ptr %fields_.i108, align 8 - %add.ptr.i110 = getelementptr inbounds %"class.google::protobuf::FieldDescriptor", ptr %86, i64 %indvars.iv182 + %84 = load ptr, ptr %fields_.i108, align 8 + %add.ptr.i110 = getelementptr inbounds %"class.google::protobuf::FieldDescriptor", ptr %84, i64 %indvars.iv182 %is_extension_.i = getelementptr inbounds i8, ptr %add.ptr.i110, i64 1 %bf.load.i = load i8, ptr %is_extension_.i, align 1 - %87 = and i8 %bf.load.i, 8 - %bf.cast.not.i = icmp eq i8 %87, 0 + %85 = and i8 %bf.load.i, 8 + %bf.cast.not.i = icmp eq i8 %85, 0 br i1 %bf.cast.not.i, label %if.then.i113, label %_ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit.i if.then.i113: ; preds = %for.body120 %containing_type_.i.i = getelementptr inbounds i8, ptr %add.ptr.i110, i64 32 - %88 = load ptr, ptr %containing_type_.i.i, align 8 - %fields_.i114 = getelementptr inbounds i8, ptr %88, i64 56 + %86 = load ptr, ptr %containing_type_.i.i, align 8 + %fields_.i114 = getelementptr inbounds i8, ptr %86, i64 56 br label %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit _ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit.i: ; preds = %for.body120 %scope_.i.i = getelementptr inbounds i8, ptr %add.ptr.i110, i64 40 - %89 = load ptr, ptr %scope_.i.i, align 8 - %cmp.not.i = icmp eq ptr %89, null + %87 = load ptr, ptr %scope_.i.i, align 8 + %cmp.not.i = icmp eq ptr %87, null br i1 %cmp.not.i, label %if.else10.i, label %_ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit7.i _ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit7.i: ; preds = %_ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit.i - %extensions_.i = getelementptr inbounds i8, ptr %89, i64 96 + %extensions_.i = getelementptr inbounds i8, ptr %87, i64 96 br label %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit if.else10.i: ; preds = %_ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit.i %file_.i112 = getelementptr inbounds i8, ptr %add.ptr.i110, i64 16 - %90 = load ptr, ptr %file_.i112, align 8 - %extensions_11.i = getelementptr inbounds i8, ptr %90, i64 120 + %88 = load ptr, ptr %file_.i112, align 8 + %extensions_11.i = getelementptr inbounds i8, ptr %88, i64 120 br label %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit _ZNK6google8protobuf15FieldDescriptor5indexEv.exit: ; preds = %if.then.i113, %_ZNK6google8protobuf15FieldDescriptor15extension_scopeEv.exit7.i, %if.else10.i @@ -1169,13 +1167,13 @@ _ZNK6google8protobuf15FieldDescriptor5indexEv.exit: ; preds = %if.then.i113, %_Z %sub.ptr.sub14.i = sub i64 %sub.ptr.lhs.cast12.i, %sub.ptr.rhs.cast13.i %retval.0.in.i = sdiv exact i64 %sub.ptr.sub14.i, 88 %sext = shl i64 %retval.0.in.i, 32 - %91 = ashr exact i64 %sext, 30 - %arrayidx125 = getelementptr inbounds i8, ptr %call20, i64 %91 + %89 = ashr exact i64 %sext, 30 + %arrayidx125 = getelementptr inbounds i8, ptr %call20, i64 %89 store i32 1073741824, ptr %arrayidx125, align 4 %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 - %92 = load i32, ptr %field_count_.i104, align 4 - %93 = sext i32 %92 to i64 - %cmp119 = icmp slt i64 %indvars.iv.next183, %93 + %90 = load i32, ptr %field_count_.i104, align 4 + %91 = sext i32 %90 to i64 + %cmp119 = icmp slt i64 %indvars.iv.next183, %91 br i1 %cmp119, label %for.body120, label %for.inc129, !llvm.loop !17 for.inc129: ; preds = %_ZNK6google8protobuf15FieldDescriptor5indexEv.exit, %for.cond116.preheader @@ -1199,33 +1197,33 @@ for.end131: ; preds = %for.inc129, %for.en %prototype.i = getelementptr inbounds i8, ptr %call12, i64 64 store ptr %call133, ptr %prototype.i, align 8 tail call void @_ZN6google8protobuf14DynamicMessage10SharedCtorEb(ptr noundef nonnull align 8 dereferenceable(32) %call133, i1 noundef zeroext false) - %94 = load ptr, ptr %prototype.i, align 8 - store ptr %94, ptr %schema, align 8 + %92 = load ptr, ptr %prototype.i, align 8 + store ptr %92, ptr %schema, align 8 %offsets_ = getelementptr inbounds i8, ptr %schema, i64 8 - %95 = load ptr, ptr %offsets.i, align 8 - store ptr %95, ptr %offsets_, align 8 + %93 = load ptr, ptr %offsets.i, align 8 + store ptr %93, ptr %offsets_, align 8 %has_bit_indices_ = getelementptr inbounds i8, ptr %schema, i64 16 %has_bits_indices139 = getelementptr inbounds i8, ptr %call12, i64 48 - %96 = load ptr, ptr %has_bits_indices139, align 8 - store ptr %96, ptr %has_bit_indices_, align 8 + %94 = load ptr, ptr %has_bits_indices139, align 8 + store ptr %94, ptr %has_bit_indices_, align 8 %has_bits_offset_ = getelementptr inbounds i8, ptr %schema, i64 24 - %97 = load i32, ptr %has_bits_offset, align 4 - store i32 %97, ptr %has_bits_offset_, align 8 + %95 = load i32, ptr %has_bits_offset, align 4 + store i32 %95, ptr %has_bits_offset_, align 8 %metadata_offset_ = getelementptr inbounds i8, ptr %schema, i64 28 store i32 8, ptr %metadata_offset_, align 4 %extensions_offset_ = getelementptr inbounds i8, ptr %schema, i64 32 - %98 = load i32, ptr %46, align 4 - store i32 %98, ptr %extensions_offset_, align 8 + %96 = load i32, ptr %44, align 4 + store i32 %96, ptr %extensions_offset_, align 8 %oneof_case_offset_ = getelementptr inbounds i8, ptr %schema, i64 36 %oneof_case_offset143 = getelementptr inbounds i8, ptr %call12, i64 8 - %99 = load i32, ptr %oneof_case_offset143, align 8 - store i32 %99, ptr %oneof_case_offset_, align 4 + %97 = load i32, ptr %oneof_case_offset143, align 8 + store i32 %97, ptr %oneof_case_offset_, align 4 %object_size_ = getelementptr inbounds i8, ptr %schema, i64 40 - %100 = load i32, ptr %call12, align 8 - store i32 %100, ptr %object_size_, align 8 + %98 = load i32, ptr %call12, align 8 + store i32 %98, ptr %object_size_, align 8 %weak_field_map_offset_ = getelementptr inbounds i8, ptr %schema, i64 44 - %101 = load i32, ptr %weak_field_map_offset196, align 8 - store i32 %101, ptr %weak_field_map_offset_, align 4 + %99 = load i32, ptr %weak_field_map_offset196, align 8 + store i32 %99, ptr %weak_field_map_offset_, align 4 %inlined_string_indices_ = getelementptr inbounds i8, ptr %schema, i64 48 store ptr null, ptr %inlined_string_indices_, align 8 %inlined_string_donated_offset_ = getelementptr inbounds i8, ptr %schema, i64 56 @@ -1235,21 +1233,21 @@ for.end131: ; preds = %for.inc129, %for.en %sizeof_split_ = getelementptr inbounds i8, ptr %schema, i64 64 store i32 -1, ptr %sizeof_split_, align 8 %call146 = tail call noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #22 - %102 = load ptr, ptr %type13, align 8 - %103 = load ptr, ptr %pool, align 8 - invoke void @_ZN6google8protobuf10ReflectionC1EPKNS0_10DescriptorERKNS0_8internal16ReflectionSchemaEPKNS0_14DescriptorPoolEPNS0_14MessageFactoryE(ptr noundef nonnull align 8 dereferenceable(112) %call146, ptr noundef %102, ptr noundef nonnull align 8 dereferenceable(72) %schema, ptr noundef %103, ptr noundef nonnull %this) + %100 = load ptr, ptr %type13, align 8 + %101 = load ptr, ptr %pool, align 8 + invoke void @_ZN6google8protobuf10ReflectionC1EPKNS0_10DescriptorERKNS0_8internal16ReflectionSchemaEPKNS0_14DescriptorPoolEPNS0_14MessageFactoryE(ptr noundef nonnull align 8 dereferenceable(112) %call146, ptr noundef %100, ptr noundef nonnull align 8 dereferenceable(72) %schema, ptr noundef %101, ptr noundef nonnull %this) to label %invoke.cont150 unwind label %lpad149 invoke.cont150: ; preds = %for.end131 %reflection = getelementptr inbounds i8, ptr %call12, i64 56 - %104 = load ptr, ptr %reflection, align 8 + %102 = load ptr, ptr %reflection, align 8 store ptr %call146, ptr %reflection, align 8 - %tobool.not.i.i115 = icmp eq ptr %104, null + %tobool.not.i.i115 = icmp eq ptr %102, null br i1 %tobool.not.i.i115, label %_ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetEPS3_.exit, label %_ZNKSt14default_deleteIKN6google8protobuf10ReflectionEEclEPS3_.exit.i.i _ZNKSt14default_deleteIKN6google8protobuf10ReflectionEEclEPS3_.exit.i.i: ; preds = %invoke.cont150 - call void @_ZN6google8protobuf10ReflectionD1Ev(ptr noundef nonnull align 8 dereferenceable(112) %104) #25 - call void @_ZdlPv(ptr noundef nonnull %104) #23 + call void @_ZN6google8protobuf10ReflectionD1Ev(ptr noundef nonnull align 8 dereferenceable(112) %102) #25 + call void @_ZdlPv(ptr noundef nonnull %102) #23 br label %_ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetEPS3_.exit _ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetEPS3_.exit: ; preds = %invoke.cont150, %_ZNKSt14default_deleteIKN6google8protobuf10ReflectionEEclEPS3_.exit.i.i @@ -1257,10 +1255,10 @@ _ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetE br label %return lpad149: ; preds = %for.end131 - %105 = landingpad { ptr, i32 } + %103 = landingpad { ptr, i32 } cleanup call void @_ZdlPv(ptr noundef nonnull %call146) #23 - resume { ptr, i32 } %105 + resume { ptr, i32 } %103 return: ; preds = %if.then, %_ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetEPS3_.exit, %if.then10 %retval.0 = phi ptr [ %18, %if.then10 ], [ %call133, %_ZNSt10unique_ptrIKN6google8protobuf10ReflectionESt14default_deleteIS3_EE5resetEPS3_.exit ], [ %call4, %if.then ] diff --git a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll index d45949c86ad..6bbbf69d35e 100644 --- a/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll +++ b/bench/protobuf/optimized/generated_message_tctable_lite.cc.ll @@ -5652,71 +5652,71 @@ if.end.i45: ; preds = %do.body.i br i1 %tobool.i47.not, label %if.end114.i, label %if.then6.i if.then6.i: ; preds = %if.end.i45 - %sub.i = and i8 %2, 127 + %sub.i = xor i8 %2, -128 %incdec.ptr8.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 3 %4 = load i8, ptr %incdec.ptr.i, align 1 %or.i = or i8 %4, %sub.i - %tobool13.i.not = icmp sgt i8 %4, -1 + %tobool13.i.not = icmp sgt i8 %or.i, -1 br i1 %tobool13.i.not, label %if.end114.i, label %if.then15.i if.then15.i: ; preds = %if.then6.i - %sub17.i = and i8 %or.i, 127 + %sub17.i = xor i8 %or.i, -128 %incdec.ptr18.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 4 %5 = load i8, ptr %incdec.ptr8.i, align 1 %or20.i = or i8 %5, %sub17.i - %tobool24.i.not = icmp sgt i8 %5, -1 + %tobool24.i.not = icmp sgt i8 %or20.i, -1 br i1 %tobool24.i.not, label %if.end114.i, label %if.then26.i if.then26.i: ; preds = %if.then15.i - %sub28.i = and i8 %or20.i, 127 + %sub28.i = xor i8 %or20.i, -128 %incdec.ptr29.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 5 %6 = load i8, ptr %incdec.ptr18.i, align 1 %or31.i = or i8 %6, %sub28.i - %tobool35.i.not = icmp sgt i8 %6, -1 + %tobool35.i.not = icmp sgt i8 %or31.i, -1 br i1 %tobool35.i.not, label %if.end114.i, label %if.then37.i if.then37.i: ; preds = %if.then26.i - %sub39.i = and i8 %or31.i, 127 + %sub39.i = xor i8 %or31.i, -128 %incdec.ptr40.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 6 %7 = load i8, ptr %incdec.ptr29.i, align 1 %or42.i = or i8 %7, %sub39.i - %tobool46.i.not = icmp sgt i8 %7, -1 + %tobool46.i.not = icmp sgt i8 %or42.i, -1 br i1 %tobool46.i.not, label %if.end114.i, label %if.then48.i if.then48.i: ; preds = %if.then37.i - %sub50.i = and i8 %or42.i, 127 + %sub50.i = xor i8 %or42.i, -128 %incdec.ptr51.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 7 %8 = load i8, ptr %incdec.ptr40.i, align 1 %or53.i = or i8 %8, %sub50.i - %tobool57.i.not = icmp sgt i8 %8, -1 + %tobool57.i.not = icmp sgt i8 %or53.i, -1 br i1 %tobool57.i.not, label %if.end114.i, label %if.then59.i if.then59.i: ; preds = %if.then48.i - %sub61.i = and i8 %or53.i, 127 + %sub61.i = xor i8 %or53.i, -128 %incdec.ptr62.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 8 %9 = load i8, ptr %incdec.ptr51.i, align 1 %or64.i = or i8 %9, %sub61.i - %tobool68.i.not = icmp sgt i8 %9, -1 + %tobool68.i.not = icmp sgt i8 %or64.i, -1 br i1 %tobool68.i.not, label %if.end114.i, label %if.then70.i if.then70.i: ; preds = %if.then59.i - %sub72.i = and i8 %or64.i, 127 + %sub72.i = xor i8 %or64.i, -128 %incdec.ptr73.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 9 %10 = load i8, ptr %incdec.ptr62.i, align 1 %or75.i = or i8 %10, %sub72.i - %tobool79.i.not = icmp sgt i8 %10, -1 + %tobool79.i.not = icmp sgt i8 %or75.i, -1 br i1 %tobool79.i.not, label %if.end114.i, label %if.then81.i if.then81.i: ; preds = %if.then70.i - %sub83.i = and i8 %or75.i, 127 + %sub83.i = xor i8 %or75.i, -128 %incdec.ptr84.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 10 %11 = load i8, ptr %incdec.ptr73.i, align 1 %or86.i = or i8 %11, %sub83.i - %tobool90.i.not = icmp sgt i8 %11, -1 + %tobool90.i.not = icmp sgt i8 %or86.i, -1 br i1 %tobool90.i.not, label %if.end114.i, label %if.then92.i if.then92.i: ; preds = %if.then81.i - %sub94.i = and i8 %or86.i, 127 + %sub94.i = xor i8 %or86.i, -128 %incdec.ptr95.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 11 %12 = load i8, ptr %incdec.ptr84.i, align 1 %13 = and i8 %12, -127 @@ -5853,71 +5853,71 @@ if.end.i45: ; preds = %do.body.i br i1 %tobool.i47.not, label %if.end114.i, label %if.then6.i if.then6.i: ; preds = %if.end.i45 - %sub.i = and i8 %1, 127 + %sub.i = xor i8 %1, -128 %incdec.ptr8.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 4 %3 = load i8, ptr %incdec.ptr.i, align 1 %or.i = or i8 %3, %sub.i - %tobool13.i.not = icmp sgt i8 %3, -1 + %tobool13.i.not = icmp sgt i8 %or.i, -1 br i1 %tobool13.i.not, label %if.end114.i, label %if.then15.i if.then15.i: ; preds = %if.then6.i - %sub17.i = and i8 %or.i, 127 + %sub17.i = xor i8 %or.i, -128 %incdec.ptr18.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 5 %4 = load i8, ptr %incdec.ptr8.i, align 1 %or20.i = or i8 %4, %sub17.i - %tobool24.i.not = icmp sgt i8 %4, -1 + %tobool24.i.not = icmp sgt i8 %or20.i, -1 br i1 %tobool24.i.not, label %if.end114.i, label %if.then26.i if.then26.i: ; preds = %if.then15.i - %sub28.i = and i8 %or20.i, 127 + %sub28.i = xor i8 %or20.i, -128 %incdec.ptr29.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 6 %5 = load i8, ptr %incdec.ptr18.i, align 1 %or31.i = or i8 %5, %sub28.i - %tobool35.i.not = icmp sgt i8 %5, -1 + %tobool35.i.not = icmp sgt i8 %or31.i, -1 br i1 %tobool35.i.not, label %if.end114.i, label %if.then37.i if.then37.i: ; preds = %if.then26.i - %sub39.i = and i8 %or31.i, 127 + %sub39.i = xor i8 %or31.i, -128 %incdec.ptr40.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 7 %6 = load i8, ptr %incdec.ptr29.i, align 1 %or42.i = or i8 %6, %sub39.i - %tobool46.i.not = icmp sgt i8 %6, -1 + %tobool46.i.not = icmp sgt i8 %or42.i, -1 br i1 %tobool46.i.not, label %if.end114.i, label %if.then48.i if.then48.i: ; preds = %if.then37.i - %sub50.i = and i8 %or42.i, 127 + %sub50.i = xor i8 %or42.i, -128 %incdec.ptr51.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 8 %7 = load i8, ptr %incdec.ptr40.i, align 1 %or53.i = or i8 %7, %sub50.i - %tobool57.i.not = icmp sgt i8 %7, -1 + %tobool57.i.not = icmp sgt i8 %or53.i, -1 br i1 %tobool57.i.not, label %if.end114.i, label %if.then59.i if.then59.i: ; preds = %if.then48.i - %sub61.i = and i8 %or53.i, 127 + %sub61.i = xor i8 %or53.i, -128 %incdec.ptr62.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 9 %8 = load i8, ptr %incdec.ptr51.i, align 1 %or64.i = or i8 %8, %sub61.i - %tobool68.i.not = icmp sgt i8 %8, -1 + %tobool68.i.not = icmp sgt i8 %or64.i, -1 br i1 %tobool68.i.not, label %if.end114.i, label %if.then70.i if.then70.i: ; preds = %if.then59.i - %sub72.i = and i8 %or64.i, 127 + %sub72.i = xor i8 %or64.i, -128 %incdec.ptr73.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 10 %9 = load i8, ptr %incdec.ptr62.i, align 1 %or75.i = or i8 %9, %sub72.i - %tobool79.i.not = icmp sgt i8 %9, -1 + %tobool79.i.not = icmp sgt i8 %or75.i, -1 br i1 %tobool79.i.not, label %if.end114.i, label %if.then81.i if.then81.i: ; preds = %if.then70.i - %sub83.i = and i8 %or75.i, 127 + %sub83.i = xor i8 %or75.i, -128 %incdec.ptr84.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 11 %10 = load i8, ptr %incdec.ptr73.i, align 1 %or86.i = or i8 %10, %sub83.i - %tobool90.i.not = icmp sgt i8 %10, -1 + %tobool90.i.not = icmp sgt i8 %or86.i, -1 br i1 %tobool90.i.not, label %if.end114.i, label %if.then92.i if.then92.i: ; preds = %if.then81.i - %sub94.i = and i8 %or86.i, 127 + %sub94.i = xor i8 %or86.i, -128 %incdec.ptr95.i = getelementptr inbounds i8, ptr %ptr.addr.i.0, i64 12 %11 = load i8, ptr %incdec.ptr84.i, align 1 %12 = and i8 %11, -127 diff --git a/bench/qemu/optimized/linux-user_mmap.c.ll b/bench/qemu/optimized/linux-user_mmap.c.ll index 4fc16fb1407..925f94089b8 100644 --- a/bench/qemu/optimized/linux-user_mmap.c.ll +++ b/bench/qemu/optimized/linux-user_mmap.c.ll @@ -207,8 +207,7 @@ trace_target_mprotect.exit: ; preds = %entry, %land.lhs.tr br i1 %cmp.not, label %if.end, label %return if.end: ; preds = %trace_target_mprotect.exit - %and.i = and i32 %target_prot, 7 - %or.i = or disjoint i32 %and.i, 8 + %or.i = or i32 %target_prot, 8 %tobool.not.i = icmp ugt i32 %target_prot, 15 %cond.i = select i1 %tobool.not.i, i32 0, i32 %or.i br i1 %tobool.not.i, label %return, label %if.end2 @@ -258,33 +257,33 @@ mmap_lock.exit: ; preds = %if.end9, %if.then.i %12 = phi i64 [ %9, %if.end9 ], [ %.pre, %if.then.i ] %sub18 = sub i64 %sub17, %and12 %cmp19 = icmp ult i64 %sub18, %12 - %cmp2189.not = icmp eq i64 %and12, %start + %cmp2188.not = icmp eq i64 %and12, %start br i1 %cmp19, label %for.cond.preheader, label %if.else for.cond.preheader: ; preds = %mmap_lock.exit - br i1 %cmp2189.not, label %for.cond25.preheader, label %for.body + br i1 %cmp2188.not, label %for.cond25.preheader, label %for.body for.cond25.preheader: ; preds = %for.body, %for.cond.preheader %prot1.0.lcssa = phi i32 [ %target_prot, %for.cond.preheader ], [ %or, %for.body ] - %cmp2693 = icmp ult i64 %sub11, %sub17 - br i1 %cmp2693, label %for.body27, label %if.end98.thread + %cmp2692 = icmp ult i64 %sub11, %sub17 + br i1 %cmp2692, label %for.body27, label %if.end98.thread for.body: ; preds = %for.cond.preheader, %for.body - %a.091 = phi i64 [ %add23, %for.body ], [ %and12, %for.cond.preheader ] - %prot1.090 = phi i32 [ %or, %for.body ], [ %target_prot, %for.cond.preheader ] - %call22 = tail call i32 @page_get_flags(i64 noundef %a.091) #14 - %or = or i32 %call22, %prot1.090 - %add23 = add i64 %a.091, 4096 + %a.090 = phi i64 [ %add23, %for.body ], [ %and12, %for.cond.preheader ] + %prot1.089 = phi i32 [ %or, %for.body ], [ %target_prot, %for.cond.preheader ] + %call22 = tail call i32 @page_get_flags(i64 noundef %a.090) #14 + %or = or i32 %call22, %prot1.089 + %add23 = add i64 %a.090, 4096 %cmp21 = icmp ult i64 %add23, %start br i1 %cmp21, label %for.body, label %for.cond25.preheader, !llvm.loop !5 for.body27: ; preds = %for.cond25.preheader, %for.body27 - %a24.095 = phi i64 [ %add32, %for.body27 ], [ %sub11, %for.cond25.preheader ] - %prot1.194 = phi i32 [ %or30, %for.body27 ], [ %prot1.0.lcssa, %for.cond25.preheader ] - %add28 = add nuw i64 %a24.095, 1 + %a24.094 = phi i64 [ %add32, %for.body27 ], [ %sub11, %for.cond25.preheader ] + %prot1.193 = phi i32 [ %or30, %for.body27 ], [ %prot1.0.lcssa, %for.cond25.preheader ] + %add28 = add nuw i64 %a24.094, 1 %call29 = tail call i32 @page_get_flags(i64 noundef %add28) #14 - %or30 = or i32 %call29, %prot1.194 - %add32 = add i64 %a24.095, 4096 + %or30 = or i32 %call29, %prot1.193 + %add32 = add i64 %a24.094, 4096 %cmp26 = icmp ult i64 %add32, %sub17 br i1 %cmp26, label %for.body27, label %if.end98.thread, !llvm.loop !7 @@ -297,14 +296,14 @@ if.end98.thread: ; preds = %for.body27, %for.co br label %for.body101.preheader if.else: ; preds = %mmap_lock.exit - br i1 %cmp2189.not, label %if.end60, label %for.body43 + br i1 %cmp2188.not, label %if.end60, label %for.body43 for.body43: ; preds = %if.else, %for.body43 - %a40.086 = phi i64 [ %add47, %for.body43 ], [ %and12, %if.else ] - %prot1.285 = phi i32 [ %or45, %for.body43 ], [ %target_prot, %if.else ] - %call44 = tail call i32 @page_get_flags(i64 noundef %a40.086) #14 - %or45 = or i32 %call44, %prot1.285 - %add47 = add i64 %a40.086, 4096 + %a40.085 = phi i64 [ %add47, %for.body43 ], [ %and12, %if.else ] + %prot1.284 = phi i32 [ %or45, %for.body43 ], [ %target_prot, %if.else ] + %call44 = tail call i32 @page_get_flags(i64 noundef %a40.085) #14 + %or45 = or i32 %call44, %prot1.284 + %add47 = add i64 %a40.085, 4096 %cmp42 = icmp ult i64 %add47, %start br i1 %cmp42, label %for.body43, label %for.end48, !llvm.loop !8 @@ -327,12 +326,12 @@ if.end60: ; preds = %for.end48, %if.then br i1 %cmp61, label %for.body66, label %if.end85 for.body66: ; preds = %if.end60, %for.body66 - %a63.088 = phi i64 [ %add71, %for.body66 ], [ %sub11, %if.end60 ] - %prot1.387 = phi i32 [ %or69, %for.body66 ], [ %target_prot, %if.end60 ] - %add67 = add nuw i64 %a63.088, 1 + %a63.087 = phi i64 [ %add71, %for.body66 ], [ %sub11, %if.end60 ] + %prot1.386 = phi i32 [ %or69, %for.body66 ], [ %target_prot, %if.end60 ] + %add67 = add nuw i64 %a63.087, 1 %call68 = tail call i32 @page_get_flags(i64 noundef %add67) #14 - %or69 = or i32 %call68, %prot1.387 - %add71 = add i64 %a63.088, 4096 + %or69 = or i32 %call68, %prot1.386 + %add71 = add i64 %a63.087, 4096 %cmp65 = icmp ult i64 %add71, %sub17 br i1 %cmp65, label %for.body66, label %for.end72, !llvm.loop !9 @@ -364,8 +363,8 @@ if.then87: ; preds = %if.end85 %idxprom88 = zext nneg i32 %nranges.2 to i64 %arrayidx89 = getelementptr [3 x i64], ptr %starts, i64 0, i64 %idxprom88 store i64 %host_start.0, ptr %arrayidx89, align 8 - %reass.sub99 = sub nuw i64 %host_last.0, %host_start.0 - %add91 = add i64 %reass.sub99, 1 + %reass.sub98 = sub nuw i64 %host_last.0, %host_start.0 + %add91 = add i64 %reass.sub98, 1 %arrayidx93 = getelementptr [3 x i64], ptr %lens, i64 0, i64 %idxprom88 store i64 %add91, ptr %arrayidx93, align 8 %arrayidx95 = getelementptr [3 x i32], ptr %prots, i64 0, i64 %idxprom88 @@ -375,12 +374,12 @@ if.then87: ; preds = %if.end85 if.end98: ; preds = %if.end85, %if.then87 %nranges.0 = phi i32 [ %inc96, %if.then87 ], [ %nranges.2, %if.end85 ] - %cmp10097 = icmp sgt i32 %nranges.0, 0 - br i1 %cmp10097, label %for.body101.preheader, label %for.end116 + %cmp10096 = icmp sgt i32 %nranges.0, 0 + br i1 %cmp10096, label %for.body101.preheader, label %for.end116 for.body101.preheader: ; preds = %if.end98.thread, %if.end98 - %nranges.0104 = phi i32 [ 1, %if.end98.thread ], [ %nranges.0, %if.end98 ] - %wide.trip.count = zext nneg i32 %nranges.0104 to i64 + %nranges.0103 = phi i32 [ 1, %if.end98.thread ], [ %nranges.0, %if.end98 ] + %wide.trip.count = zext nneg i32 %nranges.0103 to i64 br label %for.body101 for.cond99: ; preds = %for.body101 @@ -399,11 +398,11 @@ for.body101: ; preds = %for.body101.prehead %19 = load i64, ptr %arrayidx106, align 8 %arrayidx108 = getelementptr [3 x i32], ptr %prots, i64 0, i64 %indvars.iv %20 = load i32, ptr %arrayidx108, align 4 - %and.i80 = and i32 %20, 3 + %and.i = and i32 %20, 3 %and1.i = lshr i32 %20, 2 %and1.lobit.i = and i32 %and1.i, 1 - %or.i81 = or i32 %and1.lobit.i, %and.i80 - %call110 = tail call i32 @mprotect(ptr noundef %18, i64 noundef %19, i32 noundef %or.i81) #14 + %or.i80 = or i32 %and1.lobit.i, %and.i + %call110 = tail call i32 @mprotect(ptr noundef %18, i64 noundef %19, i32 noundef %or.i80) #14 %cmp111.not = icmp eq i32 %call110, 0 br i1 %cmp111.not, label %for.cond99, label %error @@ -414,8 +413,8 @@ for.end116: ; preds = %for.cond99, %if.end error: ; preds = %for.body101, %for.end116 %ret.0 = phi i32 [ 0, %for.end116 ], [ %call110, %for.body101 ] %21 = load i32, ptr %10, align 4 - %cmp.i82 = icmp sgt i32 %21, 0 - br i1 %cmp.i82, label %if.end.i, label %if.else.i + %cmp.i81 = icmp sgt i32 %21, 0 + br i1 %cmp.i81, label %if.end.i, label %if.else.i if.else.i: ; preds = %error tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef nonnull @__PRETTY_FUNCTION__.mmap_unlock) #15 @@ -428,7 +427,7 @@ if.end.i: ; preds = %error br i1 %cmp1.i, label %if.then2.i, label %return if.then2.i: ; preds = %if.end.i - %call.i83 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @mmap_mutex) #14 + %call.i82 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @mmap_mutex) #14 br label %return return: ; preds = %if.then2.i, %if.end.i, %if.end5, %if.end2, %if.end, %trace_target_mprotect.exit @@ -673,8 +672,7 @@ if.then: ; preds = %trace_target_mmap.e br label %fail if.end: ; preds = %trace_target_mmap.exit - %and.i = and i32 %target_prot, 7 - %or.i = or disjoint i32 %and.i, 8 + %or.i = or i32 %target_prot, 8 %tobool.not.i = icmp ugt i32 %target_prot, 15 br i1 %tobool.not.i, label %if.then3, label %if.end5 @@ -792,16 +790,16 @@ if.then64: ; preds = %if.end61 %sub68 = add i64 %add67, %15 %sub69 = sub i64 0, %15 %and70 = and i64 %sub68, %sub69 - %and.i158 = and i32 %target_prot, 3 + %and.i = and i32 %target_prot, 3 %and1.i = lshr i32 %target_prot, 2 %and1.lobit.i = and i32 %and1.i, 1 - %or.i159 = or i32 %and1.lobit.i, %and.i158 + %or.i158 = or i32 %and1.lobit.i, %and.i %17 = load i64, ptr @guest_base, align 8 %add.i = add i64 %17, %start.addr.0 %18 = inttoptr i64 %add.i to ptr %or73 = or disjoint i32 %flags, 16 %or74 = or i32 %flags, 48 - %call75 = tail call ptr @mmap64(ptr noundef %18, i64 noundef %and70, i32 noundef %or.i159, i32 noundef %or74, i32 noundef -1, i64 noundef 0) #14 + %call75 = tail call ptr @mmap64(ptr noundef %18, i64 noundef %and70, i32 noundef %or.i158, i32 noundef %or74, i32 noundef -1, i64 noundef 0) #14 %cmp76 = icmp eq ptr %call75, inttoptr (i64 -1 to ptr) br i1 %cmp76, label %fail, label %if.end78 @@ -811,16 +809,16 @@ if.end78: ; preds = %if.then64 if.then81: ; preds = %if.end78 %20 = load i64, ptr @guest_base, align 8 - %add.i160 = add i64 %20, %start.addr.0 - %21 = inttoptr i64 %add.i160 to ptr - %call84 = tail call ptr @mmap64(ptr noundef %21, i64 noundef %len.addr.0, i32 noundef %or.i159, i32 noundef %or73, i32 noundef %fd, i64 noundef %and25) #14 + %add.i159 = add i64 %20, %start.addr.0 + %21 = inttoptr i64 %add.i159 to ptr + %call84 = tail call ptr @mmap64(ptr noundef %21, i64 noundef %len.addr.0, i32 noundef %or.i158, i32 noundef %or73, i32 noundef %fd, i64 noundef %and25) #14 %cmp85 = icmp eq ptr %call84, inttoptr (i64 -1 to ptr) br i1 %cmp85, label %if.then86, label %if.end89 if.then86: ; preds = %if.then81 %22 = load i64, ptr @guest_base, align 8 - %add.i161 = add i64 %22, %start.addr.0 - %23 = inttoptr i64 %add.i161 to ptr + %add.i160 = add i64 %22, %start.addr.0 + %23 = inttoptr i64 %add.i160 to ptr %call88 = tail call i32 @munmap(ptr noundef %23, i64 noundef %and70) #14 br label %fail @@ -873,12 +871,12 @@ if.end107: ; preds = %if.else102 lor.lhs.false: ; preds = %if.end107 %sub.i = add i64 %len.addr.0, -1 %27 = load i64, ptr @reserved_va, align 8 - %tobool.not.i162 = icmp eq i64 %27, 0 - %..i = select i1 %tobool.not.i162, i64 -1, i64 %27 + %tobool.not.i161 = icmp eq i64 %27, 0 + %..i = select i1 %tobool.not.i161, i64 -1, i64 %27 %cmp.not.i = icmp ule i64 %sub.i, %..i %reass.sub = sub i64 %..i, %len.addr.0 - %add.i163 = add i64 %reass.sub, 1 - %cmp7.i = icmp ule i64 %start.addr.0, %add.i163 + %add.i162 = add i64 %reass.sub, 1 + %cmp7.i = icmp ule i64 %start.addr.0, %add.i162 %28 = select i1 %cmp.not.i, i1 %cmp7.i, i1 false br i1 %28, label %if.end119, label %if.then117 @@ -948,8 +946,8 @@ if.end148: ; preds = %if.then140 if.end156: ; preds = %if.end148 %33 = load i64, ptr @guest_base, align 8 - %add.i164 = add i64 %33, %start.addr.0 - %34 = inttoptr i64 %add.i164 to ptr + %add.i163 = add i64 %33, %start.addr.0 + %34 = inttoptr i64 %add.i163 to ptr %call158 = tail call i64 @pread64(i32 noundef %fd, ptr noundef %34, i64 noundef %len.addr.0, i64 noundef %offset) #14 %cmp159 = icmp eq i64 %call158, -1 br i1 %cmp159, label %fail, label %if.end161 @@ -1021,13 +1019,13 @@ if.then206: ; preds = %if.end203 %sub215 = sub nuw i64 %real_last.0, %real_start.0 %add216 = add i64 %sub215, 1 %39 = load i64, ptr @guest_base, align 8 - %add.i165 = add i64 %39, %real_start.0 - %40 = inttoptr i64 %add.i165 to ptr - %and.i166 = and i32 %target_prot, 3 - %and1.i167 = lshr i32 %target_prot, 2 - %and1.lobit.i168 = and i32 %and1.i167, 1 - %or.i169 = or i32 %and1.lobit.i168, %and.i166 - %call219 = tail call ptr @mmap64(ptr noundef %40, i64 noundef %add216, i32 noundef %or.i169, i32 noundef %flags.addr.0, i32 noundef %fd, i64 noundef %offset1.0) #14 + %add.i164 = add i64 %39, %real_start.0 + %40 = inttoptr i64 %add.i164 to ptr + %and.i165 = and i32 %target_prot, 3 + %and1.i166 = lshr i32 %target_prot, 2 + %and1.lobit.i167 = and i32 %and1.i166, 1 + %or.i168 = or i32 %and1.lobit.i167, %and.i165 + %call219 = tail call ptr @mmap64(ptr noundef %40, i64 noundef %add216, i32 noundef %or.i168, i32 noundef %flags.addr.0, i32 noundef %fd, i64 noundef %offset1.0) #14 %cmp220.not = icmp eq ptr %call219, %40 br i1 %cmp220.not, label %the_end1, label %if.then222 @@ -1042,10 +1040,10 @@ if.then225: ; preds = %if.then222 br label %fail the_end1.thread: ; preds = %if.then180, %if.end203 - %and232179 = shl i32 %flags.addr.0, 2 - %41 = and i32 %and232179, 128 - %spec.select182 = or disjoint i32 %or.i, %41 - %or237183 = or disjoint i32 %spec.select182, 64 + %and232178 = shl i32 %flags.addr.0, 2 + %41 = and i32 %and232178, 128 + %spec.select181 = or disjoint i32 %or.i, %41 + %or237182 = or disjoint i32 %spec.select181, 64 br label %if.then240 the_end1: ; preds = %if.then206, %if.end97 @@ -1062,10 +1060,10 @@ the_end1: ; preds = %if.then206, %if.end br i1 %cmp238, label %if.then240, label %if.else241 if.then240: ; preds = %the_end1.thread, %the_end1 - %or237189 = phi i32 [ %or237183, %the_end1.thread ], [ %or237, %the_end1 ] - %start.addr.2187 = phi i64 [ %start.addr.0, %the_end1.thread ], [ %start.addr.2, %the_end1 ] - %last.0185 = phi i64 [ %sub109, %the_end1.thread ], [ %last.0, %the_end1 ] - tail call void @page_set_flags(i64 noundef %start.addr.2187, i64 noundef %last.0185, i32 noundef %or237189) #14 + %or237188 = phi i32 [ %or237182, %the_end1.thread ], [ %or237, %the_end1 ] + %start.addr.2186 = phi i64 [ %start.addr.0, %the_end1.thread ], [ %start.addr.2, %the_end1 ] + %last.0184 = phi i64 [ %sub109, %the_end1.thread ], [ %last.0, %the_end1 ] + tail call void @page_set_flags(i64 noundef %start.addr.2186, i64 noundef %last.0184, i32 noundef %or237188) #14 br label %if.end253 if.else241: ; preds = %the_end1 @@ -1089,18 +1087,18 @@ if.then250: ; preds = %if.end246 br label %if.end253 if.end253: ; preds = %if.end246, %if.then250, %if.then240 - %start.addr.2188 = phi i64 [ %start.addr.2, %if.end246 ], [ %start.addr.2, %if.then250 ], [ %start.addr.2187, %if.then240 ] - %last.0186 = phi i64 [ %last.0, %if.end246 ], [ %last.0, %if.then250 ], [ %last.0185, %if.then240 ] - tail call fastcc void @shm_region_rm_complete(i64 noundef %start.addr.2188, i64 noundef %last.0186) + %start.addr.2187 = phi i64 [ %start.addr.2, %if.end246 ], [ %start.addr.2, %if.then250 ], [ %start.addr.2186, %if.then240 ] + %last.0185 = phi i64 [ %last.0, %if.end246 ], [ %last.0, %if.then250 ], [ %last.0184, %if.then240 ] + tail call fastcc void @shm_region_rm_complete(i64 noundef %start.addr.2187, i64 noundef %last.0185) br label %the_end the_end: ; preds = %if.end161, %if.then164, %if.end253 - %start.addr.1 = phi i64 [ %start.addr.2188, %if.end253 ], [ %start.addr.0, %if.end161 ], [ %start.addr.0, %if.then164 ] + %start.addr.1 = phi i64 [ %start.addr.2187, %if.end253 ], [ %start.addr.0, %if.end161 ], [ %start.addr.0, %if.then164 ] tail call fastcc void @trace_target_mmap_complete(i64 noundef %start.addr.1) %43 = load i32, ptr @qemu_loglevel, align 4 - %and.i170 = and i32 %43, 16384 - %cmp.i171.not = icmp eq i32 %and.i170, 0 - br i1 %cmp.i171.not, label %if.end261, label %if.then255 + %and.i169 = and i32 %43, 16384 + %cmp.i170.not = icmp eq i32 %and.i169, 0 + br i1 %cmp.i170.not, label %if.end261, label %if.then255 if.then255: ; preds = %the_end %call256 = tail call ptr @qemu_log_trylock() #14 @@ -1119,8 +1117,8 @@ if.end261: ; preds = %if.then255, %if.the fail: ; preds = %if.then222, %if.then225, %if.then194, %if.end184, %if.then180, %if.end156, %if.end148, %if.then64, %if.then44, %if.then146, %if.then124, %if.then117, %if.then105, %if.then86, %if.then36, %if.then12, %if.then7, %if.then3, %if.then %45 = load i32, ptr %0, align 4 - %cmp.i172 = icmp sgt i32 %45, 0 - br i1 %cmp.i172, label %if.end.i, label %if.else.i + %cmp.i171 = icmp sgt i32 %45, 0 + br i1 %cmp.i171, label %if.end.i, label %if.else.i if.else.i: ; preds = %fail tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef nonnull @__PRETTY_FUNCTION__.mmap_unlock) #15 @@ -1133,7 +1131,7 @@ if.end.i: ; preds = %fail br i1 %cmp1.i, label %if.then2.i, label %return if.then2.i: ; preds = %if.end.i - %call.i173 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @mmap_mutex) #14 + %call.i172 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull @mmap_mutex) #14 br label %return return: ; preds = %if.then2.i, %if.end.i, %if.end261 diff --git a/bench/qemu/optimized/linux-user_syscall.c.ll b/bench/qemu/optimized/linux-user_syscall.c.ll index 99c4f63620b..52d22a1aed4 100644 --- a/bench/qemu/optimized/linux-user_syscall.c.ll +++ b/bench/qemu/optimized/linux-user_syscall.c.ll @@ -4673,12 +4673,8 @@ if.end322: ; preds = %sw.bb318 if.end326: ; preds = %if.end322 %58 = trunc i64 %arg3 to i32 - %conv328 = and i32 %58, -524289 - %and329 = and i64 %arg3, 524288 - %tobool330.not = icmp eq i64 %and329, 0 - %spec.select = select i1 %tobool330.not, i32 %conv328, i32 %58 %conv333 = trunc i64 %arg1 to i32 - %call.i1963 = tail call i64 (i64, ...) @syscall(i64 noundef 428, i32 noundef %conv333, ptr noundef nonnull %call323, i32 noundef %spec.select) #27 + %call.i1963 = tail call i64 (i64, ...) @syscall(i64 noundef 428, i32 noundef %conv333, ptr noundef nonnull %call323, i32 noundef %58) #27 %sext3868 = shl i64 %call.i1963, 32 %conv335 = ashr exact i64 %sext3868, 32 %cmp.i1965 = icmp eq i64 %sext3868, -4294967296 @@ -9979,7 +9975,7 @@ land.lhs.true3458: ; preds = %get_errno.exit3591 sw.bb3465: ; preds = %entry %469 = and i64 %arg1, 4294967264 %or.cond.i3597.not.not = icmp eq i64 %469, 212795392 - %and2.i3598 = and i64 %arg1, 65535 + %and2.i3598 = and i64 %arg1, 31 br i1 %or.cond.i3597.not.not, label %if.else3472, label %return if.else3472: ; preds = %sw.bb3465 @@ -12683,10 +12679,9 @@ entry: br i1 %tobool.not, label %if.end, label %return if.end: ; preds = %entry - %and1 = and i32 %flags, 2048 %tobool6.not = icmp ult i32 %flags, 524288 %or8 = or i32 %flags, 524288 - %host_flags.1 = select i1 %tobool6.not, i32 %and1, i32 %or8 + %host_flags.1 = select i1 %tobool6.not, i32 %flags, i32 %or8 %cmp = icmp eq i64 %target_addr, 0 br i1 %cmp, label %if.then10, label %if.end12 diff --git a/bench/rocksdb/optimized/manager.cc.ll b/bench/rocksdb/optimized/manager.cc.ll index 5c434fa99a0..5a2c1da7a87 100644 --- a/bench/rocksdb/optimized/manager.cc.ll +++ b/bench/rocksdb/optimized/manager.cc.ll @@ -1261,7 +1261,7 @@ if.else.i: ; preds = %entry br i1 %cmp.i.i.i, label %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread, label %if.else.i.i _ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread: ; preds = %if.else.i - %call335 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef 0) #14 + %call337 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef 0) #14 br label %for.end if.else.i.i: ; preds = %if.else.i @@ -1275,13 +1275,13 @@ _ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread: ; preds = %if.else.i.i, %retval.0.i.in = phi ptr [ %num_values.i, %if.then.i ], [ %weight.i.i, %if.else.i.i ] %retval.0.i = load i32, ptr %retval.0.i.in, align 4 %retval.0.i.fr = freeze i32 %retval.0.i - %conv = zext nneg i32 %retval.0.i.fr to i64 + %conv = zext i32 %retval.0.i.fr to i64 %5 = icmp slt i32 %retval.0.i.fr, 0 %6 = shl nuw nsw i64 %conv, 3 %spec.select = select i1 %5, i64 -1, i64 %6 %call3 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %spec.select) #14 - %cmp30 = icmp sgt i32 %retval.0.i.fr, 0 - br i1 %cmp30, label %for.body.lr.ph, label %for.end + %cmp31 = icmp sgt i32 %retval.0.i.fr, 0 + br i1 %cmp31, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread %d2.i.i = getelementptr inbounds i8, ptr %this, i64 96 @@ -1377,29 +1377,28 @@ _ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit: ; preds = %if.else.i.i10, br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !6 for.end: ; preds = %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread - %cmp3039 = phi i1 [ false, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ false, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ true, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] - %call338 = phi ptr [ %call335, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ %call3, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ %call3, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] - %retval.0.i2937 = phi i32 [ 0, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ %retval.0.i.fr, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ %retval.0.i.fr, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] + %cmp3141 = phi i1 [ false, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ false, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ true, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] + %call340 = phi ptr [ %call337, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ %call3, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ %call3, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] + %conv3039 = phi i64 [ 0, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread.thread ], [ %conv, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE4sizeEv.exit.thread ], [ %conv, %_ZNK4toku3omtIPNS_8locktreeES2_Lb0EE5fetchEjPS2_.exit ] %call.i.i14 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %m_mutex.i) #13 %23 = tail call { i32, i32 } asm sideeffect "rdtsc", "={ax},={dx},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !7 - br i1 %cmp3039, label %for.body.lr.ph.i, label %_ZN4toku16locktree_manager18escalate_locktreesEPPNS_8locktreeEi.exit + br i1 %cmp3141, label %for.body.lr.ph.i, label %_ZN4toku16locktree_manager18escalate_locktreesEPPNS_8locktreeEi.exit for.body.lr.ph.i: ; preds = %for.end %m_lt_escalate_callback.i = getelementptr inbounds i8, ptr %this, i64 72 %m_lt_escalate_callback_extra.i = getelementptr inbounds i8, ptr %this, i64 80 - %wide.trip.count.i = zext nneg i32 %retval.0.i2937 to i64 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] - %arrayidx.i = getelementptr inbounds ptr, ptr %call338, i64 %indvars.iv.i + %arrayidx.i = getelementptr inbounds ptr, ptr %call340, i64 %indvars.iv.i %24 = load ptr, ptr %arrayidx.i, align 8 %25 = load ptr, ptr %m_lt_escalate_callback.i, align 8 %26 = load ptr, ptr %m_lt_escalate_callback_extra.i, align 8 tail call void @_ZN4toku8locktree8escalateEPFvmPKS0_RKNS_12range_bufferEPvES6_(ptr noundef nonnull align 8 dereferenceable(400) %24, ptr noundef %25, ptr noundef %26) tail call void @_ZN4toku16locktree_manager10release_ltEPNS_8locktreeE(ptr noundef nonnull align 8 dereferenceable(392) %this, ptr noundef %24) %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 + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv3039 br i1 %exitcond.not.i, label %_ZN4toku16locktree_manager18escalate_locktreesEPPNS_8locktreeEi.exit, label %for.body.i, !llvm.loop !8 _ZN4toku16locktree_manager18escalate_locktreesEPPNS_8locktreeEi.exit: ; preds = %for.body.i, %for.end @@ -1433,7 +1432,7 @@ _ZN4toku16locktree_manager18escalate_locktreesEPPNS_8locktreeEi.exit: ; preds = %m_escalation_latest_result.i = getelementptr inbounds i8, ptr %this, i64 240 store i64 %30, ptr %m_escalation_latest_result.i, align 8 %call.i11.i = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull %m_escalation_mutex.i) #13 - tail call void @_ZdaPv(ptr noundef nonnull %call338) #15 + tail call void @_ZdaPv(ptr noundef nonnull %call340) #15 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %t.i17) %call.i18 = call i32 @gettimeofday(ptr noundef nonnull %t.i17, ptr noundef null) #13 %31 = load i64, ptr %t.i17, align 8 diff --git a/bench/ruby/optimized/ruby.ll b/bench/ruby/optimized/ruby.ll index 34a22c0671c..1f9cdb91362 100644 --- a/bench/ruby/optimized/ruby.ll +++ b/bench/ruby/optimized/ruby.ll @@ -4369,7 +4369,7 @@ sub_1.i: ; preds = %sub_0.i %97 = sext i8 %96 to i32 %98 = add nsw i32 %97, -91 %99 = icmp ult i32 %98, -26 - %100 = or i32 %97, 32 + %100 = or disjoint i32 %97, 32 %101 = select i1 %99, i32 %97, i32 %100 %102 = load i8, ptr %.017.i.i, align 1 %103 = sext i8 %102 to i32 @@ -4391,7 +4391,7 @@ sub_1.i: ; preds = %sub_0.i %110 = sext i8 %109 to i32 %111 = add nsw i32 %110, -91 %112 = icmp ult i32 %111, -26 - %113 = or i32 %110, 32 + %113 = or disjoint i32 %110, 32 %114 = select i1 %112, i32 %110, i32 %113 %115 = load i8, ptr %107, align 1 %116 = sext i8 %115 to i32 @@ -4449,7 +4449,7 @@ name_match_p.exit.thread.i: ; preds = %126, %._crit_edge.i %133 = sext i8 %132 to i32 %134 = add nsw i32 %133, -91 %135 = icmp ult i32 %134, -26 - %136 = or i32 %133, 32 + %136 = or disjoint i32 %133, 32 %137 = select i1 %135, i32 %133, i32 %136 %138 = load i8, ptr %.017.i43.i, align 1 %139 = sext i8 %138 to i32 @@ -4471,7 +4471,7 @@ name_match_p.exit.thread.i: ; preds = %126, %._crit_edge.i %146 = sext i8 %145 to i32 %147 = add nsw i32 %146, -91 %148 = icmp ult i32 %147, -26 - %149 = or i32 %146, 32 + %149 = or disjoint i32 %146, 32 %150 = select i1 %148, i32 %146, i32 %149 %151 = load i8, ptr %143, align 1 %152 = sext i8 %151 to i32 @@ -4529,7 +4529,7 @@ name_match_p.exit.thread.i: ; preds = %126, %._crit_edge.i %170 = sext i8 %169 to i32 %171 = add nsw i32 %170, -91 %172 = icmp ult i32 %171, -26 - %173 = or i32 %170, 32 + %173 = or disjoint i32 %170, 32 %174 = select i1 %172, i32 %170, i32 %173 %175 = load i8, ptr %.017.i62.i, align 1 %176 = sext i8 %175 to i32 @@ -4551,7 +4551,7 @@ name_match_p.exit.thread.i: ; preds = %126, %._crit_edge.i %183 = sext i8 %182 to i32 %184 = add nsw i32 %183, -91 %185 = icmp ult i32 %184, -26 - %186 = or i32 %183, 32 + %186 = or disjoint i32 %183, 32 %187 = select i1 %185, i32 %183, i32 %186 %188 = load i8, ptr %180, align 1 %189 = sext i8 %188 to i32 @@ -6318,7 +6318,7 @@ define internal fastcc range(i32 0, 2) i32 @name_match_p(ptr nocapture noundef r %6 = sext i8 %5 to i32 %7 = add nsw i32 %6, -91 %8 = icmp ult i32 %7, -26 - %9 = or i32 %6, 32 + %9 = or disjoint i32 %6, 32 %10 = select i1 %8, i32 %6, i32 %9 %11 = load i8, ptr %.017, align 1 %12 = sext i8 %11 to i32 @@ -6340,7 +6340,7 @@ define internal fastcc range(i32 0, 2) i32 @name_match_p(ptr nocapture noundef r %19 = sext i8 %18 to i32 %20 = add nsw i32 %19, -91 %21 = icmp ult i32 %20, -26 - %22 = or i32 %19, 32 + %22 = or disjoint i32 %19, 32 %23 = select i1 %21, i32 %19, i32 %22 %24 = load i8, ptr %16, align 1 %25 = sext i8 %24 to i32 @@ -6424,7 +6424,7 @@ define internal void @debug_option(ptr noundef %0, i32 noundef %1, ptr nocapture %8 = sext i8 %7 to i32 %9 = add nsw i32 %8, -91 %10 = icmp ult i32 %9, -26 - %11 = or i32 %8, 32 + %11 = or disjoint i32 %8, 32 %12 = select i1 %10, i32 %8, i32 %11 %13 = load i8, ptr %.017.i, align 1 %14 = sext i8 %13 to i32 @@ -6446,7 +6446,7 @@ define internal void @debug_option(ptr noundef %0, i32 noundef %1, ptr nocapture %21 = sext i8 %20 to i32 %22 = add nsw i32 %21, -91 %23 = icmp ult i32 %22, -26 - %24 = or i32 %21, 32 + %24 = or disjoint i32 %21, 32 %25 = select i1 %23, i32 %21, i32 %24 %26 = load i8, ptr %18, align 1 %27 = sext i8 %26 to i32 @@ -6568,7 +6568,7 @@ memtermspn.exit: ; preds = %3 %17 = sext i8 %16 to i32 %18 = add nsw i32 %17, -91 %19 = icmp ult i32 %18, -26 - %20 = or i32 %17, 32 + %20 = or disjoint i32 %17, 32 %21 = select i1 %19, i32 %17, i32 %20 %22 = load i8, ptr %.017.i, align 1 %23 = sext i8 %22 to i32 @@ -6590,7 +6590,7 @@ memtermspn.exit: ; preds = %3 %30 = sext i8 %29 to i32 %31 = add nsw i32 %30, -91 %32 = icmp ult i32 %31, -26 - %33 = or i32 %30, 32 + %33 = or disjoint i32 %30, 32 %34 = select i1 %32, i32 %30, i32 %33 %35 = load i8, ptr %27, align 1 %36 = sext i8 %35 to i32 @@ -6661,7 +6661,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %60 = sext i8 %59 to i32 %61 = add nsw i32 %60, -91 %62 = icmp ult i32 %61, -26 - %63 = or i32 %60, 32 + %63 = or disjoint i32 %60, 32 %64 = select i1 %62, i32 %60, i32 %63 %65 = load i8, ptr %.017.i94, align 1 %66 = sext i8 %65 to i32 @@ -6683,7 +6683,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %73 = sext i8 %72 to i32 %74 = add nsw i32 %73, -91 %75 = icmp ult i32 %74, -26 - %76 = or i32 %73, 32 + %76 = or disjoint i32 %73, 32 %77 = select i1 %75, i32 %73, i32 %76 %78 = load i8, ptr %70, align 1 %79 = sext i8 %78 to i32 @@ -6749,7 +6749,7 @@ name_match_p.exit111: ; preds = %90, %.lr.ph.i106 %101 = sext i8 %100 to i32 %102 = add nsw i32 %101, -91 %103 = icmp ult i32 %102, -26 - %104 = or i32 %101, 32 + %104 = or disjoint i32 %101, 32 %105 = select i1 %103, i32 %101, i32 %104 %106 = load i8, ptr %.017.i113, align 1 %107 = sext i8 %106 to i32 @@ -6771,7 +6771,7 @@ name_match_p.exit111: ; preds = %90, %.lr.ph.i106 %114 = sext i8 %113 to i32 %115 = add nsw i32 %114, -91 %116 = icmp ult i32 %115, -26 - %117 = or i32 %114, 32 + %117 = or disjoint i32 %114, 32 %118 = select i1 %116, i32 %114, i32 %117 %119 = load i8, ptr %111, align 1 %120 = sext i8 %119 to i32 @@ -6837,7 +6837,7 @@ name_match_p.exit130: ; preds = %131, %.lr.ph.i125 %142 = sext i8 %141 to i32 %143 = add nsw i32 %142, -91 %144 = icmp ult i32 %143, -26 - %145 = or i32 %142, 32 + %145 = or disjoint i32 %142, 32 %146 = select i1 %144, i32 %142, i32 %145 %147 = load i8, ptr %.017.i132, align 1 %148 = sext i8 %147 to i32 @@ -6859,7 +6859,7 @@ name_match_p.exit130: ; preds = %131, %.lr.ph.i125 %155 = sext i8 %154 to i32 %156 = add nsw i32 %155, -91 %157 = icmp ult i32 %156, -26 - %158 = or i32 %155, 32 + %158 = or disjoint i32 %155, 32 %159 = select i1 %157, i32 %155, i32 %158 %160 = load i8, ptr %152, align 1 %161 = sext i8 %160 to i32 @@ -6930,7 +6930,7 @@ name_match_p.exit149: ; preds = %172, %.lr.ph.i144 %184 = sext i8 %183 to i32 %185 = add nsw i32 %184, -91 %186 = icmp ult i32 %185, -26 - %187 = or i32 %184, 32 + %187 = or disjoint i32 %184, 32 %188 = select i1 %186, i32 %184, i32 %187 %189 = load i8, ptr %.017.i151, align 1 %190 = sext i8 %189 to i32 @@ -6952,7 +6952,7 @@ name_match_p.exit149: ; preds = %172, %.lr.ph.i144 %197 = sext i8 %196 to i32 %198 = add nsw i32 %197, -91 %199 = icmp ult i32 %198, -26 - %200 = or i32 %197, 32 + %200 = or disjoint i32 %197, 32 %201 = select i1 %199, i32 %197, i32 %200 %202 = load i8, ptr %194, align 1 %203 = sext i8 %202 to i32 @@ -7022,7 +7022,7 @@ name_match_p.exit168.thread: ; preds = %._crit_edge.i154, % %226 = sext i8 %225 to i32 %227 = add nsw i32 %226, -91 %228 = icmp ult i32 %227, -26 - %229 = or i32 %226, 32 + %229 = or disjoint i32 %226, 32 %230 = select i1 %228, i32 %226, i32 %229 %231 = load i8, ptr %.017.i170, align 1 %232 = sext i8 %231 to i32 @@ -7044,7 +7044,7 @@ name_match_p.exit168.thread: ; preds = %._crit_edge.i154, % %239 = sext i8 %238 to i32 %240 = add nsw i32 %239, -91 %241 = icmp ult i32 %240, -26 - %242 = or i32 %239, 32 + %242 = or disjoint i32 %239, 32 %243 = select i1 %241, i32 %239, i32 %242 %244 = load i8, ptr %236, align 1 %245 = sext i8 %244 to i32 @@ -7113,7 +7113,7 @@ name_match_p.exit187.thread: ; preds = %._crit_edge.i173, % %267 = sext i8 %266 to i32 %268 = add nsw i32 %267, -91 %269 = icmp ult i32 %268, -26 - %270 = or i32 %267, 32 + %270 = or disjoint i32 %267, 32 %271 = select i1 %269, i32 %267, i32 %270 %272 = load i8, ptr %.017.i189, align 1 %273 = sext i8 %272 to i32 @@ -7135,7 +7135,7 @@ name_match_p.exit187.thread: ; preds = %._crit_edge.i173, % %280 = sext i8 %279 to i32 %281 = add nsw i32 %280, -91 %282 = icmp ult i32 %281, -26 - %283 = or i32 %280, 32 + %283 = or disjoint i32 %280, 32 %284 = select i1 %282, i32 %280, i32 %283 %285 = load i8, ptr %277, align 1 %286 = sext i8 %285 to i32 @@ -7205,7 +7205,7 @@ name_match_p.exit206.thread: ; preds = %._crit_edge.i192, % %309 = sext i8 %308 to i32 %310 = add nsw i32 %309, -91 %311 = icmp ult i32 %310, -26 - %312 = or i32 %309, 32 + %312 = or disjoint i32 %309, 32 %313 = select i1 %311, i32 %309, i32 %312 %314 = load i8, ptr %.017.i208, align 1 %315 = sext i8 %314 to i32 @@ -7227,7 +7227,7 @@ name_match_p.exit206.thread: ; preds = %._crit_edge.i192, % %322 = sext i8 %321 to i32 %323 = add nsw i32 %322, -91 %324 = icmp ult i32 %323, -26 - %325 = or i32 %322, 32 + %325 = or disjoint i32 %322, 32 %326 = select i1 %324, i32 %322, i32 %325 %327 = load i8, ptr %319, align 1 %328 = sext i8 %327 to i32 @@ -7296,7 +7296,7 @@ name_match_p.exit225.thread: ; preds = %._crit_edge.i211, % %350 = sext i8 %349 to i32 %351 = add nsw i32 %350, -91 %352 = icmp ult i32 %351, -26 - %353 = or i32 %350, 32 + %353 = or disjoint i32 %350, 32 %354 = select i1 %352, i32 %350, i32 %353 %355 = load i8, ptr %.017.i227, align 1 %356 = sext i8 %355 to i32 @@ -7318,7 +7318,7 @@ name_match_p.exit225.thread: ; preds = %._crit_edge.i211, % %363 = sext i8 %362 to i32 %364 = add nsw i32 %363, -91 %365 = icmp ult i32 %364, -26 - %366 = or i32 %363, 32 + %366 = or disjoint i32 %363, 32 %367 = select i1 %365, i32 %363, i32 %366 %368 = load i8, ptr %360, align 1 %369 = sext i8 %368 to i32 @@ -7388,7 +7388,7 @@ name_match_p.exit244.thread: ; preds = %._crit_edge.i230, % %392 = sext i8 %391 to i32 %393 = add nsw i32 %392, -91 %394 = icmp ult i32 %393, -26 - %395 = or i32 %392, 32 + %395 = or disjoint i32 %392, 32 %396 = select i1 %394, i32 %392, i32 %395 %397 = load i8, ptr %.017.i246, align 1 %398 = sext i8 %397 to i32 @@ -7410,7 +7410,7 @@ name_match_p.exit244.thread: ; preds = %._crit_edge.i230, % %405 = sext i8 %404 to i32 %406 = add nsw i32 %405, -91 %407 = icmp ult i32 %406, -26 - %408 = or i32 %405, 32 + %408 = or disjoint i32 %405, 32 %409 = select i1 %407, i32 %405, i32 %408 %410 = load i8, ptr %402, align 1 %411 = sext i8 %410 to i32 @@ -7497,7 +7497,7 @@ define internal fastcc void @feature_option(ptr noundef %0, i32 noundef %1, ptr %10 = sext i8 %9 to i32 %11 = add nsw i32 %10, -91 %12 = icmp ult i32 %11, -26 - %13 = or i32 %10, 32 + %13 = or disjoint i32 %10, 32 %14 = select i1 %12, i32 %10, i32 %13 %15 = load i8, ptr %.017.i, align 1 %16 = sext i8 %15 to i32 @@ -7519,7 +7519,7 @@ define internal fastcc void @feature_option(ptr noundef %0, i32 noundef %1, ptr %23 = sext i8 %22 to i32 %24 = add nsw i32 %23, -91 %25 = icmp ult i32 %24, -26 - %26 = or i32 %23, 32 + %26 = or disjoint i32 %23, 32 %27 = select i1 %25, i32 %23, i32 %26 %28 = load i8, ptr %20, align 1 %29 = sext i8 %28 to i32 @@ -7581,7 +7581,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %47 = sext i8 %46 to i32 %48 = add nsw i32 %47, -91 %49 = icmp ult i32 %48, -26 - %50 = or i32 %47, 32 + %50 = or disjoint i32 %47, 32 %51 = select i1 %49, i32 %47, i32 %50 %52 = load i8, ptr %.017.i61, align 1 %53 = sext i8 %52 to i32 @@ -7603,7 +7603,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %60 = sext i8 %59 to i32 %61 = add nsw i32 %60, -91 %62 = icmp ult i32 %61, -26 - %63 = or i32 %60, 32 + %63 = or disjoint i32 %60, 32 %64 = select i1 %62, i32 %60, i32 %63 %65 = load i8, ptr %57, align 1 %66 = sext i8 %65 to i32 @@ -7660,7 +7660,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %83 = sext i8 %82 to i32 %84 = add nsw i32 %83, -91 %85 = icmp ult i32 %84, -26 - %86 = or i32 %83, 32 + %86 = or disjoint i32 %83, 32 %87 = select i1 %85, i32 %83, i32 %86 %88 = load i8, ptr %.017.i80, align 1 %89 = sext i8 %88 to i32 @@ -7682,7 +7682,7 @@ name_match_p.exit.thread.thread: ; preds = %name_match_p.exit.t %96 = sext i8 %95 to i32 %97 = add nsw i32 %96, -91 %98 = icmp ult i32 %97, -26 - %99 = or i32 %96, 32 + %99 = or disjoint i32 %96, 32 %100 = select i1 %98, i32 %96, i32 %99 %101 = load i8, ptr %93, align 1 %102 = sext i8 %101 to i32 @@ -7739,7 +7739,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %118 = sext i8 %117 to i32 %119 = add nsw i32 %118, -91 %120 = icmp ult i32 %119, -26 - %121 = or i32 %118, 32 + %121 = or disjoint i32 %118, 32 %122 = select i1 %120, i32 %118, i32 %121 %123 = load i8, ptr %.017.i99, align 1 %124 = sext i8 %123 to i32 @@ -7761,7 +7761,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %131 = sext i8 %130 to i32 %132 = add nsw i32 %131, -91 %133 = icmp ult i32 %132, -26 - %134 = or i32 %131, 32 + %134 = or disjoint i32 %131, 32 %135 = select i1 %133, i32 %131, i32 %134 %136 = load i8, ptr %128, align 1 %137 = sext i8 %136 to i32 @@ -7818,7 +7818,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %154 = sext i8 %153 to i32 %155 = add nsw i32 %154, -91 %156 = icmp ult i32 %155, -26 - %157 = or i32 %154, 32 + %157 = or disjoint i32 %154, 32 %158 = select i1 %156, i32 %154, i32 %157 %159 = load i8, ptr %.017.i118, align 1 %160 = sext i8 %159 to i32 @@ -7840,7 +7840,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %167 = sext i8 %166 to i32 %168 = add nsw i32 %167, -91 %169 = icmp ult i32 %168, -26 - %170 = or i32 %167, 32 + %170 = or disjoint i32 %167, 32 %171 = select i1 %169, i32 %167, i32 %170 %172 = load i8, ptr %164, align 1 %173 = sext i8 %172 to i32 @@ -7902,7 +7902,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %191 = sext i8 %190 to i32 %192 = add nsw i32 %191, -91 %193 = icmp ult i32 %192, -26 - %194 = or i32 %191, 32 + %194 = or disjoint i32 %191, 32 %195 = select i1 %193, i32 %191, i32 %194 %196 = load i8, ptr %.017.i137, align 1 %197 = sext i8 %196 to i32 @@ -7924,7 +7924,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %204 = sext i8 %203 to i32 %205 = add nsw i32 %204, -91 %206 = icmp ult i32 %205, -26 - %207 = or i32 %204, 32 + %207 = or disjoint i32 %204, 32 %208 = select i1 %206, i32 %204, i32 %207 %209 = load i8, ptr %201, align 1 %210 = sext i8 %209 to i32 @@ -7980,7 +7980,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %226 = sext i8 %225 to i32 %227 = add nsw i32 %226, -91 %228 = icmp ult i32 %227, -26 - %229 = or i32 %226, 32 + %229 = or disjoint i32 %226, 32 %230 = select i1 %228, i32 %226, i32 %229 %231 = load i8, ptr %.017.i156, align 1 %232 = sext i8 %231 to i32 @@ -8002,7 +8002,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %239 = sext i8 %238 to i32 %240 = add nsw i32 %239, -91 %241 = icmp ult i32 %240, -26 - %242 = or i32 %239, 32 + %242 = or disjoint i32 %239, 32 %243 = select i1 %241, i32 %239, i32 %242 %244 = load i8, ptr %236, align 1 %245 = sext i8 %244 to i32 @@ -8067,7 +8067,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %263 = sext i8 %262 to i32 %264 = add nsw i32 %263, -91 %265 = icmp ult i32 %264, -26 - %266 = or i32 %263, 32 + %266 = or disjoint i32 %263, 32 %267 = select i1 %265, i32 %263, i32 %266 %268 = load i8, ptr %.017.i175, align 1 %269 = sext i8 %268 to i32 @@ -8089,7 +8089,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %276 = sext i8 %275 to i32 %277 = add nsw i32 %276, -91 %278 = icmp ult i32 %277, -26 - %279 = or i32 %276, 32 + %279 = or disjoint i32 %276, 32 %280 = select i1 %278, i32 %276, i32 %279 %281 = load i8, ptr %273, align 1 %282 = sext i8 %281 to i32 @@ -8145,7 +8145,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %298 = sext i8 %297 to i32 %299 = add nsw i32 %298, -91 %300 = icmp ult i32 %299, -26 - %301 = or i32 %298, 32 + %301 = or disjoint i32 %298, 32 %302 = select i1 %300, i32 %298, i32 %301 %303 = load i8, ptr %.017.i194, align 1 %304 = sext i8 %303 to i32 @@ -8167,7 +8167,7 @@ name_match_p.exit97.thread: ; preds = %._crit_edge.i83, %1 %311 = sext i8 %310 to i32 %312 = add nsw i32 %311, -91 %313 = icmp ult i32 %312, -26 - %314 = or i32 %311, 32 + %314 = or disjoint i32 %311, 32 %315 = select i1 %313, i32 %311, i32 %314 %316 = load i8, ptr %308, align 1 %317 = sext i8 %316 to i32 @@ -8288,7 +8288,7 @@ memtermspn.exit: ; preds = %10, %12 %27 = sext i8 %26 to i32 %28 = add nsw i32 %27, -91 %29 = icmp ult i32 %28, -26 - %30 = or i32 %27, 32 + %30 = or disjoint i32 %27, 32 %31 = select i1 %29, i32 %27, i32 %30 %32 = load i8, ptr %.017.i, align 1 %33 = sext i8 %32 to i32 @@ -8310,7 +8310,7 @@ memtermspn.exit: ; preds = %10, %12 %40 = sext i8 %39 to i32 %41 = add nsw i32 %40, -91 %42 = icmp ult i32 %41, -26 - %43 = or i32 %40, 32 + %43 = or disjoint i32 %40, 32 %44 = select i1 %42, i32 %40, i32 %43 %45 = load i8, ptr %37, align 1 %46 = sext i8 %45 to i32 diff --git a/bench/rust-analyzer-rs/optimized/1cf75p1eybr0uy0c.ll b/bench/rust-analyzer-rs/optimized/1cf75p1eybr0uy0c.ll index a6f2c047f8b..37e2453d21e 100644 --- a/bench/rust-analyzer-rs/optimized/1cf75p1eybr0uy0c.ll +++ b/bench/rust-analyzer-rs/optimized/1cf75p1eybr0uy0c.ll @@ -12750,10 +12750,10 @@ define hidden { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17hb3a523cd %45 = phi i32 [ %43, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i" ], [ %23, %22 ], [ %32, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i.i.i" ], [ %20, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i.i.i" ] %46 = add nsw i32 %45, -65 %.0.i.i.i.i.i = icmp ult i32 %46, 26 - %47 = xor i32 %45, 32 + %47 = or disjoint i32 %45, 32 %.07.i.i.i.i.i = select i1 %.0.i.i.i.i.i, i32 %47, i32 %45 %48 = icmp eq ptr %.sroa.06.0, %3 - br i1 %48, label %.loopexit, label %49 + br i1 %48, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit", label %49 49: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i" %50 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 1 @@ -12806,17 +12806,17 @@ define hidden { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17hb3a523cd %83 = or disjoint i32 %80, %82 %84 = or disjoint i32 %83, %79 %85 = icmp eq i32 %84, 1114112 - br i1 %85, label %.loopexit, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" + br i1 %85, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i.i.i.i.i.i.i", %63, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i.i.i.i.i.i.i" %.sroa.06.1 = phi ptr [ %50, %63 ], [ %76, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ %66, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i.i.i.i.i.i.i" ], [ %56, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i.i.i.i.i.i.i" ] %86 = phi i32 [ %64, %63 ], [ %84, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ %73, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i.i.i.i.i.i.i" ], [ %61, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i.i.i.i.i.i.i" ] %87 = add nsw i32 %86, -65 %.0.i.i.i.i.i.i.i.i.i = icmp ult i32 %87, 26 - %88 = xor i32 %86, 32 + %88 = or disjoint i32 %86, 32 %.07.i.i.i.i.i.i.i.i.i = select i1 %.0.i.i.i.i.i.i.i.i.i, i32 %88, i32 %86 %89 = icmp eq i32 %.07.i.i.i.i.i.i.i.i.i, 1114112 - br i1 %89, label %.loopexit, label %90 + br i1 %89, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit", label %90 90: ; preds = %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" %91 = icmp eq i32 %.07.i.i.i.i.i, %.07.i.i.i.i.i.i.i.i.i @@ -12824,7 +12824,7 @@ define hidden { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17hb3a523cd "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i": ; preds = %90 %.0.i.i.i7.i.i.i.le.i.i.i = tail call noundef range(i8 -1, 2) i8 @llvm.ucmp.i8.i32(i32 %.07.i.i.i.i.i, i32 %.07.i.i.i.i.i.i.i.i.i) - br label %.loopexit + br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" 92: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcdd9293affd9e335E.exit.i.i.i" %93 = icmp ne ptr %3, null @@ -12835,74 +12835,55 @@ define hidden { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17hb3a523cd 95: ; preds = %92 %96 = load i8, ptr %.sroa.06.0, align 1, !noalias !5311, !noundef !4 %97 = icmp sgt i8 %96, -1 - br i1 %97, label %108, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" + br i1 %97, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i": ; preds = %95 %98 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 1 - %99 = and i8 %96, 31 - %100 = zext nneg i8 %99 to i32 - %101 = icmp ne ptr %98, %3 - tail call void @llvm.assume(i1 %101) - %102 = load i8, ptr %98, align 1, !noalias !5311, !noundef !4 - %103 = shl nuw nsw i32 %100, 6 - %104 = and i8 %102, 63 - %105 = zext nneg i8 %104 to i32 - %106 = or disjoint i32 %103, %105 - %107 = icmp ugt i8 %96, -33 - br i1 %107, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" - -108: ; preds = %95 - %109 = zext nneg i8 %96 to i32 - br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" + %99 = zext i8 %96 to i32 + %100 = icmp ne ptr %98, %3 + tail call void @llvm.assume(i1 %100) + %101 = load i8, ptr %98, align 1, !noalias !5311, !noundef !4 + %102 = and i8 %101, 63 + %103 = zext nneg i8 %102 to i32 + %104 = icmp ugt i8 %96, -33 + br i1 %104, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" - %110 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 2 - %111 = icmp ne ptr %110, %3 - tail call void @llvm.assume(i1 %111) - %112 = load i8, ptr %110, align 1, !noalias !5311, !noundef !4 - %113 = shl nuw nsw i32 %105, 6 - %114 = and i8 %112, 63 - %115 = zext nneg i8 %114 to i32 - %116 = or disjoint i32 %113, %115 - %117 = shl nuw nsw i32 %100, 12 - %118 = or disjoint i32 %116, %117 - %119 = icmp ugt i8 %96, -17 - br i1 %119, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" + %105 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 2 + %106 = icmp ne ptr %105, %3 + tail call void @llvm.assume(i1 %106) + %107 = icmp ugt i8 %96, -17 + br i1 %107, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i" - %120 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 3 - %121 = icmp ne ptr %120, %3 - tail call void @llvm.assume(i1 %121) - %122 = load i8, ptr %120, align 1, !noalias !5311, !noundef !4 - %123 = shl nuw nsw i32 %100, 18 - %124 = and i32 %123, 1835008 - %125 = shl nuw nsw i32 %116, 6 - %126 = and i8 %122, 63 - %127 = zext nneg i8 %126 to i32 - %128 = or disjoint i32 %125, %127 - %129 = or disjoint i32 %128, %124 - %130 = icmp eq i32 %129, 1114112 - br i1 %130, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" - -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i", %108, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" - %131 = phi i32 [ %129, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %109, %108 ], [ %118, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i" ], [ %106, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" ] - %132 = add nsw i32 %131, -65 - %.0.i.i.i = icmp ult i32 %132, 26 - %133 = xor i32 %131, 32 - %.07.i.i.i = select i1 %.0.i.i.i, i32 %133, i32 %131 - %.07.i.i.i.fr = freeze i32 %.07.i.i.i - %134 = icmp eq i32 %.07.i.i.i.fr, 1114112 - br i1 %134, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread", label %.loopexit - -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread": ; preds = %92, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" - br label %.loopexit + %108 = load i8, ptr %105, align 1, !noalias !5311, !noundef !4 + %109 = and i8 %108, 63 + %110 = zext nneg i8 %109 to i32 + %111 = getelementptr inbounds i8, ptr %.sroa.06.0, i64 3 + %112 = icmp ne ptr %111, %3 + tail call void @llvm.assume(i1 %112) + %113 = load i8, ptr %111, align 1, !noalias !5311, !noundef !4 + %114 = shl nuw nsw i32 %99, 18 + %115 = and i32 %114, 1835008 + %116 = shl nuw nsw i32 %103, 12 + %117 = shl nuw nsw i32 %110, 6 + %118 = or disjoint i32 %117, %116 + %119 = and i8 %113, 63 + %120 = zext nneg i8 %119 to i32 + %121 = or disjoint i32 %118, %120 + %122 = or disjoint i32 %121, %115 + %123 = icmp eq i32 %122, 1114112 + br i1 %123, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread", label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" + +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread": ; preds = %92, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" + br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" -.loopexit: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" - %.sroa.3.0 = phi i8 [ 0, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread" ], [ -1, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" ], [ %.0.i.i.i7.i.i.i.le.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i" ], [ 1, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" ], [ 1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ 1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i" ] - %.sroa.0.0 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread" ], [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit" ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i" ], [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i" ] - %135 = insertvalue { i1, i8 } poison, i1 %.sroa.0.0, 0 - %136 = insertvalue { i1, i8 } %135, i8 %.sroa.3.0, 1 - ret { i1, i8 } %136 +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i", %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i", %95, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread" + %.sroa.3.0 = phi i8 [ 0, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread" ], [ -1, %95 ], [ -1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" ], [ -1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i" ], [ -1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %.0.i.i.i7.i.i.i.le.i.i.i, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i" ], [ 1, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" ], [ 1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ 1, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i" ] + %.sroa.0.0 = phi i1 [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.thread" ], [ false, %95 ], [ false, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit13.i.i.i" ], [ false, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h77f95ffa0e4a6a85E.exit15.i.i.i" ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ true, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread8.split.loop.exit20.i.i.i" ], [ false, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf00c2ab7df39b54eE.exit.i.i.i.i.i.i" ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i.i.i.i.i.i.i" ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i.i.i" ] + %124 = insertvalue { i1, i8 } poison, i1 %.sroa.0.0, 0 + %125 = insertvalue { i1, i8 } %124, i8 %.sroa.3.0, 1 + ret { i1, i8 } %125 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/stb/optimized/stb_image.c.ll b/bench/stb/optimized/stb_image.c.ll index 4939eae31c5..717702ee773 100644 --- a/bench/stb/optimized/stb_image.c.ll +++ b/bench/stb/optimized/stb_image.c.ll @@ -4766,7 +4766,7 @@ for.inc241.us: ; preds = %for.body229.us for.body229.us: ; preds = %for.body229.lr.ph.us, %for.body229.us %indvars.iv308 = phi i64 [ 0, %for.body229.lr.ph.us ], [ %indvars.iv.next309, %for.body229.us ] - %19 = add nuw nsw i64 %indvars.iv308, %63 + %19 = add nuw nsw i64 %indvars.iv308, %61 %20 = mul nsw i64 %19, %17 %add.ptr234.us = getelementptr inbounds float, ptr %call74, i64 %20 %21 = shl nsw i64 %indvars.iv308, 2 @@ -4915,7 +4915,7 @@ stbi__get8.exit178.us.us: ; preds = %if.then.i176.us.us, store i8 %retval.0.i173.us.us, ptr %arrayidx217.us.us, align 1 %inc219.us.us = add nuw nsw i32 %z.1219.us.us, 1 %exitcond297.not = icmp eq i32 %inc219.us.us, %conv163.us.us - br i1 %exitcond297.not, label %if.end221.us.us.loopexit243, label %for.body211.us.us, !llvm.loop !32 + br i1 %exitcond297.not, label %if.end221.us.us, label %for.body211.us.us, !llvm.loop !32 if.then166.us.us: ; preds = %stbi__get8.exit.us.us %cmp.i115.us.us = icmp ult ptr %34, %33 @@ -4969,43 +4969,32 @@ if.then.i143.us.us: ; preds = %if.then166.us.us stbi__get8.exit145.us.us: ; preds = %if.then.i143.us.us, %stbi__refill_buffer.exit.i137.us.us, %if.end.i116.us.us %retval.0.i140.us.us = phi i8 [ %57, %if.then.i143.us.us ], [ %56, %stbi__refill_buffer.exit.i137.us.us ], [ 0, %if.end.i116.us.us ] - %sub169.us.us = and i8 %retval.0.i111.us.us, 127 + %sub169.us.us = xor i8 %retval.0.i111.us.us, -128 %conv171.us.us = zext nneg i8 %sub169.us.us to i32 %cmp176.us.us = icmp ult i32 %sub226.us.us, %conv171.us.us - br i1 %cmp176.us.us, label %if.then178, label %for.cond183.preheader.us.us + br i1 %cmp176.us.us, label %if.then178, label %for.body187.us.us.preheader -if.end221.us.us.loopexit: ; preds = %for.body187.us.us - %58 = trunc nsw i64 %indvars.iv.next299 to i32 - br label %if.end221.us.us - -if.end221.us.us.loopexit243: ; preds = %stbi__get8.exit178.us.us - %59 = trunc nsw i64 %indvars.iv.next293 to i32 - br label %if.end221.us.us - -if.end221.us.us: ; preds = %if.end221.us.us.loopexit243, %if.end221.us.us.loopexit, %for.cond183.preheader.us.us - %i.4.us.us = phi i32 [ %i.2225.us.us, %for.cond183.preheader.us.us ], [ %58, %if.end221.us.us.loopexit ], [ %59, %if.end221.us.us.loopexit243 ] +if.end221.us.us: ; preds = %stbi__get8.exit178.us.us, %for.body187.us.us + %i.4.us.us.in = phi i64 [ %indvars.iv.next299, %for.body187.us.us ], [ %indvars.iv.next293, %stbi__get8.exit178.us.us ] + %i.4.us.us = trunc i64 %i.4.us.us.in to i32 %sub.us.us = sub nsw i32 %conv45, %i.4.us.us %cmp159.us.us = icmp sgt i32 %sub.us.us, 0 br i1 %cmp159.us.us, label %while.body161.us.us, label %while.cond158.for.inc223_crit_edge.us.us, !llvm.loop !33 for.body187.us.us: ; preds = %for.body187.us.us.preheader, %for.body187.us.us - %indvars.iv298 = phi i64 [ %62, %for.body187.us.us.preheader ], [ %indvars.iv.next299, %for.body187.us.us ] + %indvars.iv298 = phi i64 [ %60, %for.body187.us.us.preheader ], [ %indvars.iv.next299, %for.body187.us.us ] %z.0222.us.us = phi i32 [ 0, %for.body187.us.us.preheader ], [ %inc192.us.us, %for.body187.us.us ] %indvars.iv.next299 = add nsw i64 %indvars.iv298, 1 - %60 = shl nsw i64 %indvars.iv298, 2 - %61 = add nuw nsw i64 %60, %indvars.iv304 - %arrayidx190.us.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %61 + %58 = shl nsw i64 %indvars.iv298, 2 + %59 = add nuw nsw i64 %58, %indvars.iv304 + %arrayidx190.us.us = getelementptr inbounds i8, ptr %scanline.1.us, i64 %59 store i8 %retval.0.i140.us.us, ptr %arrayidx190.us.us, align 1 %inc192.us.us = add nuw nsw i32 %z.0222.us.us, 1 %exitcond303.not = icmp eq i32 %inc192.us.us, %conv171.us.us - br i1 %exitcond303.not, label %if.end221.us.us.loopexit, label %for.body187.us.us, !llvm.loop !34 - -for.cond183.preheader.us.us: ; preds = %stbi__get8.exit145.us.us - %cmp185220.us.us.not = icmp eq i8 %sub169.us.us, 0 - br i1 %cmp185220.us.us.not, label %if.end221.us.us, label %for.body187.us.us.preheader + br i1 %exitcond303.not, label %if.end221.us.us, label %for.body187.us.us, !llvm.loop !34 -for.body187.us.us.preheader: ; preds = %for.cond183.preheader.us.us - %62 = sext i32 %i.2225.us.us to i64 +for.body187.us.us.preheader: ; preds = %stbi__get8.exit145.us.us + %60 = sext i32 %i.2225.us.us to i64 br label %for.body187.us.us while.cond158.for.inc223_crit_edge.us.us: ; preds = %if.end221.us.us @@ -5014,7 +5003,7 @@ while.cond158.for.inc223_crit_edge.us.us: ; preds = %if.end221.us.us br i1 %exitcond307.not, label %for.body229.lr.ph.us, label %while.cond158.preheader.us.us, !llvm.loop !35 for.body229.lr.ph.us: ; preds = %while.cond158.for.inc223_crit_edge.us.us - %63 = mul nuw nsw i64 %indvars.iv316, %18 + %61 = mul nuw nsw i64 %indvars.iv316, %18 br label %for.body229.us for.cond86: ; preds = %if.end80, %for.inc102 @@ -5032,8 +5021,8 @@ main_decode_loop: ; preds = %for.cond89, %if.the %i.1 = phi i32 [ %i.0, %for.cond89 ], [ 1, %if.then122 ] %j.2 = phi i32 [ %j.1, %for.cond89 ], [ 0, %if.then122 ] %io.i = getelementptr inbounds i8, ptr %s, i64 16 - %64 = load ptr, ptr %io.i, align 8 - %tobool.not.i = icmp eq ptr %64, null + %62 = load ptr, ptr %io.i, align 8 + %tobool.not.i = icmp eq ptr %62, null br i1 %tobool.not.i, label %entry.if.end12_crit_edge.i, label %if.then.i entry.if.end12_crit_edge.i: ; preds = %main_decode_loop @@ -5045,11 +5034,11 @@ entry.if.end12_crit_edge.i: ; preds = %main_decode_loop if.then.i: ; preds = %main_decode_loop %img_buffer_end.i = getelementptr inbounds i8, ptr %s, i64 200 - %65 = load ptr, ptr %img_buffer_end.i, align 8 + %63 = load ptr, ptr %img_buffer_end.i, align 8 %img_buffer.i = getelementptr inbounds i8, ptr %s, i64 192 - %66 = load ptr, ptr %img_buffer.i, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %65 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %66 to i64 + %64 = load ptr, ptr %img_buffer.i, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %63 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %64 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %conv.i = trunc i64 %sub.ptr.sub.i to i32 %cmp.i = icmp slt i32 %conv.i, 4 @@ -5058,27 +5047,27 @@ if.then.i: ; preds = %main_decode_loop if.then2.i: ; preds = %if.then.i %sext.i = shl i64 %sub.ptr.sub.i, 32 %conv4.i = ashr exact i64 %sext.i, 32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %rgbe, ptr align 1 %66, i64 %conv4.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %rgbe, ptr align 1 %64, i64 %conv4.i, i1 false) %io_user_data.i = getelementptr inbounds i8, ptr %s, i64 40 - %67 = load ptr, ptr %io_user_data.i, align 8 + %65 = load ptr, ptr %io_user_data.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %rgbe, i64 %conv4.i %sub.i = sub nsw i32 4, %conv.i - %call.i = call i32 %64(ptr noundef %67, ptr noundef nonnull %add.ptr.i, i32 noundef %sub.i) #37 - %68 = load ptr, ptr %img_buffer_end.i, align 8 - store ptr %68, ptr %img_buffer.i, align 8 + %call.i = call i32 %62(ptr noundef %65, ptr noundef nonnull %add.ptr.i, i32 noundef %sub.i) #37 + %66 = load ptr, ptr %img_buffer_end.i, align 8 + store ptr %66, ptr %img_buffer.i, align 8 br label %stbi__getn.exit if.end12.i: ; preds = %if.then.i, %entry.if.end12_crit_edge.i - %69 = phi ptr [ %.pre23.i, %entry.if.end12_crit_edge.i ], [ %65, %if.then.i ] - %70 = phi ptr [ %.pre.i, %entry.if.end12_crit_edge.i ], [ %66, %if.then.i ] - %add.ptr15.i = getelementptr inbounds i8, ptr %70, i64 4 - %cmp17.not.i = icmp ugt ptr %add.ptr15.i, %69 + %67 = phi ptr [ %.pre23.i, %entry.if.end12_crit_edge.i ], [ %63, %if.then.i ] + %68 = phi ptr [ %.pre.i, %entry.if.end12_crit_edge.i ], [ %64, %if.then.i ] + %add.ptr15.i = getelementptr inbounds i8, ptr %68, i64 4 + %cmp17.not.i = icmp ugt ptr %add.ptr15.i, %67 br i1 %cmp17.not.i, label %stbi__getn.exit, label %if.then19.i if.then19.i: ; preds = %if.end12.i %img_buffer13.i = getelementptr inbounds i8, ptr %s, i64 192 - %71 = load i32, ptr %70, align 1 - store i32 %71, ptr %rgbe, align 4 + %69 = load i32, ptr %68, align 1 + store i32 %69, ptr %rgbe, align 4 store ptr %add.ptr15.i, ptr %img_buffer13.i, align 8 br label %stbi__getn.exit @@ -5091,28 +5080,28 @@ stbi__getn.exit: ; preds = %if.then2.i, %if.end %idx.ext98 = sext i32 %mul97 to i64 %add.ptr99 = getelementptr inbounds float, ptr %add.ptr96, i64 %idx.ext98 %arrayidx.i = getelementptr inbounds i8, ptr %rgbe, i64 3 - %72 = load i8, ptr %arrayidx.i, align 1 - %cmp.not.i = icmp eq i8 %72, 0 + %70 = load i8, ptr %arrayidx.i, align 1 + %cmp.not.i = icmp eq i8 %70, 0 br i1 %cmp.not.i, label %if.else42.i, label %if.then.i94 if.then.i94: ; preds = %stbi__getn.exit - %conv.i95 = zext i8 %72 to i32 + %conv.i95 = zext i8 %70 to i32 %sub.i96 = add nsw i32 %conv.i95, -136 %call.i97 = call double @ldexp(double noundef 1.000000e+00, i32 noundef %sub.i96) #37 %conv4.i98 = fptrunc double %call.i97 to float %cmp5.i = icmp slt i32 %spec.store.select, 3 - %73 = load i8, ptr %rgbe, align 4 + %71 = load i8, ptr %rgbe, align 4 br i1 %cmp5.i, label %if.then7.i, label %if.else.i if.then7.i: ; preds = %if.then.i94 - %conv9.i99 = zext i8 %73 to i32 + %conv9.i99 = zext i8 %71 to i32 %arrayidx10.i = getelementptr inbounds i8, ptr %rgbe, i64 1 - %74 = load i8, ptr %arrayidx10.i, align 1 - %conv11.i = zext i8 %74 to i32 + %72 = load i8, ptr %arrayidx10.i, align 1 + %conv11.i = zext i8 %72 to i32 %add.i = add nuw nsw i32 %conv11.i, %conv9.i99 %arrayidx12.i = getelementptr inbounds i8, ptr %rgbe, i64 2 - %75 = load i8, ptr %arrayidx12.i, align 2 - %conv13.i = zext i8 %75 to i32 + %73 = load i8, ptr %arrayidx12.i, align 2 + %conv13.i = zext i8 %73 to i32 %add14.i = add nuw nsw i32 %add.i, %conv13.i %conv15.i = uitofp nneg i32 %add14.i to float %mul.i = fmul float %conv4.i98, %conv15.i @@ -5120,17 +5109,17 @@ if.then7.i: ; preds = %if.then.i94 br label %if.end.i if.else.i: ; preds = %if.then.i94 - %conv19.i = uitofp i8 %73 to float + %conv19.i = uitofp i8 %71 to float %mul20.i = fmul float %conv4.i98, %conv19.i %arrayidx22.i = getelementptr inbounds i8, ptr %rgbe, i64 1 - %76 = load i8, ptr %arrayidx22.i, align 1 - %conv24.i = uitofp i8 %76 to float + %74 = load i8, ptr %arrayidx22.i, align 1 + %conv24.i = uitofp i8 %74 to float %mul25.i = fmul float %conv4.i98, %conv24.i %arrayidx26.i = getelementptr inbounds i8, ptr %add.ptr99, i64 4 store float %mul25.i, ptr %arrayidx26.i, align 4 %arrayidx27.i = getelementptr inbounds i8, ptr %rgbe, i64 2 - %77 = load i8, ptr %arrayidx27.i, align 2 - %conv29.i = uitofp i8 %77 to float + %75 = load i8, ptr %arrayidx27.i, align 2 + %conv29.i = uitofp i8 %75 to float %mul30.i = fmul float %conv4.i98, %conv29.i %arrayidx31.i = getelementptr inbounds i8, ptr %add.ptr99, i64 8 store float %mul30.i, ptr %arrayidx31.i, align 4 @@ -5208,28 +5197,28 @@ if.then122: ; preds = %for.body108.us if.then138: ; preds = %if.end133.us call void @free(ptr noundef %call74) #37 call void @free(ptr noundef %scanline.0233.us) #37 - %78 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) - store ptr @.str.109, ptr %78, align 8 + %76 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) + store ptr @.str.109, ptr %76, align 8 br label %return if.then148: ; preds = %if.then145.us call void @free(ptr noundef %call74) #37 - %79 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) - store ptr @.str.1, ptr %79, align 8 + %77 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) + store ptr @.str.1, ptr %77, align 8 br label %return if.then178: ; preds = %stbi__get8.exit145.us.us call void @free(ptr noundef %call74) #37 call void @free(ptr noundef nonnull %scanline.1.us) #37 - %80 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) - store ptr @.str.87, ptr %80, align 8 + %78 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) + store ptr @.str.87, ptr %78, align 8 br label %return if.then202: ; preds = %if.else194.us.us, %if.end.i106.us.us call void @free(ptr noundef %call74) #37 call void @free(ptr noundef nonnull %scanline.1.us) #37 - %81 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) - store ptr @.str.87, ptr %81, align 8 + %79 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @stbi__g_failure_reason) + store ptr @.str.87, ptr %79, align 8 br label %return if.then245: ; preds = %for.inc241.us diff --git a/bench/tinygltf/optimized/tiny_gltf.cc.ll b/bench/tinygltf/optimized/tiny_gltf.cc.ll index 0e8cce0c1a3..82a9faccd0e 100644 --- a/bench/tinygltf/optimized/tiny_gltf.cc.ll +++ b/bench/tinygltf/optimized/tiny_gltf.cc.ll @@ -71337,7 +71337,7 @@ sub_1: ; preds = %sub_0 64: ; preds = %60 %65 = add i32 %45, -32768 %or.cond = icmp ult i32 %65, -32760 - br i1 %or.cond, label %208, label %.preheader17 + br i1 %or.cond, label %206, label %.preheader17 .preheader17: ; preds = %64 %66 = icmp sgt i32 %36, 0 @@ -71404,7 +71404,7 @@ _ZL17stbi__malloc_mad2iii.exit.us: ; preds = %92 95: ; preds = %.lr.ph55.us, %95 %indvars.iv142 = phi i64 [ 0, %.lr.ph55.us ], [ %indvars.iv.next143, %95 ] - %96 = add nuw nsw i64 %indvars.iv142, %207 + %96 = add nuw nsw i64 %indvars.iv142, %205 %97 = mul nsw i64 %96, %79 %98 = getelementptr inbounds float, ptr %61, i64 %97 %99 = shl nsw i64 %indvars.iv142, 2 @@ -71419,7 +71419,7 @@ _ZL17stbi__malloc_mad2iii.exit.us: ; preds = %92 br label %101 101: ; preds = %.loopexit.us.us, %.preheader15.us.us - %102 = phi i32 [ %45, %.preheader15.us.us ], [ %200, %.loopexit.us.us ] + %102 = phi i32 [ %45, %.preheader15.us.us ], [ %198, %.loopexit.us.us ] %.212447.us.us = phi i32 [ 0, %.preheader15.us.us ], [ %.4.us.us, %.loopexit.us.us ] %103 = load ptr, ptr %69, align 8 %104 = load ptr, ptr %70, align 8 @@ -71553,7 +71553,7 @@ _ZL10stbi__get8P13stbi__context.exit164.us.us: ; preds = %162, %_ZL19stbi__re store i8 %.0.i163.us.us, ptr %167, align 1 %168 = add nuw nsw i32 %.142.us.us, 1 %exitcond133.not = icmp eq i32 %168, %132 - br i1 %exitcond133.not, label %.loopexit.us.us.loopexit77, label %.preheader13.us.us, !llvm.loop !1812 + br i1 %exitcond133.not, label %.loopexit.us.us, label %.preheader13.us.us, !llvm.loop !1812 169: ; preds = %_ZL10stbi__get8P13stbi__context.exit.us.us %170 = icmp ult ptr %131, %130 @@ -71607,43 +71607,32 @@ _ZL19stbi__refill_bufferP13stbi__context.exit.i155.us.us: ; preds = %190, %187 _ZL10stbi__get8P13stbi__context.exit158.us.us: ; preds = %192, %_ZL19stbi__refill_bufferP13stbi__context.exit.i155.us.us, %171 %.0.i157.us.us = phi i8 [ %194, %192 ], [ %191, %_ZL19stbi__refill_bufferP13stbi__context.exit.i155.us.us ], [ 0, %171 ] - %195 = and i8 %.0.i152.us.us, 127 + %195 = xor i8 %.0.i152.us.us, -128 %196 = zext nneg i8 %195 to i32 %197 = icmp ult i32 %102, %196 - br i1 %197, label %.split52.us, label %.preheader.us.us + br i1 %197, label %.split52.us, label %.lr.ph45.us.us.preheader -.loopexit.us.us.loopexit: ; preds = %.lr.ph45.us.us - %198 = trunc nsw i64 %indvars.iv.next135 to i32 - br label %.loopexit.us.us - -.loopexit.us.us.loopexit77: ; preds = %_ZL10stbi__get8P13stbi__context.exit164.us.us - %199 = trunc nsw i64 %indvars.iv.next131 to i32 - br label %.loopexit.us.us - -.loopexit.us.us: ; preds = %.loopexit.us.us.loopexit77, %.loopexit.us.us.loopexit, %.preheader.us.us - %.4.us.us = phi i32 [ %.212447.us.us, %.preheader.us.us ], [ %198, %.loopexit.us.us.loopexit ], [ %199, %.loopexit.us.us.loopexit77 ] - %200 = sub nsw i32 %45, %.4.us.us - %201 = icmp sgt i32 %200, 0 - br i1 %201, label %101, label %._crit_edge49.us.us, !llvm.loop !1813 +.loopexit.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit164.us.us, %.lr.ph45.us.us + %.4.us.us.in = phi i64 [ %indvars.iv.next135, %.lr.ph45.us.us ], [ %indvars.iv.next131, %_ZL10stbi__get8P13stbi__context.exit164.us.us ] + %.4.us.us = trunc i64 %.4.us.us.in to i32 + %198 = sub nsw i32 %45, %.4.us.us + %199 = icmp sgt i32 %198, 0 + br i1 %199, label %101, label %._crit_edge49.us.us, !llvm.loop !1813 .lr.ph45.us.us: ; preds = %.lr.ph45.us.us.preheader, %.lr.ph45.us.us - %indvars.iv134 = phi i64 [ %206, %.lr.ph45.us.us.preheader ], [ %indvars.iv.next135, %.lr.ph45.us.us ] - %.011444.us.us = phi i32 [ 0, %.lr.ph45.us.us.preheader ], [ %205, %.lr.ph45.us.us ] + %indvars.iv134 = phi i64 [ %204, %.lr.ph45.us.us.preheader ], [ %indvars.iv.next135, %.lr.ph45.us.us ] + %.011444.us.us = phi i32 [ 0, %.lr.ph45.us.us.preheader ], [ %203, %.lr.ph45.us.us ] %indvars.iv.next135 = add nsw i64 %indvars.iv134, 1 - %202 = shl nsw i64 %indvars.iv134, 2 - %203 = add nuw nsw i64 %202, %indvars.iv138 - %204 = getelementptr inbounds i8, ptr %.1118.us, i64 %203 - store i8 %.0.i157.us.us, ptr %204, align 1 - %205 = add nuw nsw i32 %.011444.us.us, 1 - %exitcond137.not = icmp eq i32 %205, %196 - br i1 %exitcond137.not, label %.loopexit.us.us.loopexit, label %.lr.ph45.us.us, !llvm.loop !1814 - -.preheader.us.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit158.us.us - %.not76 = icmp eq i8 %195, 0 - br i1 %.not76, label %.loopexit.us.us, label %.lr.ph45.us.us.preheader - -.lr.ph45.us.us.preheader: ; preds = %.preheader.us.us - %206 = sext i32 %.212447.us.us to i64 + %200 = shl nsw i64 %indvars.iv134, 2 + %201 = add nuw nsw i64 %200, %indvars.iv138 + %202 = getelementptr inbounds i8, ptr %.1118.us, i64 %201 + store i8 %.0.i157.us.us, ptr %202, align 1 + %203 = add nuw nsw i32 %.011444.us.us, 1 + %exitcond137.not = icmp eq i32 %203, %196 + br i1 %exitcond137.not, label %.loopexit.us.us, label %.lr.ph45.us.us, !llvm.loop !1814 + +.lr.ph45.us.us.preheader: ; preds = %_ZL10stbi__get8P13stbi__context.exit158.us.us + %204 = sext i32 %.212447.us.us to i64 br label %.lr.ph45.us.us ._crit_edge49.us.us: ; preds = %.loopexit.us.us @@ -71652,229 +71641,229 @@ _ZL10stbi__get8P13stbi__context.exit158.us.us: ; preds = %192, %_ZL19stbi__re br i1 %exitcond141.not, label %.lr.ph55.us, label %.preheader15.us.us, !llvm.loop !1815 .lr.ph55.us: ; preds = %._crit_edge49.us.us - %207 = mul nuw nsw i64 %indvars.iv147, %80 + %205 = mul nuw nsw i64 %indvars.iv147, %80 br label %95 -208: ; preds = %64, %296 - %.0120 = phi i32 [ %297, %296 ], [ 0, %64 ] - %209 = icmp slt i32 %.0120, %36 - br i1 %209, label %210, label %._crit_edge60.thread - -210: ; preds = %208, %_ZL17stbi__hdr_convertPfPhi.exit - %.0122 = phi i32 [ %295, %_ZL17stbi__hdr_convertPfPhi.exit ], [ 0, %208 ] - %.1121 = phi i32 [ %.2, %_ZL17stbi__hdr_convertPfPhi.exit ], [ %.0120, %208 ] - %211 = icmp slt i32 %.0122, %45 - br i1 %211, label %212, label %296 - -212: ; preds = %210, %.split63.us - %.1123 = phi i32 [ %.0122, %210 ], [ 1, %.split63.us ] - %.2 = phi i32 [ %.1121, %210 ], [ 0, %.split63.us ] - %213 = getelementptr inbounds i8, ptr %0, i64 16 - %214 = load ptr, ptr %213, align 8 - %.not.i = icmp eq ptr %214, null - br i1 %.not.i, label %._crit_edge.i, label %215 +206: ; preds = %64, %294 + %.0120 = phi i32 [ %295, %294 ], [ 0, %64 ] + %207 = icmp slt i32 %.0120, %36 + br i1 %207, label %208, label %._crit_edge60.thread + +208: ; preds = %206, %_ZL17stbi__hdr_convertPfPhi.exit + %.0122 = phi i32 [ %293, %_ZL17stbi__hdr_convertPfPhi.exit ], [ 0, %206 ] + %.1121 = phi i32 [ %.2, %_ZL17stbi__hdr_convertPfPhi.exit ], [ %.0120, %206 ] + %209 = icmp slt i32 %.0122, %45 + br i1 %209, label %210, label %294 + +210: ; preds = %208, %.split63.us + %.1123 = phi i32 [ %.0122, %208 ], [ 1, %.split63.us ] + %.2 = phi i32 [ %.1121, %208 ], [ 0, %.split63.us ] + %211 = getelementptr inbounds i8, ptr %0, i64 16 + %212 = load ptr, ptr %211, align 8 + %.not.i = icmp eq ptr %212, null + br i1 %.not.i, label %._crit_edge.i, label %213 -._crit_edge.i: ; preds = %212 +._crit_edge.i: ; preds = %210 %.phi.trans.insert.i = getelementptr inbounds i8, ptr %0, i64 192 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8 %.phi.trans.insert31.i = getelementptr inbounds i8, ptr %0, i64 200 %.pre32.i = load ptr, ptr %.phi.trans.insert31.i, align 8 - br label %233 + br label %231 -215: ; preds = %212 - %216 = getelementptr inbounds i8, ptr %0, i64 200 +213: ; preds = %210 + %214 = getelementptr inbounds i8, ptr %0, i64 200 + %215 = load ptr, ptr %214, align 8 + %216 = getelementptr inbounds i8, ptr %0, i64 192 %217 = load ptr, ptr %216, align 8 - %218 = getelementptr inbounds i8, ptr %0, i64 192 - %219 = load ptr, ptr %218, align 8 - %220 = ptrtoint ptr %217 to i64 - %221 = ptrtoint ptr %219 to i64 - %222 = sub i64 %220, %221 - %223 = trunc i64 %222 to i32 - %224 = icmp slt i32 %223, 4 - br i1 %224, label %225, label %233 - -225: ; preds = %215 - %sext.i = shl i64 %222, 32 - %226 = ashr exact i64 %sext.i, 32 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %8, ptr align 1 %219, i64 %226, i1 false) - %227 = getelementptr inbounds i8, ptr %0, i64 40 - %228 = load ptr, ptr %227, align 8 - %229 = getelementptr inbounds i8, ptr %8, i64 %226 - %230 = sub nsw i32 4, %223 - %231 = call noundef i32 %214(ptr noundef %228, ptr noundef nonnull %229, i32 noundef %230) - %232 = load ptr, ptr %216, align 8 - store ptr %232, ptr %218, align 8 + %218 = ptrtoint ptr %215 to i64 + %219 = ptrtoint ptr %217 to i64 + %220 = sub i64 %218, %219 + %221 = trunc i64 %220 to i32 + %222 = icmp slt i32 %221, 4 + br i1 %222, label %223, label %231 + +223: ; preds = %213 + %sext.i = shl i64 %220, 32 + %224 = ashr exact i64 %sext.i, 32 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %8, ptr align 1 %217, i64 %224, i1 false) + %225 = getelementptr inbounds i8, ptr %0, i64 40 + %226 = load ptr, ptr %225, align 8 + %227 = getelementptr inbounds i8, ptr %8, i64 %224 + %228 = sub nsw i32 4, %221 + %229 = call noundef i32 %212(ptr noundef %226, ptr noundef nonnull %227, i32 noundef %228) + %230 = load ptr, ptr %214, align 8 + store ptr %230, ptr %216, align 8 br label %_ZL10stbi__getnP13stbi__contextPhi.exit -233: ; preds = %215, %._crit_edge.i - %234 = phi ptr [ %.pre32.i, %._crit_edge.i ], [ %217, %215 ] - %235 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %219, %215 ] - %236 = getelementptr inbounds i8, ptr %235, i64 4 - %.not30.i = icmp ugt ptr %236, %234 - br i1 %.not30.i, label %_ZL10stbi__getnP13stbi__contextPhi.exit, label %237 - -237: ; preds = %233 - %238 = getelementptr inbounds i8, ptr %0, i64 192 - %239 = load i32, ptr %235, align 1 - store i32 %239, ptr %8, align 4 - store ptr %236, ptr %238, align 8 +231: ; preds = %213, %._crit_edge.i + %232 = phi ptr [ %.pre32.i, %._crit_edge.i ], [ %215, %213 ] + %233 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %217, %213 ] + %234 = getelementptr inbounds i8, ptr %233, i64 4 + %.not30.i = icmp ugt ptr %234, %232 + br i1 %.not30.i, label %_ZL10stbi__getnP13stbi__contextPhi.exit, label %235 + +235: ; preds = %231 + %236 = getelementptr inbounds i8, ptr %0, i64 192 + %237 = load i32, ptr %233, align 1 + store i32 %237, ptr %8, align 4 + store ptr %234, ptr %236, align 8 br label %_ZL10stbi__getnP13stbi__contextPhi.exit -_ZL10stbi__getnP13stbi__contextPhi.exit: ; preds = %225, %233, %237 - %240 = mul i32 %spec.store.select, %45 - %241 = mul i32 %240, %.2 - %242 = sext i32 %241 to i64 - %243 = getelementptr inbounds float, ptr %61, i64 %242 - %244 = mul nsw i32 %.1123, %spec.store.select - %245 = sext i32 %244 to i64 - %246 = getelementptr inbounds float, ptr %243, i64 %245 - %247 = getelementptr inbounds i8, ptr %8, i64 3 - %248 = load i8, ptr %247, align 1 - %.not.i148 = icmp eq i8 %248, 0 - br i1 %.not.i148, label %286, label %249 - -249: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit - %250 = zext i8 %248 to i32 - %251 = add nsw i32 %250, -136 - %252 = call noundef float @ldexpf(float noundef 1.000000e+00, i32 noundef %251) #51 - %253 = icmp slt i32 %spec.store.select, 3 - %254 = load i8, ptr %8, align 4 - br i1 %253, label %255, label %268 - -255: ; preds = %249 - %256 = zext i8 %254 to i32 - %257 = getelementptr inbounds i8, ptr %8, i64 1 - %258 = load i8, ptr %257, align 1 - %259 = zext i8 %258 to i32 - %260 = add nuw nsw i32 %259, %256 - %261 = getelementptr inbounds i8, ptr %8, i64 2 - %262 = load i8, ptr %261, align 2 - %263 = zext i8 %262 to i32 - %264 = add nuw nsw i32 %260, %263 - %265 = uitofp nneg i32 %264 to float - %266 = fmul float %252, %265 - %267 = fdiv float %266, 3.000000e+00 - br label %281 - -268: ; preds = %249 - %269 = uitofp i8 %254 to float - %270 = fmul float %252, %269 - %271 = getelementptr inbounds i8, ptr %8, i64 1 - %272 = load i8, ptr %271, align 1 - %273 = uitofp i8 %272 to float - %274 = fmul float %252, %273 - %275 = getelementptr inbounds i8, ptr %246, i64 4 - store float %274, ptr %275, align 4 - %276 = getelementptr inbounds i8, ptr %8, i64 2 - %277 = load i8, ptr %276, align 2 - %278 = uitofp i8 %277 to float - %279 = fmul float %252, %278 - %280 = getelementptr inbounds i8, ptr %246, i64 8 - store float %279, ptr %280, align 4 - br label %281 - -281: ; preds = %268, %255 - %.sink = phi float [ %267, %255 ], [ %270, %268 ] - store float %.sink, ptr %246, align 4 +_ZL10stbi__getnP13stbi__contextPhi.exit: ; preds = %223, %231, %235 + %238 = mul i32 %spec.store.select, %45 + %239 = mul i32 %238, %.2 + %240 = sext i32 %239 to i64 + %241 = getelementptr inbounds float, ptr %61, i64 %240 + %242 = mul nsw i32 %.1123, %spec.store.select + %243 = sext i32 %242 to i64 + %244 = getelementptr inbounds float, ptr %241, i64 %243 + %245 = getelementptr inbounds i8, ptr %8, i64 3 + %246 = load i8, ptr %245, align 1 + %.not.i148 = icmp eq i8 %246, 0 + br i1 %.not.i148, label %284, label %247 + +247: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit + %248 = zext i8 %246 to i32 + %249 = add nsw i32 %248, -136 + %250 = call noundef float @ldexpf(float noundef 1.000000e+00, i32 noundef %249) #51 + %251 = icmp slt i32 %spec.store.select, 3 + %252 = load i8, ptr %8, align 4 + br i1 %251, label %253, label %266 + +253: ; preds = %247 + %254 = zext i8 %252 to i32 + %255 = getelementptr inbounds i8, ptr %8, i64 1 + %256 = load i8, ptr %255, align 1 + %257 = zext i8 %256 to i32 + %258 = add nuw nsw i32 %257, %254 + %259 = getelementptr inbounds i8, ptr %8, i64 2 + %260 = load i8, ptr %259, align 2 + %261 = zext i8 %260 to i32 + %262 = add nuw nsw i32 %258, %261 + %263 = uitofp nneg i32 %262 to float + %264 = fmul float %250, %263 + %265 = fdiv float %264, 3.000000e+00 + br label %279 + +266: ; preds = %247 + %267 = uitofp i8 %252 to float + %268 = fmul float %250, %267 + %269 = getelementptr inbounds i8, ptr %8, i64 1 + %270 = load i8, ptr %269, align 1 + %271 = uitofp i8 %270 to float + %272 = fmul float %250, %271 + %273 = getelementptr inbounds i8, ptr %244, i64 4 + store float %272, ptr %273, align 4 + %274 = getelementptr inbounds i8, ptr %8, i64 2 + %275 = load i8, ptr %274, align 2 + %276 = uitofp i8 %275 to float + %277 = fmul float %250, %276 + %278 = getelementptr inbounds i8, ptr %244, i64 8 + store float %277, ptr %278, align 4 + br label %279 + +279: ; preds = %266, %253 + %.sink = phi float [ %265, %253 ], [ %268, %266 ] + store float %.sink, ptr %244, align 4 switch i32 %4, label %_ZL17stbi__hdr_convertPfPhi.exit [ - i32 2, label %282 - i32 4, label %284 + i32 2, label %280 + i32 4, label %282 ] -282: ; preds = %281 - %283 = getelementptr inbounds i8, ptr %246, i64 4 - store float 1.000000e+00, ptr %283, align 4 +280: ; preds = %279 + %281 = getelementptr inbounds i8, ptr %244, i64 4 + store float 1.000000e+00, ptr %281, align 4 br label %_ZL17stbi__hdr_convertPfPhi.exit -284: ; preds = %281 - %285 = getelementptr inbounds i8, ptr %246, i64 12 - store float 1.000000e+00, ptr %285, align 4 +282: ; preds = %279 + %283 = getelementptr inbounds i8, ptr %244, i64 12 + store float 1.000000e+00, ptr %283, align 4 br label %_ZL17stbi__hdr_convertPfPhi.exit -286: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit +284: ; preds = %_ZL10stbi__getnP13stbi__contextPhi.exit switch i32 %spec.store.select, label %_ZL17stbi__hdr_convertPfPhi.exit [ - i32 4, label %287 - i32 3, label %289 - i32 2, label %292 - i32 1, label %294 + i32 4, label %285 + i32 3, label %287 + i32 2, label %290 + i32 1, label %292 ] -287: ; preds = %286 - %288 = getelementptr inbounds i8, ptr %246, i64 12 - store float 1.000000e+00, ptr %288, align 4 - br label %289 +285: ; preds = %284 + %286 = getelementptr inbounds i8, ptr %244, i64 12 + store float 1.000000e+00, ptr %286, align 4 + br label %287 -289: ; preds = %287, %286 - %290 = getelementptr inbounds i8, ptr %246, i64 8 - store float 0.000000e+00, ptr %290, align 4 - %291 = getelementptr inbounds i8, ptr %246, i64 4 - store float 0.000000e+00, ptr %291, align 4 - store float 0.000000e+00, ptr %246, align 4 +287: ; preds = %285, %284 + %288 = getelementptr inbounds i8, ptr %244, i64 8 + store float 0.000000e+00, ptr %288, align 4 + %289 = getelementptr inbounds i8, ptr %244, i64 4 + store float 0.000000e+00, ptr %289, align 4 + store float 0.000000e+00, ptr %244, align 4 br label %_ZL17stbi__hdr_convertPfPhi.exit -292: ; preds = %286 - %293 = getelementptr inbounds i8, ptr %246, i64 4 - store float 1.000000e+00, ptr %293, align 4 - br label %294 +290: ; preds = %284 + %291 = getelementptr inbounds i8, ptr %244, i64 4 + store float 1.000000e+00, ptr %291, align 4 + br label %292 -294: ; preds = %292, %286 - store float 0.000000e+00, ptr %246, align 4 +292: ; preds = %290, %284 + store float 0.000000e+00, ptr %244, align 4 br label %_ZL17stbi__hdr_convertPfPhi.exit -_ZL17stbi__hdr_convertPfPhi.exit: ; preds = %281, %282, %284, %286, %289, %294 - %295 = add nsw i32 %.1123, 1 - br label %210, !llvm.loop !1816 +_ZL17stbi__hdr_convertPfPhi.exit: ; preds = %279, %280, %282, %284, %287, %292 + %293 = add nsw i32 %.1123, 1 + br label %208, !llvm.loop !1816 -296: ; preds = %210 - %297 = add nsw i32 %.1121, 1 - br label %208, !llvm.loop !1817 +294: ; preds = %208 + %295 = add nsw i32 %.1121, 1 + br label %206, !llvm.loop !1817 .split63.us: ; preds = %.lr.ph59.split.us store i8 %81, ptr %9, align 1 - %298 = getelementptr inbounds i8, ptr %9, i64 1 - store i8 %82, ptr %298, align 1 - %299 = getelementptr inbounds i8, ptr %9, i64 2 - store i8 %83, ptr %299, align 1 - %300 = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef nonnull %0) - %301 = getelementptr inbounds i8, ptr %9, i64 3 - store i8 %300, ptr %301, align 1 + %296 = getelementptr inbounds i8, ptr %9, i64 1 + store i8 %82, ptr %296, align 1 + %297 = getelementptr inbounds i8, ptr %9, i64 2 + store i8 %83, ptr %297, align 1 + %298 = call fastcc noundef zeroext i8 @_ZL10stbi__get8P13stbi__context(ptr noundef nonnull %0) + %299 = getelementptr inbounds i8, ptr %9, i64 3 + store i8 %298, ptr %299, align 1 call fastcc void @_ZL17stbi__hdr_convertPfPhi(ptr noundef %61, ptr noundef %9, i32 noundef %spec.store.select) call void @free(ptr noundef %.011758.us) #51 - br label %212 + br label %210 .split68.us: ; preds = %86 call void @free(ptr noundef %61) #51 call void @free(ptr noundef %.011758.us) #51 - %302 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.191, ptr %302, align 8 + %300 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.191, ptr %300, align 8 br label %._crit_edge60.thread _ZL17stbi__malloc_mad2iii.exit.thread: ; preds = %_ZL17stbi__malloc_mad2iii.exit.us call void @free(ptr noundef %61) #51 - %303 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.114, ptr %303, align 8 + %301 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.114, ptr %301, align 8 br label %._crit_edge60.thread .split52.us: ; preds = %_ZL10stbi__get8P13stbi__context.exit158.us.us call void @free(ptr noundef %61) #51 call void @free(ptr noundef nonnull %.1118.us) #51 - %304 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.145, ptr %304, align 8 + %302 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.145, ptr %302, align 8 br label %._crit_edge60.thread .thread: ; preds = %134, %106 call void @free(ptr noundef %61) #51 call void @free(ptr noundef nonnull %.1118.us) #51 - %305 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) - store ptr @.str.145, ptr %305, align 8 + %303 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZL22stbi__g_failure_reason) + store ptr @.str.145, ptr %303, align 8 br label %._crit_edge60.thread ._crit_edge60: ; preds = %._crit_edge56.us call void @free(ptr noundef nonnull %.1118.us) #51 br label %._crit_edge60.thread -._crit_edge60.thread: ; preds = %.preheader17, %208, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %62, %58, %51, %47, %.tail.thread, %26, %._crit_edge.thread, %12 - %.0 = phi ptr [ null, %12 ], [ null, %26 ], [ null, %.tail.thread ], [ null, %47 ], [ null, %51 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %62 ], [ null, %58 ], [ null, %._crit_edge.thread ], [ %61, %._crit_edge60 ], [ %61, %208 ], [ %61, %.preheader17 ] +._crit_edge60.thread: ; preds = %.preheader17, %206, %._crit_edge60, %.thread, %.split52.us, %_ZL17stbi__malloc_mad2iii.exit.thread, %.split68.us, %62, %58, %51, %47, %.tail.thread, %26, %._crit_edge.thread, %12 + %.0 = phi ptr [ null, %12 ], [ null, %26 ], [ null, %.tail.thread ], [ null, %47 ], [ null, %51 ], [ null, %.split68.us ], [ null, %.split52.us ], [ null, %.thread ], [ null, %_ZL17stbi__malloc_mad2iii.exit.thread ], [ null, %62 ], [ null, %58 ], [ null, %._crit_edge.thread ], [ %61, %._crit_edge60 ], [ %61, %206 ], [ %61, %.preheader17 ] ret ptr %.0 } diff --git a/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll b/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll index ee46e978502..4ea69bc27b6 100644 --- a/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll +++ b/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll @@ -10273,9 +10273,8 @@ common.resume: ; preds = %384, %122, %111, %1 121: ; preds = %100 call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %53) - %.pr223.fr.off = and i64 %.pr223.fr, 1 - %switch.not.not = icmp eq i64 %.pr223.fr.off, 0 - br i1 %switch.not.not, label %_ZN3std7process7Command3new17h4e1ef7f07e2ad9cdE.exit, label %_ZN3std7process7Command3new17h4e1ef7f07e2ad9cdE.exit95 + %switch = icmp eq i64 %.pr223.fr, -9223372036854775808 + br i1 %switch, label %_ZN3std7process7Command3new17h4e1ef7f07e2ad9cdE.exit, label %_ZN3std7process7Command3new17h4e1ef7f07e2ad9cdE.exit95 122: ; preds = %102 %lpad.thr_comm.split-lp303 = landingpad { ptr, i32 } diff --git a/bench/wireshark/optimized/packet-bgp.c.ll b/bench/wireshark/optimized/packet-bgp.c.ll index 61c10ef812d..1fdfed7b27e 100644 --- a/bench/wireshark/optimized/packet-bgp.c.ll +++ b/bench/wireshark/optimized/packet-bgp.c.ll @@ -12318,10 +12318,8 @@ decode_bgp_mup_nlri_type1_st_route.exit: ; preds = %85, %.sink.split.i %136 = load i32, ptr @hf_bgp_mup_nlri_ep_ipv6_addr, align 4 %137 = call ptr (ptr, i32, ptr, i32, i32, ptr, ptr, ...) @proto_tree_add_ipv6_format_value(ptr noundef %21, i32 noundef %136, ptr noundef %1, i32 noundef %111, i32 noundef %130, ptr noundef nonnull %8, ptr noundef nonnull @.str.1842, ptr noundef %135, i32 noundef %129) #4 %138 = add i32 %130, %111 - %139 = and i8 %108, 127 - %.not.i = icmp eq i8 %139, 0 - %or.cond.i = or i1 %127, %.not.i - br i1 %or.cond.i, label %decode_bgp_mup_nlri_type2_st_route.exit, label %141 + %139 = xor i8 %108, -128 + br i1 %127, label %decode_bgp_mup_nlri_type2_st_route.exit, label %141 .thread89.i: ; preds = %112 %140 = add i8 %108, -32 diff --git a/bench/wireshark/optimized/packet-v52.c.ll b/bench/wireshark/optimized/packet-v52.c.ll index c3a63424dfa..fff0c1e1a7d 100644 --- a/bench/wireshark/optimized/packet-v52.c.ll +++ b/bench/wireshark/optimized/packet-v52.c.ll @@ -715,7 +715,7 @@ dissect_v52_protocol_discriminator.exit.i: ; preds = %17, %14, %4 75: ; preds = %72 %76 = and i32 %73, -8 %or.cond9.i = icmp eq i32 %76, 24 - br i1 %or.cond9.i, label %90, label %105 + br i1 %or.cond9.i, label %89, label %104 .thread106.i: ; preds = %72 %77 = load i32, ptr @hf_v52_bcc_address, align 4 @@ -723,94 +723,94 @@ dissect_v52_protocol_discriminator.exit.i: ; preds = %17, %14, %4 %79 = load i32, ptr @hf_v52_bcc_low_address, align 4 %80 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %79, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 %81 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 - %82 = and i8 %81, 127 - %83 = zext nneg i8 %82 to i32 - %84 = shl nuw nsw i32 %83, 6 - %85 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 - %86 = zext i8 %85 to i32 - %87 = add nuw nsw i32 %84, %86 - %88 = load ptr, ptr %5, align 8 - tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %88, i32 noundef 25, ptr noundef nonnull @.str.364, i32 noundef %87) #3 + %spec.select.i = and i8 %81, 127 + %82 = zext nneg i8 %spec.select.i to i32 + %83 = shl nuw nsw i32 %82, 6 + %84 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 + %85 = zext i8 %84 to i32 + %86 = add nuw nsw i32 %83, %85 + %87 = load ptr, ptr %5, align 8 + tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %87, i32 noundef 25, ptr noundef nonnull @.str.364, i32 noundef %86) #3 %.pre105.i = load i32, ptr @message_type_tmp, align 4 - %89 = and i32 %.pre105.i, -8 - %or.cond9108.i = icmp eq i32 %89, 24 - br i1 %or.cond9108.i, label %90, label %dissect_v52_message.exit - -90: ; preds = %.thread106.i, %75 - %91 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 - %92 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 - %93 = load i32, ptr @hf_v52_prot_address, align 4 - %94 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %93, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 - %95 = load i32, ptr @hf_v52_prot_low_address, align 4 - %96 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %95, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 - %97 = load i32, ptr @message_type_tmp, align 4 - %98 = and i32 %97, -2 - %or.cond11.i = icmp eq i32 %98, 30 - br i1 %or.cond11.i, label %dissect_v52_message.exit, label %99 - -99: ; preds = %90 - %100 = zext i8 %91 to i32 - %101 = shl nuw nsw i32 %100, 8 - %102 = zext i8 %92 to i32 - %103 = or disjoint i32 %101, %102 - %104 = load ptr, ptr %5, align 8 - tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %104, i32 noundef 25, ptr noundef nonnull @.str.365, i32 noundef %103) #3 + %88 = and i32 %.pre105.i, -8 + %or.cond9108.i = icmp eq i32 %88, 24 + br i1 %or.cond9108.i, label %89, label %dissect_v52_message.exit + +89: ; preds = %.thread106.i, %75 + %90 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 + %91 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 + %92 = load i32, ptr @hf_v52_prot_address, align 4 + %93 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %92, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 + %94 = load i32, ptr @hf_v52_prot_low_address, align 4 + %95 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %94, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 + %96 = load i32, ptr @message_type_tmp, align 4 + %97 = and i32 %96, -2 + %or.cond11.i = icmp eq i32 %97, 30 + br i1 %or.cond11.i, label %dissect_v52_message.exit, label %98 + +98: ; preds = %89 + %99 = zext i8 %90 to i32 + %100 = shl nuw nsw i32 %99, 8 + %101 = zext i8 %91 to i32 + %102 = or disjoint i32 %100, %101 + %103 = load ptr, ptr %5, align 8 + tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %103, i32 noundef 25, ptr noundef nonnull @.str.365, i32 noundef %102) #3 br label %dissect_v52_message.exit -105: ; preds = %75 - %106 = icmp eq i32 %.2.i, 0 - br i1 %106, label %107, label %dissect_v52_message.exit - -107: ; preds = %105 - %108 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 - %109 = and i8 %108, 1 - %.not102.i = icmp eq i8 %109, 0 - %110 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 - %111 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 - br i1 %.not102.i, label %123, label %112 - -112: ; preds = %107 - %113 = lshr i8 %110, 1 - %114 = zext nneg i8 %113 to i32 - %115 = shl nuw nsw i32 %114, 8 - %116 = zext i8 %111 to i32 - %117 = or disjoint i32 %115, %116 - %118 = load i32, ptr @hf_v52_pstn_address, align 4 - %119 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %118, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 - %120 = load i32, ptr @hf_v52_pstn_low_address, align 4 - %121 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %120, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 - %122 = load ptr, ptr %5, align 8 - tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %122, i32 noundef 25, ptr noundef nonnull @.str.361, i32 noundef %117) #3 +104: ; preds = %75 + %105 = icmp eq i32 %.2.i, 0 + br i1 %105, label %106, label %dissect_v52_message.exit + +106: ; preds = %104 + %107 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 + %108 = and i8 %107, 1 + %.not102.i = icmp eq i8 %108, 0 + %109 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 1) #3 + %110 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 2) #3 + br i1 %.not102.i, label %122, label %111 + +111: ; preds = %106 + %112 = lshr i8 %109, 1 + %113 = zext nneg i8 %112 to i32 + %114 = shl nuw nsw i32 %113, 8 + %115 = zext i8 %110 to i32 + %116 = or disjoint i32 %114, %115 + %117 = load i32, ptr @hf_v52_pstn_address, align 4 + %118 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %117, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 + %119 = load i32, ptr @hf_v52_pstn_low_address, align 4 + %120 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %119, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 + %121 = load ptr, ptr %5, align 8 + tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %121, i32 noundef 25, ptr noundef nonnull @.str.361, i32 noundef %116) #3 br label %dissect_v52_message.exit -123: ; preds = %107 - %124 = lshr i8 %110, 2 - %125 = zext nneg i8 %124 to i32 - %126 = shl nuw nsw i32 %125, 7 - %127 = lshr i8 %111, 1 - %128 = zext nneg i8 %127 to i32 - %129 = or disjoint i32 %126, %128 - %130 = load i32, ptr @hf_v52_isdn_address, align 4 - %131 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %130, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 - %132 = load i32, ptr @hf_v52_isdn_low_address, align 4 - %133 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %132, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 - %134 = load ptr, ptr %5, align 8 - tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %134, i32 noundef 25, ptr noundef nonnull @.str.362, i32 noundef %129) #3 +122: ; preds = %106 + %123 = lshr i8 %109, 2 + %124 = zext nneg i8 %123 to i32 + %125 = shl nuw nsw i32 %124, 7 + %126 = lshr i8 %110, 1 + %127 = zext nneg i8 %126 to i32 + %128 = or disjoint i32 %125, %127 + %129 = load i32, ptr @hf_v52_isdn_address, align 4 + %130 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %129, ptr noundef %0, i32 noundef 1, i32 noundef 1, i32 noundef 0) #3 + %131 = load i32, ptr @hf_v52_isdn_low_address, align 4 + %132 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %131, ptr noundef %0, i32 noundef 2, i32 noundef 1, i32 noundef 0) #3 + %133 = load ptr, ptr %5, align 8 + tail call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %133, i32 noundef 25, ptr noundef nonnull @.str.362, i32 noundef %128) #3 br label %dissect_v52_message.exit -dissect_v52_message.exit: ; preds = %.thread106.i, %90, %99, %105, %112, %123 - %135 = load i32, ptr @hf_v52_msg_type, align 4 - %136 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %135, ptr noundef %0, i32 noundef 3, i32 noundef 1, i32 noundef 0) #3 +dissect_v52_message.exit: ; preds = %.thread106.i, %89, %98, %104, %111, %122 + %134 = load i32, ptr @hf_v52_msg_type, align 4 + %135 = tail call ptr @proto_tree_add_item(ptr noundef %.0.i, i32 noundef %134, ptr noundef %0, i32 noundef 3, i32 noundef 1, i32 noundef 0) #3 + %136 = load ptr, ptr %5, align 8 + tail call void @col_append_str(ptr noundef %136, i32 noundef 25, ptr noundef nonnull @.str.366) #3 %137 = load ptr, ptr %5, align 8 - tail call void @col_append_str(ptr noundef %137, i32 noundef 25, ptr noundef nonnull @.str.366) #3 - %138 = load ptr, ptr %5, align 8 - %139 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 3) #3 - %140 = zext i8 %139 to i32 - %141 = tail call ptr @val_to_str_ext_const(i32 noundef %140, ptr noundef nonnull @msg_type_values_short_ext, ptr noundef nonnull @.str.367) #3 - tail call void @col_append_str(ptr noundef %138, i32 noundef 25, ptr noundef %141) #3 + %138 = tail call zeroext i8 @tvb_get_guint8(ptr noundef %0, i32 noundef 3) #3 + %139 = zext i8 %138 to i32 + %140 = tail call ptr @val_to_str_ext_const(i32 noundef %139, ptr noundef nonnull @msg_type_values_short_ext, ptr noundef nonnull @.str.367) #3 + tail call void @col_append_str(ptr noundef %137, i32 noundef 25, ptr noundef %140) #3 tail call fastcc void @dissect_v52_info(ptr noundef %0, ptr noundef nonnull readonly %1, ptr noundef %.0.i) - %142 = tail call i32 @tvb_captured_length(ptr noundef %0) #3 - ret i32 %142 + %141 = tail call i32 @tvb_captured_length(ptr noundef %0) #3 + ret i32 %141 } declare ptr @_try_val_to_str_ext_init(i32 noundef, ptr noundef) #1 diff --git a/bench/wireshark/optimized/snoop.c.ll b/bench/wireshark/optimized/snoop.c.ll index 739aedd5bde..df0946f56a4 100644 --- a/bench/wireshark/optimized/snoop.c.ll +++ b/bench/wireshark/optimized/snoop.c.ll @@ -55,18 +55,18 @@ define hidden range(i32 -1, 2) i32 @snoop_open(ptr noundef %0, ptr noundef %1, p %10 = load i32, ptr %1, align 4 %.not46 = icmp ne i32 %10, -12 %. = sext i1 %.not46 to i32 - br label %87 + br label %91 11: ; preds = %3 %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %4, ptr noundef nonnull dereferenceable(8) @snoop_magic, i64 8) %.not47 = icmp eq i32 %bcmp, 0 - br i1 %.not47, label %12, label %87 + br i1 %.not47, label %12, label %91 12: ; preds = %11 %13 = load ptr, ptr %0, align 8 %14 = call i32 @wtap_read_bytes(ptr noundef %13, ptr noundef nonnull %5, i32 noundef 8, ptr noundef %1, ptr noundef %2) #7 %.not48 = icmp eq i32 %14, 0 - br i1 %.not48, label %87, label %15 + br i1 %.not48, label %91, label %15 15: ; preds = %12 %16 = load i32, ptr %5, align 4 @@ -80,7 +80,7 @@ define hidden range(i32 -1, 2) i32 @snoop_open(ptr noundef %0, ptr noundef %1, p store i32 -4, ptr %1, align 4 %19 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str, i32 noundef %17) #7 store ptr %19, ptr %2, align 8 - br label %87 + br label %91 20: ; preds = %15 %21 = load ptr, ptr %0, align 8 @@ -93,7 +93,7 @@ define hidden range(i32 -1, 2) i32 @snoop_open(ptr noundef %0, ptr noundef %1, p 25: ; preds = %20 %26 = load i32, ptr %1, align 4 %.not50 = icmp eq i32 %26, 0 - br i1 %.not50, label %42, label %87 + br i1 %.not50, label %42, label %91 27: ; preds = %20 %28 = getelementptr inbounds i8, ptr %6, i64 8 @@ -120,7 +120,7 @@ define hidden range(i32 -1, 2) i32 @snoop_open(ptr noundef %0, ptr noundef %1, p %43 = load ptr, ptr %0, align 8 %44 = call i64 @file_seek(ptr noundef %43, i64 noundef %22, i32 noundef 0, ptr noundef %1) #7 %45 = icmp eq i64 %44, -1 - br i1 %45, label %87, label %46 + br i1 %45, label %91, label %46 46: ; preds = %42 %47 = getelementptr inbounds i8, ptr %5, i64 4 @@ -145,75 +145,82 @@ define hidden range(i32 -1, 2) i32 @snoop_open(ptr noundef %0, ptr noundef %1, p store i32 -4, ptr %1, align 4 %57 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str.1, i32 noundef %49) #7 store ptr %57, ptr %2, align 8 - br label %87 + br label %91 58: ; preds = %52 %59 = getelementptr [20 x i32], ptr @snoop_open.shomiti_encap, i64 0, i64 %53 - br label %75 + br label %79 60: ; preds = %46 %.not52 = icmp sgt i32 %49, -1 - br i1 %.not52, label %65, label %61 + br i1 %.not52, label %69, label %61 61: ; preds = %60 - %62 = and i32 %49, 2147483647 - %.not54 = icmp eq i32 %62, 5 - br i1 %.not54, label %75, label %63 + %62 = xor i32 %49, -2147483648 + %63 = icmp ult i32 %62, 8 + %.not54 = icmp eq i32 %48, 83886208 + %or.cond = select i1 %63, i1 %.not54, i1 false + br i1 %or.cond, label %66, label %64 -63: ; preds = %61 +64: ; preds = %61 store i32 -4, ptr %1, align 4 - %64 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str.2, i32 noundef %49) #7 - store ptr %64, ptr %2, align 8 - br label %87 - -65: ; preds = %60 - %66 = icmp ugt i32 %49, 26 - br i1 %66, label %71, label %67 - -67: ; preds = %65 - %68 = zext nneg i32 %49 to i64 - %69 = shl nuw nsw i64 1, %68 - %70 = and i64 %69, 66764010 - %.not53 = icmp eq i64 %70, 0 - br i1 %.not53, label %73, label %71 - -71: ; preds = %67, %65 + %65 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str.2, i32 noundef %49) #7 + store ptr %65, ptr %2, align 8 + br label %91 + +66: ; preds = %61 + %67 = zext nneg i32 %62 to i64 + %68 = getelementptr [8 x i32], ptr @snoop_open.snoop_private_encap, i64 0, i64 %67 + br label %79 + +69: ; preds = %60 + %70 = icmp ugt i32 %49, 26 + br i1 %70, label %75, label %71 + +71: ; preds = %69 + %72 = zext nneg i32 %49 to i64 + %73 = shl nuw nsw i64 1, %72 + %74 = and i64 %73, 66764010 + %.not53 = icmp eq i64 %74, 0 + br i1 %.not53, label %77, label %75 + +75: ; preds = %71, %69 store i32 -4, ptr %1, align 4 - %72 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str.3, i32 noundef %49) #7 - store ptr %72, ptr %2, align 8 - br label %87 + %76 = call noalias ptr (ptr, ptr, ...) @wmem_strdup_printf(ptr noundef null, ptr noundef nonnull @.str.3, i32 noundef %49) #7 + store ptr %76, ptr %2, align 8 + br label %91 -73: ; preds = %67 - %74 = getelementptr [27 x i32], ptr @snoop_open.snoop_encap, i64 0, i64 %68 - br label %75 +77: ; preds = %71 + %78 = getelementptr [27 x i32], ptr @snoop_open.snoop_encap, i64 0, i64 %72 + br label %79 -75: ; preds = %61, %73, %58 - %.039.in = phi ptr [ %59, %58 ], [ %74, %73 ], [ getelementptr inbounds (i8, ptr @snoop_open.snoop_private_encap, i64 20), %61 ] +79: ; preds = %66, %77, %58 + %.039.in = phi ptr [ %59, %58 ], [ %68, %66 ], [ %78, %77 ] %.039 = load i32, ptr %.039.in, align 4 - %76 = load i32, ptr @shomiti_file_type_subtype, align 4 - %77 = load i32, ptr @snoop_file_type_subtype, align 4 - %78 = select i1 %.not51, i32 %77, i32 %76 - %79 = getelementptr inbounds i8, ptr %0, i64 20 - store i32 %78, ptr %79, align 4 - %80 = call noalias dereferenceable_or_null(4) ptr @g_malloc0_n(i64 noundef 1, i64 noundef 4) #8 - %81 = getelementptr inbounds i8, ptr %0, i64 96 - store ptr %80, ptr %81, align 8 - %82 = getelementptr inbounds i8, ptr %0, i64 112 - store ptr @snoop_read, ptr %82, align 8 - %83 = getelementptr inbounds i8, ptr %0, i64 120 - store ptr @snoop_seek_read, ptr %83, align 8 - %84 = getelementptr inbounds i8, ptr %0, i64 144 - store i32 %.039, ptr %84, align 8 - %85 = getelementptr inbounds i8, ptr %0, i64 24 - store i32 0, ptr %85, align 8 - %86 = getelementptr inbounds i8, ptr %0, i64 148 - store i32 6, ptr %86, align 4 - store i32 %.038, ptr %80, align 4 + %80 = load i32, ptr @shomiti_file_type_subtype, align 4 + %81 = load i32, ptr @snoop_file_type_subtype, align 4 + %82 = select i1 %.not51, i32 %81, i32 %80 + %83 = getelementptr inbounds i8, ptr %0, i64 20 + store i32 %82, ptr %83, align 4 + %84 = call noalias dereferenceable_or_null(4) ptr @g_malloc0_n(i64 noundef 1, i64 noundef 4) #8 + %85 = getelementptr inbounds i8, ptr %0, i64 96 + store ptr %84, ptr %85, align 8 + %86 = getelementptr inbounds i8, ptr %0, i64 112 + store ptr @snoop_read, ptr %86, align 8 + %87 = getelementptr inbounds i8, ptr %0, i64 120 + store ptr @snoop_seek_read, ptr %87, align 8 + %88 = getelementptr inbounds i8, ptr %0, i64 144 + store i32 %.039, ptr %88, align 8 + %89 = getelementptr inbounds i8, ptr %0, i64 24 + store i32 0, ptr %89, align 8 + %90 = getelementptr inbounds i8, ptr %0, i64 148 + store i32 6, ptr %90, align 4 + store i32 %.038, ptr %84, align 4 call void @wtap_add_generated_idb(ptr noundef nonnull %0) #7 - br label %87 + br label %91 -87: ; preds = %42, %25, %12, %11, %9, %75, %71, %63, %56, %18 - %.0 = phi i32 [ -1, %18 ], [ -1, %56 ], [ 1, %75 ], [ -1, %63 ], [ -1, %71 ], [ %., %9 ], [ 0, %11 ], [ -1, %12 ], [ -1, %25 ], [ -1, %42 ] +91: ; preds = %42, %25, %12, %11, %9, %79, %75, %64, %56, %18 + %.0 = phi i32 [ -1, %18 ], [ -1, %56 ], [ 1, %79 ], [ -1, %64 ], [ -1, %75 ], [ %., %9 ], [ 0, %11 ], [ -1, %12 ], [ -1, %25 ], [ -1, %42 ] ret i32 %.0 } diff --git a/bench/yalantinglibs/optimized/chat_room.cpp.ll b/bench/yalantinglibs/optimized/chat_room.cpp.ll index a24c5014694..b80e116611d 100644 --- a/bench/yalantinglibs/optimized/chat_room.cpp.ll +++ b/bench/yalantinglibs/optimized/chat_room.cpp.ll @@ -22330,8 +22330,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -22663,37 +22663,34 @@ _ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_t %13 = load ptr, ptr %this, align 8 %call.i.i = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #33 %cmp.i.i.i = icmp sgt i64 %call.i.i, -1 + %14 = load i64, ptr %expiry_time, align 8 br i1 %cmp.i.i.i, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit %sub.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i - %14 = load i64, ptr %expiry_time, align 8 %cmp.i8.i.i = icmp slt i64 %sub.i.i.i.i, %14 br i1 %cmp.i8.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i if.else.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit - %sub.i.i11.i.i = and i64 %call.i.i, 9223372036854775807 - %sub.i.i.i = sub nsw i64 0, %sub.i.i11.i.i - %15 = load i64, ptr %expiry_time, align 8 - %cmp.i13.i.i = icmp slt i64 %15, %sub.i.i.i - br i1 %cmp.i13.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i + %15 = xor i64 %call.i.i, 9223372036854775807 + %cmp.i13.not.i.i = icmp slt i64 %15, %14 + br i1 %cmp.i13.not.i.i, label %if.end41.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i if.end41.i.i: ; preds = %if.else.i.i, %if.then.i.i - %16 = phi i64 [ %15, %if.else.i.i ], [ %14, %if.then.i.i ] - %add.i.i.i.i = add nsw i64 %16, %call.i.i + %add.i.i.i.i = add nsw i64 %14, %call.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i: ; preds = %if.end41.i.i, %if.else.i.i, %if.then.i.i %retval.sroa.0.0.i.i = phi i64 [ %add.i.i.i.i, %if.end41.i.i ], [ 9223372036854775807, %if.then.i.i ], [ -9223372036854775808, %if.else.i.i ] - %17 = load i8, ptr %might_have_pending_waits.i.i, align 8 - %tobool.i.i.i = trunc i8 %17 to i1 + %16 = load i8, ptr %might_have_pending_waits.i.i, align 8 + %tobool.i.i.i = trunc i8 %16 to i1 br i1 %tobool.i.i.i, label %if.end.i.i.i, label %invoke.cont8 if.end.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i %scheduler_.i.i.i = getelementptr inbounds i8, ptr %13, i64 88 - %18 = load ptr, ptr %scheduler_.i.i.i, align 8 + %17 = load ptr, ptr %scheduler_.i.i.i, align 8 %timer_queue_.i.i.i = getelementptr inbounds i8, ptr %13, i64 40 - %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %18, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) + %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %17, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) to label %call2.i.i.i.noexc unwind label %lpad.body call2.i.i.i.noexc: ; preds = %if.end.i.i.i @@ -22705,10 +22702,10 @@ invoke.cont8: ; preds = %call2.i.i.i.noexc, ret void lpad.body: ; preds = %if.end.i.i.i - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %this) #33 - resume { ptr, i32 } %19 + resume { ptr, i32 } %18 } ; Function Attrs: mustprogress nounwind uwtable @@ -25627,8 +25624,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 diff --git a/bench/yalantinglibs/optimized/example.cpp.ll b/bench/yalantinglibs/optimized/example.cpp.ll index 30a1ff3ef34..203c6ef5938 100644 --- a/bench/yalantinglibs/optimized/example.cpp.ll +++ b/bench/yalantinglibs/optimized/example.cpp.ll @@ -29037,8 +29037,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -29370,37 +29370,34 @@ _ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_t %13 = load ptr, ptr %this, align 8 %call.i.i = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #28 %cmp.i.i.i = icmp sgt i64 %call.i.i, -1 + %14 = load i64, ptr %expiry_time, align 8 br i1 %cmp.i.i.i, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit %sub.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i - %14 = load i64, ptr %expiry_time, align 8 %cmp.i8.i.i = icmp slt i64 %sub.i.i.i.i, %14 br i1 %cmp.i8.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i if.else.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit - %sub.i.i11.i.i = and i64 %call.i.i, 9223372036854775807 - %sub.i.i.i = sub nsw i64 0, %sub.i.i11.i.i - %15 = load i64, ptr %expiry_time, align 8 - %cmp.i13.i.i = icmp slt i64 %15, %sub.i.i.i - br i1 %cmp.i13.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i + %15 = xor i64 %call.i.i, 9223372036854775807 + %cmp.i13.not.i.i = icmp slt i64 %15, %14 + br i1 %cmp.i13.not.i.i, label %if.end41.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i if.end41.i.i: ; preds = %if.else.i.i, %if.then.i.i - %16 = phi i64 [ %15, %if.else.i.i ], [ %14, %if.then.i.i ] - %add.i.i.i.i = add nsw i64 %16, %call.i.i + %add.i.i.i.i = add nsw i64 %14, %call.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i: ; preds = %if.end41.i.i, %if.else.i.i, %if.then.i.i %retval.sroa.0.0.i.i = phi i64 [ %add.i.i.i.i, %if.end41.i.i ], [ 9223372036854775807, %if.then.i.i ], [ -9223372036854775808, %if.else.i.i ] - %17 = load i8, ptr %might_have_pending_waits.i.i, align 8 - %tobool.i.i.i = trunc i8 %17 to i1 + %16 = load i8, ptr %might_have_pending_waits.i.i, align 8 + %tobool.i.i.i = trunc i8 %16 to i1 br i1 %tobool.i.i.i, label %if.end.i.i.i, label %invoke.cont8 if.end.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i %scheduler_.i.i.i = getelementptr inbounds i8, ptr %13, i64 88 - %18 = load ptr, ptr %scheduler_.i.i.i, align 8 + %17 = load ptr, ptr %scheduler_.i.i.i, align 8 %timer_queue_.i.i.i = getelementptr inbounds i8, ptr %13, i64 40 - %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %18, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) + %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %17, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) to label %call2.i.i.i.noexc unwind label %lpad.body call2.i.i.i.noexc: ; preds = %if.end.i.i.i @@ -29412,10 +29409,10 @@ invoke.cont8: ; preds = %call2.i.i.i.noexc, ret void lpad.body: ; preds = %if.end.i.i.i - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %this) #28 - resume { ptr, i32 } %19 + resume { ptr, i32 } %18 } ; Function Attrs: mustprogress nounwind uwtable @@ -33837,8 +33834,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -99807,7 +99804,6 @@ entry.resume: %ref.tmp44 = alloca %"struct.async_simple::Unit", align 1 %timer2.reload.addr = getelementptr inbounds i8, ptr %0, i64 96 %promise3.reload.addr = getelementptr inbounds i8, ptr %0, i64 80 - %duration4.reload.addr = getelementptr inbounds i8, ptr %0, i64 104 %msg5.reload.addr = getelementptr inbounds i8, ptr %0, i64 48 %ref.tmp16.reload.addr = getelementptr inbounds i8, ptr %0, i64 112 %ref.tmp17.reload.addr = getelementptr inbounds i8, ptr %0, i64 120 @@ -99818,43 +99814,41 @@ entry.resume: br i1 %switch, label %init.ready, label %await.ready init.ready: ; preds = %entry.resume + %duration4.reload.addr = getelementptr inbounds i8, ptr %0, i64 104 %1 = load ptr, ptr %timer2.reload.addr, align 8 %2 = load ptr, ptr %1, align 8 %call.i.i.i = tail call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #28 %cmp.i.i.i.i = icmp sgt i64 %call.i.i.i, -1 + %3 = load i64, ptr %duration4.reload.addr, align 8 br i1 %cmp.i.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i if.then.i.i.i: ; preds = %init.ready %sub.i.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i.i - %3 = load i64, ptr %duration4.reload.addr, align 8 %cmp.i8.i.i.i = icmp slt i64 %sub.i.i.i.i.i, %3 br i1 %cmp.i8.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i if.else.i.i.i: ; preds = %init.ready - %sub.i.i11.i.i.i = and i64 %call.i.i.i, 9223372036854775807 - %sub.i.i.i.i = sub nsw i64 0, %sub.i.i11.i.i.i - %4 = load i64, ptr %duration4.reload.addr, align 8 - %cmp.i13.i.i.i = icmp slt i64 %4, %sub.i.i.i.i - br i1 %cmp.i13.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i + %4 = xor i64 %call.i.i.i, 9223372036854775807 + %cmp.i13.not.i.i.i = icmp slt i64 %4, %3 + br i1 %cmp.i13.not.i.i.i, label %if.end41.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i if.end41.i.i.i: ; preds = %if.else.i.i.i, %if.then.i.i.i - %5 = phi i64 [ %4, %if.else.i.i.i ], [ %3, %if.then.i.i.i ] - %add.i.i.i.i.i = add nsw i64 %5, %call.i.i.i + %add.i.i.i.i.i = add nsw i64 %3, %call.i.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i: ; preds = %if.end41.i.i.i, %if.else.i.i.i, %if.then.i.i.i %retval.sroa.0.0.i.i.i = phi i64 [ %add.i.i.i.i.i, %if.end41.i.i.i ], [ 9223372036854775807, %if.then.i.i.i ], [ -9223372036854775808, %if.else.i.i.i ] %might_have_pending_waits.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 16 - %6 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %6 to i1 + %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %invoke.cont14 if.end.i.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %scheduler_.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 88 - %7 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 40 %timer_data.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 24 - %call2.i.i.i.i3 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %7, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i3 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) to label %call2.i.i.i.i.noexc unwind label %lpad13 call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i @@ -99864,15 +99858,15 @@ call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i invoke.cont14: ; preds = %call2.i.i.i.i.noexc, %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %implementation_.i.i = getelementptr inbounds i8, ptr %1, i64 8 store i64 %retval.sroa.0.0.i.i.i, ptr %implementation_.i.i, align 8 - %8 = load ptr, ptr %timer2.reload.addr, align 8 + %7 = load ptr, ptr %timer2.reload.addr, align 8 %call.i4 = invoke noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #45 to label %CoroSave142 unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont14 - %9 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } catch ptr null - %10 = extractvalue { ptr, i32 } %9, 0 - tail call void @__clang_call_terminate(ptr %10) #43 + %9 = extractvalue { ptr, i32 } %8, 0 + tail call void @__clang_call_terminate(ptr %9) #43 unreachable CoroSave142: ; preds = %invoke.cont14 @@ -99881,18 +99875,18 @@ CoroSave142: ; preds = %invoke.cont14 store ptr @_ZN7coro_io12period_timer11async_awaitEv.destroy, ptr %destroy.addr.i, align 8 %__promise.reload.addr.i = getelementptr inbounds i8, ptr %call.i4, i64 16 %this1.spill.addr.i = getelementptr inbounds i8, ptr %call.i4, i64 104 - store ptr %8, ptr %this1.spill.addr.i, align 8 + store ptr %7, ptr %this1.spill.addr.i, align 8 %_M_index.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i4, i64 40 store i8 0, ptr %_M_index.i.i.i.i.i.i.i.i.i.i, align 8 %index.addr65.i = getelementptr inbounds i8, ptr %call.i4, i64 112 store i2 0, ptr %index.addr65.i, align 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !1141) %_executor.i = getelementptr inbounds i8, ptr %0, i64 24 - %11 = load ptr, ptr %_executor.i, align 8, !noalias !1141 + %10 = load ptr, ptr %_executor.i, align 8, !noalias !1141 tail call void @llvm.experimental.noalias.scope.decl(metadata !1144) tail call void @llvm.experimental.noalias.scope.decl(metadata !1147) %_executor.i.i.i = getelementptr inbounds i8, ptr %call.i4, i64 24 - store ptr %11, ptr %_executor.i.i.i, align 8, !noalias !1150 + store ptr %10, ptr %_executor.i.i.i, align 8, !noalias !1150 store ptr null, ptr %ref.tmp17.reload.addr, align 8, !noalias !1150 store ptr %call.i4, ptr %ref.tmp16.reload.addr, align 8, !alias.scope !1150 store i2 1, ptr %index.addr, align 8 @@ -99901,22 +99895,22 @@ CoroSave142: ; preds = %invoke.cont14 ret void lpad13: ; preds = %call.i.i.i58.noexc, %if.end82, %if.end.i.i.i.i - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null br label %catch await.ready: ; preds = %entry.resume - %13 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %14 = getelementptr inbounds i8, ptr %13, i64 16 - %call2.i5 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %14) + %12 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %13 = getelementptr inbounds i8, ptr %12, i64 16 + %call2.i5 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %13) to label %call2.i.noexc unwind label %lpad32 call2.i.noexc: ; preds = %await.ready - %15 = load i8, ptr %call2.i5, align 1 - %16 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %17 = getelementptr inbounds i8, ptr %16, i64 8 - %18 = load ptr, ptr %17, align 8 - invoke fastcc void %18(ptr nonnull %16) + %14 = load i8, ptr %call2.i5, align 1 + %15 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %16 = getelementptr inbounds i8, ptr %15, i64 8 + %17 = load ptr, ptr %16, align 8 + invoke fastcc void %17(ptr nonnull %15) to label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiter12await_resumeEv.exit unwind label %lpad32 _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiter12await_resumeEv.exit: ; preds = %call2.i.noexc @@ -99924,16 +99918,16 @@ _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiter12await_resumeEv.exit %this1.reload.addr157 = getelementptr inbounds i8, ptr %0, i64 128 %this1.reload158 = load ptr, ptr %this1.reload.addr157, align 8 %is_timeout_ = getelementptr inbounds i8, ptr %this1.reload158, i64 4073 - %frombool = and i8 %15, 1 + %frombool = and i8 %14, 1 store i8 %frombool, ptr %is_timeout_, align 1 - %19 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %cmp.i.not.i.i.i = icmp eq ptr %19, null + %18 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %cmp.i.not.i.i.i = icmp eq ptr %18, null br i1 %cmp.i.not.i.i.i, label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, label %if.then.i.i.i6 if.then.i.i.i6: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiter12await_resumeEv.exit - %20 = getelementptr inbounds i8, ptr %19, i64 8 - %21 = load ptr, ptr %20, align 8 - invoke fastcc void %21(ptr nonnull %19) + %19 = getelementptr inbounds i8, ptr %18, i64 8 + %20 = load ptr, ptr %19, align 8 + invoke fastcc void %20(ptr nonnull %18) to label %invoke.cont.i.i.i unwind label %terminate.lpad.i.i.i invoke.cont.i.i.i: ; preds = %if.then.i.i.i6 @@ -99941,21 +99935,21 @@ invoke.cont.i.i.i: ; preds = %if.then.i.i.i6 br label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit terminate.lpad.i.i.i: ; preds = %if.then.i.i.i6 - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } catch ptr null - %23 = extractvalue { ptr, i32 } %22, 0 - tail call void @__clang_call_terminate(ptr %23) #43 + %22 = extractvalue { ptr, i32 } %21, 0 + tail call void @__clang_call_terminate(ptr %22) #43 unreachable _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiter12await_resumeEv.exit, %invoke.cont.i.i.i - %24 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i = icmp eq ptr %24, null + %23 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i = icmp eq ptr %23, null br i1 %cmp.i.not.i.i, label %_ZN12async_simple4coro4LazyIbED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit - %25 = getelementptr inbounds i8, ptr %24, i64 8 - %26 = load ptr, ptr %25, align 8 - invoke fastcc void %26(ptr nonnull %24) + %24 = getelementptr inbounds i8, ptr %23, i64 8 + %25 = load ptr, ptr %24, align 8 + invoke fastcc void %25(ptr nonnull %23) to label %invoke.cont.i.i unwind label %terminate.lpad.i.i invoke.cont.i.i: ; preds = %if.then.i.i @@ -99963,17 +99957,17 @@ invoke.cont.i.i: ; preds = %if.then.i.i br label %_ZN12async_simple4coro4LazyIbED2Ev.exit terminate.lpad.i.i: ; preds = %if.then.i.i - %27 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %28 = extractvalue { ptr, i32 } %27, 0 - tail call void @__clang_call_terminate(ptr %28) #43 + %27 = extractvalue { ptr, i32 } %26, 0 + tail call void @__clang_call_terminate(ptr %27) #43 unreachable _ZN12async_simple4coro4LazyIbED2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, %invoke.cont.i.i %this1.reload156 = load ptr, ptr %this1.reload.addr157, align 8 %is_timeout_43 = getelementptr inbounds i8, ptr %this1.reload156, i64 4073 - %29 = load i8, ptr %is_timeout_43, align 1 - %tobool = trunc i8 %29 to i1 + %28 = load i8, ptr %is_timeout_43, align 1 + %tobool = trunc i8 %28 to i1 br i1 %tobool, label %if.end, label %if.then if.then: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit @@ -99985,14 +99979,14 @@ invoke.cont46: ; preds = %if.then call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp44) #28 %_value.i = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 40 - %30 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 - %cmp.i.not.i.i.i.i.i = icmp eq i8 %30, -1 + %29 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 + %cmp.i.not.i.i.i.i.i = icmp eq i8 %29, -1 br i1 %cmp.i.not.i.i.i.i.i, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit, label %if.end.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %invoke.cont46 - %switch.i.i.i.i.i.i = icmp ult i8 %30, 2 - %31 = load ptr, ptr %_value.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %31, null + %switch.i.i.i.i.i.i = icmp ult i8 %29, 2 + %30 = load ptr, ptr %_value.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %30, null %or.cond.i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i br i1 %or.cond.i.i.i.i.i.i, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -100010,16 +100004,16 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave146 lpad32: ; preds = %call2.i.noexc, %await.ready - %32 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } catch ptr null - %33 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %cmp.i.not.i.i.i7 = icmp eq ptr %33, null + %32 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %cmp.i.not.i.i.i7 = icmp eq ptr %32, null br i1 %cmp.i.not.i.i.i7, label %ehcleanup, label %if.then.i.i.i8 if.then.i.i.i8: ; preds = %lpad32 - %34 = getelementptr inbounds i8, ptr %33, i64 8 - %35 = load ptr, ptr %34, align 8 - invoke fastcc void %35(ptr nonnull %33) + %33 = getelementptr inbounds i8, ptr %32, i64 8 + %34 = load ptr, ptr %33, align 8 + invoke fastcc void %34(ptr nonnull %32) to label %invoke.cont.i.i.i10 unwind label %terminate.lpad.i.i.i9 invoke.cont.i.i.i10: ; preds = %if.then.i.i.i8 @@ -100027,21 +100021,21 @@ invoke.cont.i.i.i10: ; preds = %if.then.i.i.i8 br label %ehcleanup terminate.lpad.i.i.i9: ; preds = %if.then.i.i.i8 - %36 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } catch ptr null - %37 = extractvalue { ptr, i32 } %36, 0 - tail call void @__clang_call_terminate(ptr %37) #43 + %36 = extractvalue { ptr, i32 } %35, 0 + tail call void @__clang_call_terminate(ptr %36) #43 unreachable ehcleanup: ; preds = %invoke.cont.i.i.i10, %lpad32 - %38 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i12 = icmp eq ptr %38, null + %37 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i12 = icmp eq ptr %37, null br i1 %cmp.i.not.i.i12, label %catch, label %if.then.i.i13 if.then.i.i13: ; preds = %ehcleanup - %39 = getelementptr inbounds i8, ptr %38, i64 8 - %40 = load ptr, ptr %39, align 8 - invoke fastcc void %40(ptr nonnull %38) + %38 = getelementptr inbounds i8, ptr %37, i64 8 + %39 = load ptr, ptr %38, align 8 + invoke fastcc void %39(ptr nonnull %37) to label %invoke.cont.i.i15 unwind label %terminate.lpad.i.i14 invoke.cont.i.i15: ; preds = %if.then.i.i13 @@ -100049,26 +100043,26 @@ invoke.cont.i.i15: ; preds = %if.then.i.i13 br label %catch terminate.lpad.i.i14: ; preds = %if.then.i.i13 - %41 = landingpad { ptr, i32 } + %40 = landingpad { ptr, i32 } catch ptr null - %42 = extractvalue { ptr, i32 } %41, 0 - tail call void @__clang_call_terminate(ptr %42) #43 + %41 = extractvalue { ptr, i32 } %40, 0 + tail call void @__clang_call_terminate(ptr %41) #43 unreachable lpad45: ; preds = %if.then - %43 = landingpad { ptr, i32 } + %42 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp44) #28 br label %catch if.end: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit - %44 = load atomic i8, ptr @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance acquire, align 8 - %guard.uninitialized.i = icmp eq i8 %44, 0 + %43 = load atomic i8, ptr @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance acquire, align 8 + %guard.uninitialized.i = icmp eq i8 %43, 0 br i1 %guard.uninitialized.i, label %init.check.i, label %invoke.cont49, !prof !5 init.check.i: ; preds = %if.end - %45 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 - %tobool.not.i = icmp eq i32 %45, 0 + %44 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 + %tobool.not.i = icmp eq i32 %44, 0 br i1 %tobool.not.i, label %invoke.cont49, label %init.i init.i: ; preds = %init.check.i @@ -100076,19 +100070,19 @@ init.i: ; preds = %init.check.i to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %init.i - %46 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN7easylog6loggerILm0EED2Ev, ptr nonnull @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, ptr nonnull @__dso_handle) #28 + %45 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN7easylog6loggerILm0EED2Ev, ptr nonnull @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, ptr nonnull @__dso_handle) #28 tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 br label %invoke.cont49 lpad.i: ; preds = %init.i - %47 = landingpad { ptr, i32 } + %46 = landingpad { ptr, i32 } catch ptr null tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 br label %catch invoke.cont49: ; preds = %invoke.cont.i, %init.check.i, %if.end - %48 = load i32, ptr @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, align 8 - %cmp.i = icmp slt i32 %48, 5 + %47 = load i32, ptr @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, align 8 + %cmp.i = icmp slt i32 %47, 5 br i1 %cmp.i, label %if.else, label %if.end82 if.else: ; preds = %invoke.cont49 @@ -100105,63 +100099,63 @@ if.else: ; preds = %invoke.cont49 invoke.cont67: ; preds = %if.else %ss_.i = getelementptr inbounds i8, ptr %ref.tmp54, i64 48 - %49 = load ptr, ptr %msg5.reload.addr, align 8 + %48 = load ptr, ptr %msg5.reload.addr, align 8 %_M_string_length.i.i = getelementptr inbounds i8, ptr %0, i64 56 - %50 = load i64, ptr %_M_string_length.i.i, align 8 + %49 = load i64, ptr %_M_string_length.i.i, align 8 %_M_string_length.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp54, i64 56 - %51 = load i64, ptr %_M_string_length.i.i.i.i, align 8 - %sub3.i.i.i = sub i64 9223372036854775807, %51 - %cmp.i.i.i = icmp ult i64 %sub3.i.i.i, %50 + %50 = load i64, ptr %_M_string_length.i.i.i.i, align 8 + %sub3.i.i.i = sub i64 9223372036854775807, %50 + %cmp.i.i.i = icmp ult i64 %sub3.i.i.i, %49 br i1 %cmp.i.i.i, label %if.then.i.i.i42.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i: ; preds = %invoke.cont67 - %add.i.i.i = add i64 %51, %50 - %52 = load ptr, ptr %ss_.i, align 8 - %53 = getelementptr inbounds i8, ptr %ref.tmp54, i64 64 - %cmp.i.i.i.i.i = icmp eq ptr %52, %53 + %add.i.i.i = add i64 %50, %49 + %51 = load ptr, ptr %ss_.i, align 8 + %52 = getelementptr inbounds i8, ptr %ref.tmp54, i64 64 + %cmp.i.i.i.i.i = icmp eq ptr %51, %52 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %cmp3.i.i.i.i.i = icmp ult i64 %51, 16 + %cmp3.i.i.i.i.i = icmp ult i64 %50, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i: ; preds = %if.then.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i - %54 = load i64, ptr %53, align 8 - %cond.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 15, i64 %54 + %53 = load i64, ptr %52, align 8 + %cond.i.i.i.i = select i1 %cmp.i.i.i.i.i, i64 15, i64 %53 %cmp.not.i.i.i = icmp ugt i64 %add.i.i.i, %cond.i.i.i.i br i1 %cmp.not.i.i.i, label %if.else.i.i.i18, label %if.then.i3.i.i if.then.i3.i.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i - %tobool.not.i.i.i = icmp eq i64 %50, 0 + %tobool.not.i.i.i = icmp eq i64 %49, 0 br i1 %tobool.not.i.i.i, label %invoke.cont71, label %if.then3.i.i.i if.then3.i.i.i: ; preds = %if.then.i3.i.i - %add.ptr.i.i.i = getelementptr inbounds i8, ptr %52, i64 %51 - %cond.i.i.i = icmp eq i64 %50, 1 + %add.ptr.i.i.i = getelementptr inbounds i8, ptr %51, i64 %50 + %cond.i.i.i = icmp eq i64 %49, 1 br i1 %cond.i.i.i, label %if.then.i.i.i.i, label %if.end.i.i.i.i.i17 if.then.i.i.i.i: ; preds = %if.then3.i.i.i - %55 = load i8, ptr %49, align 1 - store i8 %55, ptr %add.ptr.i.i.i, align 1 + %54 = load i8, ptr %48, align 1 + store i8 %54, ptr %add.ptr.i.i.i, align 1 br label %invoke.cont71 if.end.i.i.i.i.i17: ; preds = %if.then3.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i.i, ptr align 1 %49, i64 %50, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr.i.i.i, ptr align 1 %48, i64 %49, i1 false) br label %invoke.cont71 if.else.i.i.i18: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ss_.i, i64 noundef %51, i64 noundef 0, ptr noundef %49, i64 noundef %50) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ss_.i, i64 noundef %50, i64 noundef 0, ptr noundef %48, i64 noundef %49) to label %invoke.cont71 unwind label %lpad68 invoke.cont71: ; preds = %if.end.i.i.i.i.i17, %if.then.i.i.i.i, %if.then.i3.i.i, %if.else.i.i.i18 store i64 %add.i.i.i, ptr %_M_string_length.i.i.i.i, align 8 - %56 = load ptr, ptr %ss_.i, align 8 - %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %56, i64 %add.i.i.i + %55 = load ptr, ptr %ss_.i, align 8 + %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %55, i64 %add.i.i.i store i8 0, ptr %arrayidx.i.i.i.i, align 1 - %57 = load i64, ptr %_M_string_length.i.i.i.i, align 8 - %58 = and i64 %57, -8 - %cmp.i.i.i25 = icmp eq i64 %58, 9223372036854775800 + %56 = load i64, ptr %_M_string_length.i.i.i.i, align 8 + %57 = and i64 %56, -8 + %cmp.i.i.i25 = icmp eq i64 %57, 9223372036854775800 br i1 %cmp.i.i.i25, label %if.then.i.i.i42.invoke, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i26 if.then.i.i.i42.invoke: ; preds = %invoke.cont71, %invoke.cont67 @@ -100172,43 +100166,43 @@ if.then.i.i.i42.cont: ; preds = %if.then.i.i.i42.inv unreachable _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i26: ; preds = %invoke.cont71 - %add.i.i.i27 = add nsw i64 %57, 8 - %59 = load ptr, ptr %ss_.i, align 8 - %cmp.i.i.i.i.i28 = icmp eq ptr %59, %53 + %add.i.i.i27 = add nsw i64 %56, 8 + %58 = load ptr, ptr %ss_.i, align 8 + %cmp.i.i.i.i.i28 = icmp eq ptr %58, %52 br i1 %cmp.i.i.i.i.i28, label %if.then.i.i.i.i.i40, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i29 if.then.i.i.i.i.i40: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i26 - %cmp3.i.i.i.i.i41 = icmp ult i64 %57, 16 + %cmp3.i.i.i.i.i41 = icmp ult i64 %56, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i.i41) br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i29 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i29: ; preds = %if.then.i.i.i.i.i40, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc.exit.i.i26 - %60 = load i64, ptr %53, align 8 - %cond.i.i.i.i30 = select i1 %cmp.i.i.i.i.i28, i64 15, i64 %60 + %59 = load i64, ptr %52, align 8 + %cond.i.i.i.i30 = select i1 %cmp.i.i.i.i.i28, i64 15, i64 %59 %cmp.not.i.i.i31 = icmp ugt i64 %add.i.i.i27, %cond.i.i.i.i30 br i1 %cmp.not.i.i.i31, label %if.else.i.i.i39, label %if.end.i.i.i.i.i36 if.end.i.i.i.i.i36: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i29 - %add.ptr.i.i.i34 = getelementptr inbounds i8, ptr %59, i64 %57 + %add.ptr.i.i.i34 = getelementptr inbounds i8, ptr %58, i64 %56 store i64 8391735962092794912, ptr %add.ptr.i.i.i34, align 1 br label %invoke.cont73 if.else.i.i.i39: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i.i29 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ss_.i, i64 noundef %57, i64 noundef 0, ptr noundef nonnull @.str.990, i64 noundef 8) + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %ss_.i, i64 noundef %56, i64 noundef 0, ptr noundef nonnull @.str.990, i64 noundef 8) to label %invoke.cont73 unwind label %lpad68 invoke.cont73: ; preds = %if.end.i.i.i.i.i36, %if.else.i.i.i39 store i64 %add.i.i.i27, ptr %_M_string_length.i.i.i.i, align 8 - %61 = load ptr, ptr %ss_.i, align 8 - %arrayidx.i.i.i.i37 = getelementptr inbounds i8, ptr %61, i64 %add.i.i.i27 + %60 = load ptr, ptr %ss_.i, align 8 + %arrayidx.i.i.i.i37 = getelementptr inbounds i8, ptr %60, i64 %add.i.i.i27 store i8 0, ptr %arrayidx.i.i.i.i37, align 1 - %62 = load atomic i8, ptr @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance acquire, align 8 - %guard.uninitialized.i45 = icmp eq i8 %62, 0 + %61 = load atomic i8, ptr @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance acquire, align 8 + %guard.uninitialized.i45 = icmp eq i8 %61, 0 br i1 %guard.uninitialized.i45, label %init.check.i46, label %invoke.cont75, !prof !5 init.check.i46: ; preds = %invoke.cont73 - %63 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 - %tobool.not.i47 = icmp eq i32 %63, 0 + %62 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 + %tobool.not.i47 = icmp eq i32 %62, 0 br i1 %tobool.not.i47, label %invoke.cont75, label %init.i48 init.i48: ; preds = %init.check.i46 @@ -100216,12 +100210,12 @@ init.i48: ; preds = %init.check.i46 to label %invoke.cont.i50 unwind label %lpad.i49 invoke.cont.i50: ; preds = %init.i48 - %64 = call i32 @__cxa_atexit(ptr nonnull @_ZN7easylog6loggerILm0EED2Ev, ptr nonnull @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, ptr nonnull @__dso_handle) #28 + %63 = call i32 @__cxa_atexit(ptr nonnull @_ZN7easylog6loggerILm0EED2Ev, ptr nonnull @_ZZN7easylog6loggerILm0EE8instanceEvE8instance, ptr nonnull @__dso_handle) #28 call void @__cxa_guard_release(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 br label %invoke.cont75 lpad.i49: ; preds = %init.i48 - %65 = landingpad { ptr, i32 } + %64 = landingpad { ptr, i32 } catch ptr null call void @__cxa_guard_abort(ptr nonnull @_ZGVZN7easylog6loggerILm0EE8instanceEvE8instance) #28 br label %lpad68.body @@ -100231,37 +100225,37 @@ invoke.cont75: ; preds = %invoke.cont.i50, %i to label %invoke.cont77 unwind label %lpad68 invoke.cont77: ; preds = %invoke.cont75 - %66 = load ptr, ptr %ss_.i, align 8 - %cmp.i.i.i.i55 = icmp eq ptr %66, %53 + %65 = load ptr, ptr %ss_.i, align 8 + %cmp.i.i.i.i55 = icmp eq ptr %65, %52 br i1 %cmp.i.i.i.i55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i56 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %invoke.cont77 - %67 = load i64, ptr %_M_string_length.i.i.i.i, align 8 - %cmp3.i.i.i.i = icmp ult i64 %67, 16 + %66 = load i64, ptr %_M_string_length.i.i.i.i, align 8 + %cmp3.i.i.i.i = icmp ult i64 %66, 16 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i if.then.i.i.i56: ; preds = %invoke.cont77 - call void @_ZdlPv(ptr noundef %66) #42 + call void @_ZdlPv(ptr noundef %65) #42 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %if.then.i.i.i56, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %ss_.i) #28 %file_str_.i = getelementptr inbounds i8, ptr %ref.tmp54, i64 16 - %68 = load ptr, ptr %file_str_.i, align 8 - %69 = getelementptr inbounds i8, ptr %ref.tmp54, i64 32 - %cmp.i.i.i1.i = icmp eq ptr %68, %69 + %67 = load ptr, ptr %file_str_.i, align 8 + %68 = getelementptr inbounds i8, ptr %ref.tmp54, i64 32 + %cmp.i.i.i1.i = icmp eq ptr %67, %68 br i1 %cmp.i.i.i1.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i3.i, label %if.then.i.i2.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i3.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i %_M_string_length.i.i.i4.i = getelementptr inbounds i8, ptr %ref.tmp54, i64 24 - %70 = load i64, ptr %_M_string_length.i.i.i4.i, align 8 - %cmp3.i.i.i5.i = icmp ult i64 %70, 16 + %69 = load i64, ptr %_M_string_length.i.i.i4.i, align 8 + %cmp3.i.i.i5.i = icmp ult i64 %69, 16 call void @llvm.assume(i1 %cmp3.i.i.i5.i) br label %_ZN7easylog8record_tD2Ev.exit if.then.i.i2.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - call void @_ZdlPv(ptr noundef %68) #42 + call void @_ZdlPv(ptr noundef %67) #42 br label %_ZN7easylog8record_tD2Ev.exit _ZN7easylog8record_tD2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i3.i, %if.then.i.i2.i @@ -100271,22 +100265,22 @@ _ZN7easylog8record_tD2Ev.exit: ; preds = %_ZNKSt7__cxx1112bas br label %if.end82 lpad62: ; preds = %if.else - %71 = landingpad { ptr, i32 } + %70 = landingpad { ptr, i32 } catch ptr null br label %ehcleanup79 lpad68: ; preds = %if.then.i.i.i42.invoke, %invoke.cont75, %if.else.i.i.i39, %if.else.i.i.i18 - %72 = landingpad { ptr, i32 } + %71 = landingpad { ptr, i32 } catch ptr null br label %lpad68.body lpad68.body: ; preds = %lpad.i49, %lpad68 - %eh.lpad-body51 = phi { ptr, i32 } [ %72, %lpad68 ], [ %65, %lpad.i49 ] + %eh.lpad-body51 = phi { ptr, i32 } [ %71, %lpad68 ], [ %64, %lpad.i49 ] call void @_ZN7easylog8record_tD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %ref.tmp54) #28 br label %ehcleanup79 ehcleanup79: ; preds = %lpad68.body, %lpad62 - %.pn1 = phi { ptr, i32 } [ %eh.lpad-body51, %lpad68.body ], [ %71, %lpad62 ] + %.pn1 = phi { ptr, i32 } [ %eh.lpad-body51, %lpad68.body ], [ %70, %lpad62 ] call void @llvm.lifetime.end.p0(i64 29, ptr nonnull %ref.tmp60) #28 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %ref.tmp54) #28 br label %catch @@ -100294,25 +100288,25 @@ ehcleanup79: ; preds = %lpad68.body, %lpad6 if.end82: ; preds = %invoke.cont49, %_ZN7easylog8record_tD2Ev.exit %this1.reload = load ptr, ptr %this1.reload.addr157, align 8 %socket_ = getelementptr inbounds i8, ptr %this1.reload, i64 3512 - %73 = load ptr, ptr %socket_, align 8 + %72 = load ptr, ptr %socket_, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ec.i) store i32 0, ptr %ec.i, align 8 %_M_cat.i.i = getelementptr inbounds i8, ptr %ec.i, i64 8 %call.i.i = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V215system_categoryEv() #46 store ptr %call.i.i, ptr %_M_cat.i.i, align 8 - %implementation_.i.i.i = getelementptr inbounds i8, ptr %73, i64 8 - %74 = load i32, ptr %implementation_.i.i.i, align 8 - %call.i.i.i5859 = invoke noundef i32 @_ZN4asio6detail10socket_ops8shutdownEiiRSt10error_code(i32 noundef %74, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %ec.i) + %implementation_.i.i.i = getelementptr inbounds i8, ptr %72, i64 8 + %73 = load i32, ptr %implementation_.i.i.i, align 8 + %call.i.i.i5859 = invoke noundef i32 @_ZN4asio6detail10socket_ops8shutdownEiiRSt10error_code(i32 noundef %73, i32 noundef 2, ptr noundef nonnull align 8 dereferenceable(16) %ec.i) to label %call.i.i.i58.noexc unwind label %lpad13 call.i.i.i58.noexc: ; preds = %if.end82 - %75 = load ptr, ptr %73, align 8 - %add.ptr.i.i = getelementptr inbounds i8, ptr %75, i64 40 + %74 = load ptr, ptr %72, align 8 + %add.ptr.i.i = getelementptr inbounds i8, ptr %74, i64 40 %call4.i.i60 = invoke { i32, ptr } @_ZN4asio6detail28reactive_socket_service_base5closeERNS1_24base_implementation_typeERSt10error_code(ptr noundef nonnull align 8 dereferenceable(24) %add.ptr.i.i, ptr noundef nonnull align 8 dereferenceable(16) %implementation_.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ec.i) to label %invoke.cont84 unwind label %lpad13 invoke.cont84: ; preds = %call.i.i.i58.noexc - %has_closed_.i = getelementptr inbounds i8, ptr %73, i64 88 + %has_closed_.i = getelementptr inbounds i8, ptr %72, i64 88 store atomic i8 1, ptr %has_closed_.i seq_cst, align 1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ec.i) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp85) #28 @@ -100323,14 +100317,14 @@ invoke.cont87: ; preds = %invoke.cont84 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp85) #28 %_value.i61 = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i62 = getelementptr inbounds i8, ptr %0, i64 40 - %76 = load i8, ptr %_M_index.i.i.i.i.i.i62, align 8 - %cmp.i.not.i.i.i.i.i63 = icmp eq i8 %76, -1 + %75 = load i8, ptr %_M_index.i.i.i.i.i.i62, align 8 + %cmp.i.not.i.i.i.i.i63 = icmp eq i8 %75, -1 br i1 %cmp.i.not.i.i.i.i.i63, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit72, label %if.end.i.i.i.i.i64 if.end.i.i.i.i.i64: ; preds = %invoke.cont87 - %switch.i.i.i.i.i.i65 = icmp ult i8 %76, 2 - %77 = load ptr, ptr %_value.i61, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i66 = icmp eq ptr %77, null + %switch.i.i.i.i.i.i65 = icmp ult i8 %75, 2 + %76 = load ptr, ptr %_value.i61, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i66 = icmp eq ptr %76, null %or.cond.i.i.i.i.i.i67 = select i1 %switch.i.i.i.i.i.i65, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i66 br i1 %or.cond.i.i.i.i.i.i67, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i69, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i68 @@ -100348,15 +100342,15 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave146 lpad86: ; preds = %invoke.cont84 - %78 = landingpad { ptr, i32 } + %77 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp85) #28 br label %catch catch: ; preds = %invoke.cont.i.i15, %ehcleanup, %lpad13, %lpad.i, %lpad86, %ehcleanup79, %lpad45 - %.pn2 = phi { ptr, i32 } [ %78, %lpad86 ], [ %.pn1, %ehcleanup79 ], [ %43, %lpad45 ], [ %12, %lpad13 ], [ %47, %lpad.i ], [ %32, %ehcleanup ], [ %32, %invoke.cont.i.i15 ] + %.pn2 = phi { ptr, i32 } [ %77, %lpad86 ], [ %.pn1, %ehcleanup79 ], [ %42, %lpad45 ], [ %11, %lpad13 ], [ %46, %lpad.i ], [ %31, %ehcleanup ], [ %31, %invoke.cont.i.i15 ] %exn.slot.0 = extractvalue { ptr, i32 } %.pn2, 0 - %79 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 + %78 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 call void @_ZN12async_simple4coro6detail11LazyPromiseIbE19unhandled_exceptionEv(ptr noundef nonnull align 8 dereferenceable(32) %__promise.reload.addr) #28 invoke void @__cxa_end_catch() to label %CoroSave146 unwind label %lpad90 @@ -100365,16 +100359,16 @@ CoroSave146: ; preds = %_ZN12async_simple4c store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 %retval.sroa.0.0.copyload.i73 = load ptr, ptr %__promise.reload.addr, align 8 - %80 = load ptr, ptr %retval.sroa.0.0.copyload.i73, align 8 - musttail call fastcc void %80(ptr nonnull %retval.sroa.0.0.copyload.i73) + %79 = load ptr, ptr %retval.sroa.0.0.copyload.i73, align 8 + musttail call fastcc void %79(ptr nonnull %retval.sroa.0.0.copyload.i73) ret void lpad90: ; preds = %catch - %81 = landingpad { ptr, i32 } + %80 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 - resume { ptr, i32 } %81 + resume { ptr, i32 } %80 } ; Function Attrs: mustprogress uwtable diff --git a/bench/yalantinglibs/optimized/file_client.cpp.ll b/bench/yalantinglibs/optimized/file_client.cpp.ll index 9cbc021e91f..21369ed9605 100644 --- a/bench/yalantinglibs/optimized/file_client.cpp.ll +++ b/bench/yalantinglibs/optimized/file_client.cpp.ll @@ -16982,8 +16982,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -17315,37 +17315,34 @@ _ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_t %13 = load ptr, ptr %this, align 8 %call.i.i = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #28 %cmp.i.i.i = icmp sgt i64 %call.i.i, -1 + %14 = load i64, ptr %expiry_time, align 8 br i1 %cmp.i.i.i, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit %sub.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i - %14 = load i64, ptr %expiry_time, align 8 %cmp.i8.i.i = icmp slt i64 %sub.i.i.i.i, %14 br i1 %cmp.i8.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i if.else.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit - %sub.i.i11.i.i = and i64 %call.i.i, 9223372036854775807 - %sub.i.i.i = sub nsw i64 0, %sub.i.i11.i.i - %15 = load i64, ptr %expiry_time, align 8 - %cmp.i13.i.i = icmp slt i64 %15, %sub.i.i.i - br i1 %cmp.i13.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i + %15 = xor i64 %call.i.i, 9223372036854775807 + %cmp.i13.not.i.i = icmp slt i64 %15, %14 + br i1 %cmp.i13.not.i.i, label %if.end41.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i if.end41.i.i: ; preds = %if.else.i.i, %if.then.i.i - %16 = phi i64 [ %15, %if.else.i.i ], [ %14, %if.then.i.i ] - %add.i.i.i.i = add nsw i64 %16, %call.i.i + %add.i.i.i.i = add nsw i64 %14, %call.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i: ; preds = %if.end41.i.i, %if.else.i.i, %if.then.i.i %retval.sroa.0.0.i.i = phi i64 [ %add.i.i.i.i, %if.end41.i.i ], [ 9223372036854775807, %if.then.i.i ], [ -9223372036854775808, %if.else.i.i ] - %17 = load i8, ptr %might_have_pending_waits.i.i, align 8 - %tobool.i.i.i = trunc i8 %17 to i1 + %16 = load i8, ptr %might_have_pending_waits.i.i, align 8 + %tobool.i.i.i = trunc i8 %16 to i1 br i1 %tobool.i.i.i, label %if.end.i.i.i, label %invoke.cont8 if.end.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i %scheduler_.i.i.i = getelementptr inbounds i8, ptr %13, i64 88 - %18 = load ptr, ptr %scheduler_.i.i.i, align 8 + %17 = load ptr, ptr %scheduler_.i.i.i, align 8 %timer_queue_.i.i.i = getelementptr inbounds i8, ptr %13, i64 40 - %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %18, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) + %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %17, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) to label %call2.i.i.i.noexc unwind label %lpad.body call2.i.i.i.noexc: ; preds = %if.end.i.i.i @@ -17357,10 +17354,10 @@ invoke.cont8: ; preds = %call2.i.i.i.noexc, ret void lpad.body: ; preds = %if.end.i.i.i - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %this) #28 - resume { ptr, i32 } %19 + resume { ptr, i32 } %18 } ; Function Attrs: mustprogress nounwind uwtable @@ -21782,8 +21779,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -54939,10 +54936,9 @@ if.then.i.i.i: ; preds = %invoke.cont br i1 %cmp.i8.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i if.else.i.i.i: ; preds = %invoke.cont - %sub.i.i11.i.i.i = and i64 %call.i.i.i, 9223372036854775807 - %sub.i.i.i.i = sub nsw i64 0, %sub.i.i11.i.i.i - %cmp.i13.i.i.i = icmp slt i64 %mul.i.i.i, %sub.i.i.i.i - br i1 %cmp.i13.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i + %4 = xor i64 %call.i.i.i, 9223372036854775807 + %cmp.i13.not.i.i.i = icmp slt i64 %4, %mul.i.i.i + br i1 %cmp.i13.not.i.i.i, label %if.end41.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i if.end41.i.i.i: ; preds = %if.else.i.i.i, %if.then.i.i.i %add.i.i.i.i.i = add nsw i64 %call.i.i.i, %mul.i.i.i @@ -54951,16 +54947,16 @@ if.end41.i.i.i: ; preds = %if.else.i.i.i, %if. _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i: ; preds = %if.end41.i.i.i, %if.else.i.i.i, %if.then.i.i.i %retval.sroa.0.0.i.i.i = phi i64 [ %add.i.i.i.i.i, %if.end41.i.i.i ], [ 9223372036854775807, %if.then.i.i.i ], [ -9223372036854775808, %if.else.i.i.i ] %might_have_pending_waits.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 16 - %4 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %4 to i1 + %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %invoke.cont14 if.end.i.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %scheduler_.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 88 - %5 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 40 %timer_data.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 24 - %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %5, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) to label %call2.i.i.i.i.noexc unwind label %lpad call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i @@ -54970,15 +54966,15 @@ call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i invoke.cont14: ; preds = %call2.i.i.i.i.noexc, %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %implementation_.i.i = getelementptr inbounds i8, ptr %1, i64 8 store i64 %retval.sroa.0.0.i.i.i, ptr %implementation_.i.i, align 8 - %6 = load ptr, ptr %timer2.reload.addr, align 8 + %7 = load ptr, ptr %timer2.reload.addr, align 8 %call.i3 = invoke noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #37 to label %CoroSave113 unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont14 - %7 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #38 + %9 = extractvalue { ptr, i32 } %8, 0 + tail call void @__clang_call_terminate(ptr %9) #38 unreachable CoroSave113: ; preds = %invoke.cont14 @@ -54987,18 +54983,18 @@ CoroSave113: ; preds = %invoke.cont14 store ptr @_ZN7coro_io12period_timer11async_awaitEv.destroy, ptr %destroy.addr.i, align 8 %__promise.reload.addr.i = getelementptr inbounds i8, ptr %call.i3, i64 16 %this1.spill.addr.i = getelementptr inbounds i8, ptr %call.i3, i64 104 - store ptr %6, ptr %this1.spill.addr.i, align 8 + store ptr %7, ptr %this1.spill.addr.i, align 8 %_M_index.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i3, i64 40 store i8 0, ptr %_M_index.i.i.i.i.i.i.i.i.i.i, align 8 %index.addr65.i = getelementptr inbounds i8, ptr %call.i3, i64 112 store i2 0, ptr %index.addr65.i, align 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !667) %_executor.i = getelementptr inbounds i8, ptr %0, i64 24 - %9 = load ptr, ptr %_executor.i, align 8, !noalias !667 + %10 = load ptr, ptr %_executor.i, align 8, !noalias !667 tail call void @llvm.experimental.noalias.scope.decl(metadata !670) tail call void @llvm.experimental.noalias.scope.decl(metadata !673) %_executor.i.i.i = getelementptr inbounds i8, ptr %call.i3, i64 24 - store ptr %9, ptr %_executor.i.i.i, align 8, !noalias !676 + store ptr %10, ptr %_executor.i.i.i, align 8, !noalias !676 store ptr null, ptr %ref.tmp17.reload.addr, align 8, !noalias !676 store ptr %call.i3, ptr %ref.tmp16.reload.addr, align 8, !alias.scope !676 store i2 1, ptr %index.addr, align 8 @@ -55007,35 +55003,35 @@ CoroSave113: ; preds = %invoke.cont14 ret void lpad: ; preds = %if.end.i.i.i.i - %10 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null br label %catch await.ready: ; preds = %entry.resume - %11 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 16 - %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %12) + %12 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %13 = getelementptr inbounds i8, ptr %12, i64 16 + %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %13) to label %call2.i.noexc unwind label %lpad32 call2.i.noexc: ; preds = %await.ready - %13 = load i8, ptr %call2.i4, align 1 - %tobool.i = trunc i8 %13 to i1 - %14 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %15 = getelementptr inbounds i8, ptr %14, i64 8 - %16 = load ptr, ptr %15, align 8 - invoke fastcc void %16(ptr nonnull %14) + %14 = load i8, ptr %call2.i4, align 1 + %tobool.i = trunc i8 %14 to i1 + %15 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %16 = getelementptr inbounds i8, ptr %15, i64 8 + %17 = load ptr, ptr %16, align 8 + invoke fastcc void %17(ptr nonnull %15) to label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit unwind label %lpad32 _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit: ; preds = %call2.i.noexc store ptr null, ptr %ref.tmp16.reload.addr, align 8 - %17 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i = icmp eq ptr %17, null + %18 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i = icmp eq ptr %18, null br i1 %cmp.i.not.i.i, label %_ZN12async_simple4coro4LazyIbED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit - %18 = getelementptr inbounds i8, ptr %17, i64 8 - %19 = load ptr, ptr %18, align 8 - invoke fastcc void %19(ptr nonnull %17) + %19 = getelementptr inbounds i8, ptr %18, i64 8 + %20 = load ptr, ptr %19, align 8 + invoke fastcc void %20(ptr nonnull %18) to label %invoke.cont.i.i unwind label %terminate.lpad.i.i invoke.cont.i.i: ; preds = %if.then.i.i @@ -55043,35 +55039,35 @@ invoke.cont.i.i: ; preds = %if.then.i.i br label %_ZN12async_simple4coro4LazyIbED2Ev.exit terminate.lpad.i.i: ; preds = %if.then.i.i - %20 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } catch ptr null - %21 = extractvalue { ptr, i32 } %20, 0 - tail call void @__clang_call_terminate(ptr %21) #38 + %22 = extractvalue { ptr, i32 } %21, 0 + tail call void @__clang_call_terminate(ptr %22) #38 unreachable _ZN12async_simple4coro4LazyIbED2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, %invoke.cont.i.i - %frombool = and i8 %13, 1 + %frombool = and i8 %14, 1 store i8 %frombool, ptr %is_timeout.reload.addr, align 2 br i1 %tobool.i, label %if.end, label %if.then if.then: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit - %22 = load ptr, ptr %promise4.reload.addr, align 8 + %23 = load ptr, ptr %promise4.reload.addr, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp43) #28 - invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %22, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp43) + invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %23, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp43) to label %invoke.cont45 unwind label %lpad44 invoke.cont45: ; preds = %if.then call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp43) #28 %_value.i = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 40 - %23 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 - %cmp.i.not.i.i.i.i.i = icmp eq i8 %23, -1 + %24 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 + %cmp.i.not.i.i.i.i.i = icmp eq i8 %24, -1 br i1 %cmp.i.not.i.i.i.i.i, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit, label %if.end.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %invoke.cont45 - %switch.i.i.i.i.i.i = icmp ult i8 %23, 2 - %24 = load ptr, ptr %_value.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %24, null + %switch.i.i.i.i.i.i = icmp ult i8 %24, 2 + %25 = load ptr, ptr %_value.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %25, null %or.cond.i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i br i1 %or.cond.i.i.i.i.i.i, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -55089,16 +55085,16 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave117 lpad32: ; preds = %call2.i.noexc, %await.ready - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %26 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %cmp.i.not.i.i.i6 = icmp eq ptr %26, null + %27 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %cmp.i.not.i.i.i6 = icmp eq ptr %27, null br i1 %cmp.i.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad32 - %27 = getelementptr inbounds i8, ptr %26, i64 8 - %28 = load ptr, ptr %27, align 8 - invoke fastcc void %28(ptr nonnull %26) + %28 = getelementptr inbounds i8, ptr %27, i64 8 + %29 = load ptr, ptr %28, align 8 + invoke fastcc void %29(ptr nonnull %27) to label %invoke.cont.i.i.i9 unwind label %terminate.lpad.i.i.i8 invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 @@ -55106,21 +55102,21 @@ invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 br label %ehcleanup terminate.lpad.i.i.i8: ; preds = %if.then.i.i.i7 - %29 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } catch ptr null - %30 = extractvalue { ptr, i32 } %29, 0 - tail call void @__clang_call_terminate(ptr %30) #38 + %31 = extractvalue { ptr, i32 } %30, 0 + tail call void @__clang_call_terminate(ptr %31) #38 unreachable ehcleanup: ; preds = %invoke.cont.i.i.i9, %lpad32 - %31 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i11 = icmp eq ptr %31, null + %32 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i11 = icmp eq ptr %32, null br i1 %cmp.i.not.i.i11, label %catch, label %if.then.i.i12 if.then.i.i12: ; preds = %ehcleanup - %32 = getelementptr inbounds i8, ptr %31, i64 8 - %33 = load ptr, ptr %32, align 8 - invoke fastcc void %33(ptr nonnull %31) + %33 = getelementptr inbounds i8, ptr %32, i64 8 + %34 = load ptr, ptr %33, align 8 + invoke fastcc void %34(ptr nonnull %32) to label %invoke.cont.i.i14 unwind label %terminate.lpad.i.i13 invoke.cont.i.i14: ; preds = %if.then.i.i12 @@ -55128,14 +55124,14 @@ invoke.cont.i.i14: ; preds = %if.then.i.i12 br label %catch terminate.lpad.i.i13: ; preds = %if.then.i.i12 - %34 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } catch ptr null - %35 = extractvalue { ptr, i32 } %34, 0 - tail call void @__clang_call_terminate(ptr %35) #38 + %36 = extractvalue { ptr, i32 } %35, 0 + tail call void @__clang_call_terminate(ptr %36) #38 unreachable lpad44: ; preds = %if.then - %36 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp43) #28 br label %catch @@ -55146,29 +55142,29 @@ if.end: ; preds = %_ZN12async_simple4c %is_timeout_ = getelementptr inbounds i8, ptr %this1.reload, i64 224 store i8 %frombool, ptr %is_timeout_, align 8 %socket_ = getelementptr inbounds i8, ptr %this1.reload, i64 48 - %37 = load ptr, ptr %socket_, align 8 - store ptr %37, ptr %agg.tmp50.reload.addr, align 8 + %38 = load ptr, ptr %socket_, align 8 + store ptr %38, ptr %agg.tmp50.reload.addr, align 8 %_M_refcount.i.i = getelementptr inbounds i8, ptr %0, i64 88 %_M_refcount3.i.i = getelementptr inbounds i8, ptr %this1.reload, i64 56 - %38 = load ptr, ptr %_M_refcount3.i.i, align 8 - store ptr %38, ptr %_M_refcount.i.i, align 8 - %cmp.not.i.i.i = icmp eq ptr %38, null + %39 = load ptr, ptr %_M_refcount3.i.i, align 8 + store ptr %39, ptr %_M_refcount.i.i, align 8 + %cmp.not.i.i.i = icmp eq ptr %39, null br i1 %cmp.not.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit, label %if.then.i.i.i16 if.then.i.i.i16: ; preds = %if.end - %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %38, i64 8 - %39 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i = icmp eq i8 %39, 0 + %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %39, i64 8 + %40 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i = icmp eq i8 %40, 0 br i1 %tobool.i.i.not.i.i.i.i, label %if.else.i.i.i.i.i, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then.i.i.i16 - %40 = load i32, ptr %_M_use_count.i.i.i.i, align 4 - %add.i.i.i.i.i17 = add nsw i32 %40, 1 + %41 = load i32, ptr %_M_use_count.i.i.i.i, align 4 + %add.i.i.i.i.i17 = add nsw i32 %41, 1 store i32 %add.i.i.i.i.i17, ptr %_M_use_count.i.i.i.i, align 4 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit if.else.i.i.i.i.i: ; preds = %if.then.i.i.i16 - %41 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 + %42 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit: ; preds = %if.end, %if.then.i.i.i.i.i, %if.else.i.i.i.i.i @@ -55176,96 +55172,96 @@ _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorE to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit - %42 = load ptr, ptr %_M_refcount.i.i, align 8 - %cmp.not.i.i.i19 = icmp eq ptr %42, null + %43 = load ptr, ptr %_M_refcount.i.i, align 8 + %cmp.not.i.i.i19 = icmp eq ptr %43, null br i1 %cmp.not.i.i.i19, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit, label %if.then.i.i.i20 if.then.i.i.i20: ; preds = %invoke.cont52 - %_M_use_count.i.i.i.i21 = getelementptr inbounds i8, ptr %42, i64 8 - %43 = load atomic i64, ptr %_M_use_count.i.i.i.i21 acquire, align 8 - %cmp.i.i.i.i22 = icmp eq i64 %43, 4294967297 - %44 = trunc i64 %43 to i32 + %_M_use_count.i.i.i.i21 = getelementptr inbounds i8, ptr %43, i64 8 + %44 = load atomic i64, ptr %_M_use_count.i.i.i.i21 acquire, align 8 + %cmp.i.i.i.i22 = icmp eq i64 %44, 4294967297 + %45 = trunc i64 %44 to i32 br i1 %cmp.i.i.i.i22, label %if.then.i.i.i.i, label %if.end.i.i.i.i23 if.then.i.i.i.i: ; preds = %if.then.i.i.i20 store i32 0, ptr %_M_use_count.i.i.i.i21, align 8 - %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %42, i64 12 + %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %43, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i, align 4 - %vtable.i.i.i.i = load ptr, ptr %42, align 8 + %vtable.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 16 - %45 = load ptr, ptr %vfn.i.i.i.i, align 8 - tail call void %45(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 + %46 = load ptr, ptr %vfn.i.i.i.i, align 8 + tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 br label %if.end8.sink.split.i.i.i.i if.end.i.i.i.i23: ; preds = %if.then.i.i.i20 - %46 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i = icmp eq i8 %46, 0 + %47 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i = icmp eq i8 %47, 0 br i1 %tobool.i.not.i.i.i.i, label %if.else.i.i.i.i.i26, label %if.then.i.i.i.i.i24 if.then.i.i.i.i.i24: ; preds = %if.end.i.i.i.i23 - %add.i.i.i.i.i25 = add nsw i32 %44, -1 + %add.i.i.i.i.i25 = add nsw i32 %45, -1 store i32 %add.i.i.i.i.i25, ptr %_M_use_count.i.i.i.i21, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i if.else.i.i.i.i.i26: ; preds = %if.end.i.i.i.i23 - %47 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i21, i32 -1 acq_rel, align 4 + %48 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i21, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %if.else.i.i.i.i.i26, %if.then.i.i.i.i.i24 - %retval.i.0.i.i.i.i = phi i32 [ %44, %if.then.i.i.i.i.i24 ], [ %47, %if.else.i.i.i.i.i26 ] + %retval.i.0.i.i.i.i = phi i32 [ %45, %if.then.i.i.i.i.i24 ], [ %48, %if.else.i.i.i.i.i26 ] %cmp6.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i, 1 br i1 %cmp6.i.i.i.i, label %if.then7.i.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit if.then7.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - %vtable.i.i.i.i.i.i = load ptr, ptr %42, align 8 + %vtable.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 16 - %48 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 - tail call void %48(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 - %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %42, i64 12 - %49 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %49, 0 + %49 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 + tail call void %49(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 + %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %43, i64 12 + %50 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %50, 0 br i1 %tobool.i.not.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i - %50 = load i32, ptr %_M_weak_count.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i = add nsw i32 %50, -1 + %51 = load i32, ptr %_M_weak_count.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i = add nsw i32 %51, -1 store i32 %add.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i if.else.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i - %51 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %52 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i = phi i32 [ %50, %if.then.i.i.i.i.i.i.i ], [ %51, %if.else.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i = phi i32 [ %51, %if.then.i.i.i.i.i.i.i ], [ %52, %if.else.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit if.end8.sink.split.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %if.then.i.i.i.i - %vtable2.i.i.i.i.i.i = load ptr, ptr %42, align 8 + %vtable2.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn3.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i, i64 24 - %52 = load ptr, ptr %vfn3.i.i.i.i.i.i, align 8 - tail call void %52(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 + %53 = load ptr, ptr %vfn3.i.i.i.i.i.i, align 8 + tail call void %53(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit: ; preds = %invoke.cont52, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %if.end8.sink.split.i.i.i.i - %53 = load ptr, ptr %promise4.reload.addr, align 8 + %54 = load ptr, ptr %promise4.reload.addr, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp54) #28 - invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %53, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp54) + invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %54, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp54) to label %invoke.cont56 unwind label %lpad55 invoke.cont56: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp54) #28 %_value.i27 = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i28 = getelementptr inbounds i8, ptr %0, i64 40 - %54 = load i8, ptr %_M_index.i.i.i.i.i.i28, align 8 - %cmp.i.not.i.i.i.i.i29 = icmp eq i8 %54, -1 + %55 = load i8, ptr %_M_index.i.i.i.i.i.i28, align 8 + %cmp.i.not.i.i.i.i.i29 = icmp eq i8 %55, -1 br i1 %cmp.i.not.i.i.i.i.i29, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit37, label %if.end.i.i.i.i.i30 if.end.i.i.i.i.i30: ; preds = %invoke.cont56 - %switch.i.i.i.i.i.i31 = icmp ult i8 %54, 2 - %55 = load ptr, ptr %_value.i27, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 = icmp eq ptr %55, null + %switch.i.i.i.i.i.i31 = icmp ult i8 %55, 2 + %56 = load ptr, ptr %_value.i27, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 = icmp eq ptr %56, null %or.cond.i.i.i.i.i.i33 = select i1 %switch.i.i.i.i.i.i31, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 br i1 %or.cond.i.i.i.i.i.i33, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i35, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i34 @@ -55283,21 +55279,21 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave117 lpad51: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit - %56 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } catch ptr null tail call void @_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp50.reload.addr) #28 br label %catch lpad55: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit - %57 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp54) #28 br label %catch catch: ; preds = %invoke.cont.i.i14, %ehcleanup, %lpad44, %lpad51, %lpad55, %lpad - %.pn1 = phi { ptr, i32 } [ %57, %lpad55 ], [ %56, %lpad51 ], [ %36, %lpad44 ], [ %10, %lpad ], [ %25, %ehcleanup ], [ %25, %invoke.cont.i.i14 ] + %.pn1 = phi { ptr, i32 } [ %58, %lpad55 ], [ %57, %lpad51 ], [ %37, %lpad44 ], [ %11, %lpad ], [ %26, %ehcleanup ], [ %26, %invoke.cont.i.i14 ] %exn.slot.0 = extractvalue { ptr, i32 } %.pn1, 0 - %58 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 + %59 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 call void @_ZN12async_simple4coro6detail11LazyPromiseIbE19unhandled_exceptionEv(ptr noundef nonnull align 8 dereferenceable(32) %__promise.reload.addr) #28 invoke void @__cxa_end_catch() to label %CoroSave117 unwind label %lpad62 @@ -55306,16 +55302,16 @@ CoroSave117: ; preds = %catch, %_ZN12async_ store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 %retval.sroa.0.0.copyload.i38 = load ptr, ptr %__promise.reload.addr, align 8 - %59 = load ptr, ptr %retval.sroa.0.0.copyload.i38, align 8 - musttail call fastcc void %59(ptr nonnull %retval.sroa.0.0.copyload.i38) + %60 = load ptr, ptr %retval.sroa.0.0.copyload.i38, align 8 + musttail call fastcc void %60(ptr nonnull %retval.sroa.0.0.copyload.i38) ret void lpad62: ; preds = %catch - %60 = landingpad { ptr, i32 } + %61 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 - resume { ptr, i32 } %60 + resume { ptr, i32 } %61 } ; Function Attrs: mustprogress uwtable @@ -57653,10 +57649,9 @@ if.then.i.i.i: ; preds = %invoke.cont br i1 %cmp.i8.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i if.else.i.i.i: ; preds = %invoke.cont - %sub.i.i11.i.i.i = and i64 %call.i.i.i, 9223372036854775807 - %sub.i.i.i.i = sub nsw i64 0, %sub.i.i11.i.i.i - %cmp.i13.i.i.i = icmp slt i64 %mul.i.i.i, %sub.i.i.i.i - br i1 %cmp.i13.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i + %4 = xor i64 %call.i.i.i, 9223372036854775807 + %cmp.i13.not.i.i.i = icmp slt i64 %4, %mul.i.i.i + br i1 %cmp.i13.not.i.i.i, label %if.end41.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i if.end41.i.i.i: ; preds = %if.else.i.i.i, %if.then.i.i.i %add.i.i.i.i.i = add nsw i64 %call.i.i.i, %mul.i.i.i @@ -57665,16 +57660,16 @@ if.end41.i.i.i: ; preds = %if.else.i.i.i, %if. _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i: ; preds = %if.end41.i.i.i, %if.else.i.i.i, %if.then.i.i.i %retval.sroa.0.0.i.i.i = phi i64 [ %add.i.i.i.i.i, %if.end41.i.i.i ], [ 9223372036854775807, %if.then.i.i.i ], [ -9223372036854775808, %if.else.i.i.i ] %might_have_pending_waits.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 16 - %4 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %4 to i1 + %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %invoke.cont14 if.end.i.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %scheduler_.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 88 - %5 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds i8, ptr %3, i64 40 %timer_data.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 24 - %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %5, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) to label %call2.i.i.i.i.noexc unwind label %lpad call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i @@ -57684,15 +57679,15 @@ call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i invoke.cont14: ; preds = %call2.i.i.i.i.noexc, %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %implementation_.i.i = getelementptr inbounds i8, ptr %1, i64 8 store i64 %retval.sroa.0.0.i.i.i, ptr %implementation_.i.i, align 8 - %6 = load ptr, ptr %timer2.reload.addr, align 8 + %7 = load ptr, ptr %timer2.reload.addr, align 8 %call.i3 = invoke noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #37 to label %CoroSave113 unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont14 - %7 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #38 + %9 = extractvalue { ptr, i32 } %8, 0 + tail call void @__clang_call_terminate(ptr %9) #38 unreachable CoroSave113: ; preds = %invoke.cont14 @@ -57701,18 +57696,18 @@ CoroSave113: ; preds = %invoke.cont14 store ptr @_ZN7coro_io12period_timer11async_awaitEv.destroy, ptr %destroy.addr.i, align 8 %__promise.reload.addr.i = getelementptr inbounds i8, ptr %call.i3, i64 16 %this1.spill.addr.i = getelementptr inbounds i8, ptr %call.i3, i64 104 - store ptr %6, ptr %this1.spill.addr.i, align 8 + store ptr %7, ptr %this1.spill.addr.i, align 8 %_M_index.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i3, i64 40 store i8 0, ptr %_M_index.i.i.i.i.i.i.i.i.i.i, align 8 %index.addr65.i = getelementptr inbounds i8, ptr %call.i3, i64 112 store i2 0, ptr %index.addr65.i, align 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !725) %_executor.i = getelementptr inbounds i8, ptr %0, i64 24 - %9 = load ptr, ptr %_executor.i, align 8, !noalias !725 + %10 = load ptr, ptr %_executor.i, align 8, !noalias !725 tail call void @llvm.experimental.noalias.scope.decl(metadata !728) tail call void @llvm.experimental.noalias.scope.decl(metadata !731) %_executor.i.i.i = getelementptr inbounds i8, ptr %call.i3, i64 24 - store ptr %9, ptr %_executor.i.i.i, align 8, !noalias !734 + store ptr %10, ptr %_executor.i.i.i, align 8, !noalias !734 store ptr null, ptr %ref.tmp17.reload.addr, align 8, !noalias !734 store ptr %call.i3, ptr %ref.tmp16.reload.addr, align 8, !alias.scope !734 store i2 1, ptr %index.addr, align 8 @@ -57721,35 +57716,35 @@ CoroSave113: ; preds = %invoke.cont14 ret void lpad: ; preds = %if.end.i.i.i.i - %10 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null br label %catch await.ready: ; preds = %entry.resume - %11 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %12 = getelementptr inbounds i8, ptr %11, i64 16 - %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %12) + %12 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %13 = getelementptr inbounds i8, ptr %12, i64 16 + %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %13) to label %call2.i.noexc unwind label %lpad32 call2.i.noexc: ; preds = %await.ready - %13 = load i8, ptr %call2.i4, align 1 - %tobool.i = trunc i8 %13 to i1 - %14 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %15 = getelementptr inbounds i8, ptr %14, i64 8 - %16 = load ptr, ptr %15, align 8 - invoke fastcc void %16(ptr nonnull %14) + %14 = load i8, ptr %call2.i4, align 1 + %tobool.i = trunc i8 %14 to i1 + %15 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %16 = getelementptr inbounds i8, ptr %15, i64 8 + %17 = load ptr, ptr %16, align 8 + invoke fastcc void %17(ptr nonnull %15) to label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit unwind label %lpad32 _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit: ; preds = %call2.i.noexc store ptr null, ptr %ref.tmp16.reload.addr, align 8 - %17 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i = icmp eq ptr %17, null + %18 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i = icmp eq ptr %18, null br i1 %cmp.i.not.i.i, label %_ZN12async_simple4coro4LazyIbED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit - %18 = getelementptr inbounds i8, ptr %17, i64 8 - %19 = load ptr, ptr %18, align 8 - invoke fastcc void %19(ptr nonnull %17) + %19 = getelementptr inbounds i8, ptr %18, i64 8 + %20 = load ptr, ptr %19, align 8 + invoke fastcc void %20(ptr nonnull %18) to label %invoke.cont.i.i unwind label %terminate.lpad.i.i invoke.cont.i.i: ; preds = %if.then.i.i @@ -57757,35 +57752,35 @@ invoke.cont.i.i: ; preds = %if.then.i.i br label %_ZN12async_simple4coro4LazyIbED2Ev.exit terminate.lpad.i.i: ; preds = %if.then.i.i - %20 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } catch ptr null - %21 = extractvalue { ptr, i32 } %20, 0 - tail call void @__clang_call_terminate(ptr %21) #38 + %22 = extractvalue { ptr, i32 } %21, 0 + tail call void @__clang_call_terminate(ptr %22) #38 unreachable _ZN12async_simple4coro4LazyIbED2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, %invoke.cont.i.i - %frombool = and i8 %13, 1 + %frombool = and i8 %14, 1 store i8 %frombool, ptr %is_timeout.reload.addr, align 2 br i1 %tobool.i, label %if.end, label %if.then if.then: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit - %22 = load ptr, ptr %promise4.reload.addr, align 8 + %23 = load ptr, ptr %promise4.reload.addr, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp43) #28 - invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %22, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp43) + invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %23, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp43) to label %invoke.cont45 unwind label %lpad44 invoke.cont45: ; preds = %if.then call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp43) #28 %_value.i = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i = getelementptr inbounds i8, ptr %0, i64 40 - %23 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 - %cmp.i.not.i.i.i.i.i = icmp eq i8 %23, -1 + %24 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 + %cmp.i.not.i.i.i.i.i = icmp eq i8 %24, -1 br i1 %cmp.i.not.i.i.i.i.i, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit, label %if.end.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %invoke.cont45 - %switch.i.i.i.i.i.i = icmp ult i8 %23, 2 - %24 = load ptr, ptr %_value.i, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %24, null + %switch.i.i.i.i.i.i = icmp ult i8 %24, 2 + %25 = load ptr, ptr %_value.i, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %25, null %or.cond.i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i br i1 %or.cond.i.i.i.i.i.i, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i @@ -57803,16 +57798,16 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave117 lpad32: ; preds = %call2.i.noexc, %await.ready - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %26 = load ptr, ptr %ref.tmp16.reload.addr, align 8 - %cmp.i.not.i.i.i6 = icmp eq ptr %26, null + %27 = load ptr, ptr %ref.tmp16.reload.addr, align 8 + %cmp.i.not.i.i.i6 = icmp eq ptr %27, null br i1 %cmp.i.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad32 - %27 = getelementptr inbounds i8, ptr %26, i64 8 - %28 = load ptr, ptr %27, align 8 - invoke fastcc void %28(ptr nonnull %26) + %28 = getelementptr inbounds i8, ptr %27, i64 8 + %29 = load ptr, ptr %28, align 8 + invoke fastcc void %29(ptr nonnull %27) to label %invoke.cont.i.i.i9 unwind label %terminate.lpad.i.i.i8 invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 @@ -57820,21 +57815,21 @@ invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 br label %ehcleanup terminate.lpad.i.i.i8: ; preds = %if.then.i.i.i7 - %29 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } catch ptr null - %30 = extractvalue { ptr, i32 } %29, 0 - tail call void @__clang_call_terminate(ptr %30) #38 + %31 = extractvalue { ptr, i32 } %30, 0 + tail call void @__clang_call_terminate(ptr %31) #38 unreachable ehcleanup: ; preds = %invoke.cont.i.i.i9, %lpad32 - %31 = load ptr, ptr %ref.tmp17.reload.addr, align 8 - %cmp.i.not.i.i11 = icmp eq ptr %31, null + %32 = load ptr, ptr %ref.tmp17.reload.addr, align 8 + %cmp.i.not.i.i11 = icmp eq ptr %32, null br i1 %cmp.i.not.i.i11, label %catch, label %if.then.i.i12 if.then.i.i12: ; preds = %ehcleanup - %32 = getelementptr inbounds i8, ptr %31, i64 8 - %33 = load ptr, ptr %32, align 8 - invoke fastcc void %33(ptr nonnull %31) + %33 = getelementptr inbounds i8, ptr %32, i64 8 + %34 = load ptr, ptr %33, align 8 + invoke fastcc void %34(ptr nonnull %32) to label %invoke.cont.i.i14 unwind label %terminate.lpad.i.i13 invoke.cont.i.i14: ; preds = %if.then.i.i12 @@ -57842,14 +57837,14 @@ invoke.cont.i.i14: ; preds = %if.then.i.i12 br label %catch terminate.lpad.i.i13: ; preds = %if.then.i.i12 - %34 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } catch ptr null - %35 = extractvalue { ptr, i32 } %34, 0 - tail call void @__clang_call_terminate(ptr %35) #38 + %36 = extractvalue { ptr, i32 } %35, 0 + tail call void @__clang_call_terminate(ptr %36) #38 unreachable lpad44: ; preds = %if.then - %36 = landingpad { ptr, i32 } + %37 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp43) #28 br label %catch @@ -57860,29 +57855,29 @@ if.end: ; preds = %_ZN12async_simple4c %is_timeout_ = getelementptr inbounds i8, ptr %this1.reload, i64 224 store i8 %frombool, ptr %is_timeout_, align 8 %socket_ = getelementptr inbounds i8, ptr %this1.reload, i64 48 - %37 = load ptr, ptr %socket_, align 8 - store ptr %37, ptr %agg.tmp50.reload.addr, align 8 + %38 = load ptr, ptr %socket_, align 8 + store ptr %38, ptr %agg.tmp50.reload.addr, align 8 %_M_refcount.i.i = getelementptr inbounds i8, ptr %0, i64 88 %_M_refcount3.i.i = getelementptr inbounds i8, ptr %this1.reload, i64 56 - %38 = load ptr, ptr %_M_refcount3.i.i, align 8 - store ptr %38, ptr %_M_refcount.i.i, align 8 - %cmp.not.i.i.i = icmp eq ptr %38, null + %39 = load ptr, ptr %_M_refcount3.i.i, align 8 + store ptr %39, ptr %_M_refcount.i.i, align 8 + %cmp.not.i.i.i = icmp eq ptr %39, null br i1 %cmp.not.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit, label %if.then.i.i.i16 if.then.i.i.i16: ; preds = %if.end - %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %38, i64 8 - %39 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i = icmp eq i8 %39, 0 + %_M_use_count.i.i.i.i = getelementptr inbounds i8, ptr %39, i64 8 + %40 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i = icmp eq i8 %40, 0 br i1 %tobool.i.i.not.i.i.i.i, label %if.else.i.i.i.i.i, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then.i.i.i16 - %40 = load i32, ptr %_M_use_count.i.i.i.i, align 4 - %add.i.i.i.i.i17 = add nsw i32 %40, 1 + %41 = load i32, ptr %_M_use_count.i.i.i.i, align 4 + %add.i.i.i.i.i17 = add nsw i32 %41, 1 store i32 %add.i.i.i.i.i17, ptr %_M_use_count.i.i.i.i, align 4 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit if.else.i.i.i.i.i: ; preds = %if.then.i.i.i16 - %41 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 + %42 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i, i32 1 acq_rel, align 4 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit: ; preds = %if.end, %if.then.i.i.i.i.i, %if.else.i.i.i.i.i @@ -57890,96 +57885,96 @@ _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorE to label %invoke.cont52 unwind label %lpad51 invoke.cont52: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit - %42 = load ptr, ptr %_M_refcount.i.i, align 8 - %cmp.not.i.i.i19 = icmp eq ptr %42, null + %43 = load ptr, ptr %_M_refcount.i.i, align 8 + %cmp.not.i.i.i19 = icmp eq ptr %43, null br i1 %cmp.not.i.i.i19, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit, label %if.then.i.i.i20 if.then.i.i.i20: ; preds = %invoke.cont52 - %_M_use_count.i.i.i.i21 = getelementptr inbounds i8, ptr %42, i64 8 - %43 = load atomic i64, ptr %_M_use_count.i.i.i.i21 acquire, align 8 - %cmp.i.i.i.i22 = icmp eq i64 %43, 4294967297 - %44 = trunc i64 %43 to i32 + %_M_use_count.i.i.i.i21 = getelementptr inbounds i8, ptr %43, i64 8 + %44 = load atomic i64, ptr %_M_use_count.i.i.i.i21 acquire, align 8 + %cmp.i.i.i.i22 = icmp eq i64 %44, 4294967297 + %45 = trunc i64 %44 to i32 br i1 %cmp.i.i.i.i22, label %if.then.i.i.i.i, label %if.end.i.i.i.i23 if.then.i.i.i.i: ; preds = %if.then.i.i.i20 store i32 0, ptr %_M_use_count.i.i.i.i21, align 8 - %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %42, i64 12 + %_M_weak_count.i.i.i.i = getelementptr inbounds i8, ptr %43, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i, align 4 - %vtable.i.i.i.i = load ptr, ptr %42, align 8 + %vtable.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 16 - %45 = load ptr, ptr %vfn.i.i.i.i, align 8 - tail call void %45(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 + %46 = load ptr, ptr %vfn.i.i.i.i, align 8 + tail call void %46(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 br label %if.end8.sink.split.i.i.i.i if.end.i.i.i.i23: ; preds = %if.then.i.i.i20 - %46 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i = icmp eq i8 %46, 0 + %47 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i = icmp eq i8 %47, 0 br i1 %tobool.i.not.i.i.i.i, label %if.else.i.i.i.i.i26, label %if.then.i.i.i.i.i24 if.then.i.i.i.i.i24: ; preds = %if.end.i.i.i.i23 - %add.i.i.i.i.i25 = add nsw i32 %44, -1 + %add.i.i.i.i.i25 = add nsw i32 %45, -1 store i32 %add.i.i.i.i.i25, ptr %_M_use_count.i.i.i.i21, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i if.else.i.i.i.i.i26: ; preds = %if.end.i.i.i.i23 - %47 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i21, i32 -1 acq_rel, align 4 + %48 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i21, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i: ; preds = %if.else.i.i.i.i.i26, %if.then.i.i.i.i.i24 - %retval.i.0.i.i.i.i = phi i32 [ %44, %if.then.i.i.i.i.i24 ], [ %47, %if.else.i.i.i.i.i26 ] + %retval.i.0.i.i.i.i = phi i32 [ %45, %if.then.i.i.i.i.i24 ], [ %48, %if.else.i.i.i.i.i26 ] %cmp6.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i, 1 br i1 %cmp6.i.i.i.i, label %if.then7.i.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit if.then7.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i - %vtable.i.i.i.i.i.i = load ptr, ptr %42, align 8 + %vtable.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i, i64 16 - %48 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 - tail call void %48(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 - %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %42, i64 12 - %49 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %49, 0 + %49 = load ptr, ptr %vfn.i.i.i.i.i.i, align 8 + tail call void %49(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 + %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %43, i64 12 + %50 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.not.i.i.i.i.i.i = icmp eq i8 %50, 0 br i1 %tobool.i.not.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i - %50 = load i32, ptr %_M_weak_count.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i = add nsw i32 %50, -1 + %51 = load i32, ptr %_M_weak_count.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i = add nsw i32 %51, -1 store i32 %add.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i if.else.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i - %51 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %52 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i = phi i32 [ %50, %if.then.i.i.i.i.i.i.i ], [ %51, %if.else.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i = phi i32 [ %51, %if.then.i.i.i.i.i.i.i ], [ %52, %if.else.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i, label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit if.end8.sink.split.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %if.then.i.i.i.i - %vtable2.i.i.i.i.i.i = load ptr, ptr %42, align 8 + %vtable2.i.i.i.i.i.i = load ptr, ptr %43, align 8 %vfn3.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i, i64 24 - %52 = load ptr, ptr %vfn3.i.i.i.i.i.i, align 8 - tail call void %52(ptr noundef nonnull align 8 dereferenceable(16) %42) #28 + %53 = load ptr, ptr %vfn3.i.i.i.i.i.i, align 8 + tail call void %53(ptr noundef nonnull align 8 dereferenceable(16) %43) #28 br label %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit _ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit: ; preds = %invoke.cont52, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i, %if.end8.sink.split.i.i.i.i - %53 = load ptr, ptr %promise4.reload.addr, align 8 + %54 = load ptr, ptr %promise4.reload.addr, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp54) #28 - invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %53, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp54) + invoke void @_ZN12async_simple7PromiseINS_4UnitEE8setValueEOS1_Qntsr3stdE9is_void_vIT_E(ptr noundef nonnull align 8 dereferenceable(9) %54, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp54) to label %invoke.cont56 unwind label %lpad55 invoke.cont56: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp54) #28 %_value.i27 = getelementptr inbounds i8, ptr %0, i64 32 %_M_index.i.i.i.i.i.i28 = getelementptr inbounds i8, ptr %0, i64 40 - %54 = load i8, ptr %_M_index.i.i.i.i.i.i28, align 8 - %cmp.i.not.i.i.i.i.i29 = icmp eq i8 %54, -1 + %55 = load i8, ptr %_M_index.i.i.i.i.i.i28, align 8 + %cmp.i.not.i.i.i.i.i29 = icmp eq i8 %55, -1 br i1 %cmp.i.not.i.i.i.i.i29, label %_ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_convertible_vIOTL0__S5_E.exit37, label %if.end.i.i.i.i.i30 if.end.i.i.i.i.i30: ; preds = %invoke.cont56 - %switch.i.i.i.i.i.i31 = icmp ult i8 %54, 2 - %55 = load ptr, ptr %_value.i27, align 8 - %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 = icmp eq ptr %55, null + %switch.i.i.i.i.i.i31 = icmp ult i8 %55, 2 + %56 = load ptr, ptr %_value.i27, align 8 + %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 = icmp eq ptr %56, null %or.cond.i.i.i.i.i.i33 = select i1 %switch.i.i.i.i.i.i31, i1 true, i1 %tobool.not.i.i.i.i.i.i.i.i.i.i.i.i.i32 br i1 %or.cond.i.i.i.i.i.i33, label %_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebNSt15__exception_ptr13exception_ptrEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS5_EEEEDcOT0_DpOT1_.exit.i.i.i.i.i35, label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i34 @@ -57997,21 +57992,21 @@ _ZN12async_simple4coro6detail11LazyPromiseIbE12return_valueIbEEvOT_Qsr3stdE16is_ br label %CoroSave117 lpad51: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEEC2ERKS6_.exit - %56 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } catch ptr null tail call void @_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp50.reload.addr) #28 br label %catch lpad55: ; preds = %_ZNSt10shared_ptrIN4asio19basic_stream_socketINS0_2ip3tcpENS0_15any_io_executorEEEED2Ev.exit - %57 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } catch ptr null call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp54) #28 br label %catch catch: ; preds = %invoke.cont.i.i14, %ehcleanup, %lpad44, %lpad51, %lpad55, %lpad - %.pn1 = phi { ptr, i32 } [ %57, %lpad55 ], [ %56, %lpad51 ], [ %36, %lpad44 ], [ %10, %lpad ], [ %25, %ehcleanup ], [ %25, %invoke.cont.i.i14 ] + %.pn1 = phi { ptr, i32 } [ %58, %lpad55 ], [ %57, %lpad51 ], [ %37, %lpad44 ], [ %11, %lpad ], [ %26, %ehcleanup ], [ %26, %invoke.cont.i.i14 ] %exn.slot.0 = extractvalue { ptr, i32 } %.pn1, 0 - %58 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 + %59 = call ptr @__cxa_begin_catch(ptr %exn.slot.0) #28 call void @_ZN12async_simple4coro6detail11LazyPromiseIbE19unhandled_exceptionEv(ptr noundef nonnull align 8 dereferenceable(32) %__promise.reload.addr) #28 invoke void @__cxa_end_catch() to label %CoroSave117 unwind label %lpad62 @@ -58020,16 +58015,16 @@ CoroSave117: ; preds = %catch, %_ZN12async_ store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 %retval.sroa.0.0.copyload.i38 = load ptr, ptr %__promise.reload.addr, align 8 - %59 = load ptr, ptr %retval.sroa.0.0.copyload.i38, align 8 - musttail call fastcc void %59(ptr nonnull %retval.sroa.0.0.copyload.i38) + %60 = load ptr, ptr %retval.sroa.0.0.copyload.i38, align 8 + musttail call fastcc void %60(ptr nonnull %retval.sroa.0.0.copyload.i38) ret void lpad62: ; preds = %catch - %60 = landingpad { ptr, i32 } + %61 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 8 - resume { ptr, i32 } %60 + resume { ptr, i32 } %61 } ; Function Attrs: mustprogress uwtable diff --git a/bench/yalantinglibs/optimized/file_server.cpp.ll b/bench/yalantinglibs/optimized/file_server.cpp.ll index 972a04037ef..818fcc74f30 100644 --- a/bench/yalantinglibs/optimized/file_server.cpp.ll +++ b/bench/yalantinglibs/optimized/file_server.cpp.ll @@ -16561,8 +16561,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -16894,37 +16894,34 @@ _ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_t %13 = load ptr, ptr %this, align 8 %call.i.i = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #34 %cmp.i.i.i = icmp sgt i64 %call.i.i, -1 + %14 = load i64, ptr %expiry_time, align 8 br i1 %cmp.i.i.i, label %if.then.i.i, label %if.else.i.i if.then.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit %sub.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i - %14 = load i64, ptr %expiry_time, align 8 %cmp.i8.i.i = icmp slt i64 %sub.i.i.i.i, %14 br i1 %cmp.i8.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i if.else.i.i: ; preds = %_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEEC2EiRKSB_.exit - %sub.i.i11.i.i = and i64 %call.i.i, 9223372036854775807 - %sub.i.i.i = sub nsw i64 0, %sub.i.i11.i.i - %15 = load i64, ptr %expiry_time, align 8 - %cmp.i13.i.i = icmp slt i64 %15, %sub.i.i.i - br i1 %cmp.i13.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i, label %if.end41.i.i + %15 = xor i64 %call.i.i, 9223372036854775807 + %cmp.i13.not.i.i = icmp slt i64 %15, %14 + br i1 %cmp.i13.not.i.i, label %if.end41.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i if.end41.i.i: ; preds = %if.else.i.i, %if.then.i.i - %16 = phi i64 [ %15, %if.else.i.i ], [ %14, %if.then.i.i ] - %add.i.i.i.i = add nsw i64 %16, %call.i.i + %add.i.i.i.i = add nsw i64 %14, %call.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i: ; preds = %if.end41.i.i, %if.else.i.i, %if.then.i.i %retval.sroa.0.0.i.i = phi i64 [ %add.i.i.i.i, %if.end41.i.i ], [ 9223372036854775807, %if.then.i.i ], [ -9223372036854775808, %if.else.i.i ] - %17 = load i8, ptr %might_have_pending_waits.i.i, align 8 - %tobool.i.i.i = trunc i8 %17 to i1 + %16 = load i8, ptr %might_have_pending_waits.i.i, align 8 + %tobool.i.i.i = trunc i8 %16 to i1 br i1 %tobool.i.i.i, label %if.end.i.i.i, label %invoke.cont8 if.end.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i %scheduler_.i.i.i = getelementptr inbounds i8, ptr %13, i64 88 - %18 = load ptr, ptr %scheduler_.i.i.i, align 8 + %17 = load ptr, ptr %scheduler_.i.i.i, align 8 %timer_queue_.i.i.i = getelementptr inbounds i8, ptr %13, i64 40 - %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %18, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) + %call2.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %17, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i, i64 noundef -1) to label %call2.i.i.i.noexc unwind label %lpad.body call2.i.i.i.noexc: ; preds = %if.end.i.i.i @@ -16936,10 +16933,10 @@ invoke.cont8: ; preds = %call2.i.i.i.noexc, ret void lpad.body: ; preds = %if.end.i.i.i - %19 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %this) #34 - resume { ptr, i32 } %19 + resume { ptr, i32 } %18 } ; Function Attrs: mustprogress nounwind uwtable @@ -19858,8 +19855,8 @@ lpad.i: ; preds = %if.then.i _ZN4asio11aligned_newEmm.exit: ; preds = %if.end36 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ex.i) %cmp40 = icmp ult i64 %sub, 1024 - %conv41 = trunc i64 %div27 to i8 - %conv43 = select i1 %cmp40, i8 %conv41, i8 0 + %6 = trunc i64 %div27 to i8 + %conv43 = select i1 %cmp40, i8 %6, i8 0 br label %return return: ; preds = %_ZN4asio11aligned_newEmm.exit, %if.then9 @@ -43480,39 +43477,36 @@ if.end: ; preds = %entry %2 = load ptr, ptr %timer_, align 8 %call.i.i.i = tail call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #34 %cmp.i.i.i.i = icmp sgt i64 %call.i.i.i, -1 + %3 = load i64, ptr %keep_alive_timeout_duration_, align 8 br i1 %cmp.i.i.i.i, label %if.then.i.i.i, label %if.else.i.i.i if.then.i.i.i: ; preds = %if.end %sub.i.i.i.i.i = sub nuw nsw i64 9223372036854775807, %call.i.i.i - %3 = load i64, ptr %keep_alive_timeout_duration_, align 8 %cmp.i8.i.i.i = icmp slt i64 %sub.i.i.i.i.i, %3 br i1 %cmp.i8.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i if.else.i.i.i: ; preds = %if.end - %sub.i.i11.i.i.i = and i64 %call.i.i.i, 9223372036854775807 - %sub.i.i.i.i = sub nsw i64 0, %sub.i.i11.i.i.i - %4 = load i64, ptr %keep_alive_timeout_duration_, align 8 - %cmp.i13.i.i.i = icmp slt i64 %4, %sub.i.i.i.i - br i1 %cmp.i13.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i, label %if.end41.i.i.i + %4 = xor i64 %call.i.i.i, 9223372036854775807 + %cmp.i13.not.i.i.i = icmp slt i64 %4, %3 + br i1 %cmp.i13.not.i.i.i, label %if.end41.i.i.i, label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i if.end41.i.i.i: ; preds = %if.else.i.i.i, %if.then.i.i.i - %5 = phi i64 [ %4, %if.else.i.i.i ], [ %3, %if.then.i.i.i ] - %add.i.i.i.i.i = add nsw i64 %5, %call.i.i.i + %add.i.i.i.i.i = add nsw i64 %3, %call.i.i.i br label %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i _ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i: ; preds = %if.end41.i.i.i, %if.else.i.i.i, %if.then.i.i.i %retval.sroa.0.0.i.i.i = phi i64 [ %add.i.i.i.i.i, %if.end41.i.i.i ], [ 9223372036854775807, %if.then.i.i.i ], [ -9223372036854775808, %if.else.i.i.i ] %might_have_pending_waits.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 240 - %6 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %6 to i1 + %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %_ZN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS_11wait_traitsIS3_EENS_15any_io_executorEE16expires_from_nowERKNS1_8durationIlSt5ratioILl1ELl1000000000EEEE.exit if.end.i.i.i.i: ; preds = %_ZN4asio6detail18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS4_EEE3addERKNS2_10time_pointIS4_NS2_8durationIlSt5ratioILl1ELl1000000000EEEEEERKSC_.exit.i.i %scheduler_.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 88 - %7 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 40 %timer_data.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 248 - %call2.i.i.i.i = tail call noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %7, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i = tail call noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) store i8 0, ptr %might_have_pending_waits.i.i.i.i, align 8 br label %_ZN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS_11wait_traitsIS3_EENS_15any_io_executorEE16expires_from_nowERKNS1_8durationIlSt5ratioILl1ELl1000000000EEEE.exit @@ -43520,31 +43514,31 @@ _ZN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS_11wait_traitsIS3_ %implementation_.i.i = getelementptr inbounds i8, ptr %this, i64 232 store i64 %retval.sroa.0.0.i.i.i, ptr %implementation_.i.i, align 8 store ptr %this, ptr %ref.tmp, align 8 - %8 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 + %7 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !701) %_M_refcount.i.i.i = getelementptr inbounds i8, ptr %ref.tmp, i64 16 %_M_refcount2.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 - %9 = load ptr, ptr %_M_refcount2.i.i.i, align 8, !noalias !701 - store ptr %9, ptr %_M_refcount.i.i.i, align 8, !alias.scope !701 - %cmp.i.i.i.i1 = icmp eq ptr %9, null + %8 = load ptr, ptr %_M_refcount2.i.i.i, align 8, !noalias !701 + store ptr %8, ptr %_M_refcount.i.i.i, align 8, !alias.scope !701 + %cmp.i.i.i.i1 = icmp eq ptr %8, null br i1 %cmp.i.i.i.i1, label %if.then.i.i.i.i, label %lor.lhs.false.i.i.i.i lor.lhs.false.i.i.i.i: ; preds = %_ZN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS_11wait_traitsIS3_EENS_15any_io_executorEE16expires_from_nowERKNS1_8durationIlSt5ratioILl1ELl1000000000EEEE.exit - %_M_use_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %9, i64 8 - %10 = load atomic i32, ptr %_M_use_count.i.i.i.i.i.i monotonic, align 8, !noalias !701 + %_M_use_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %8, i64 8 + %9 = load atomic i32, ptr %_M_use_count.i.i.i.i.i.i monotonic, align 8, !noalias !701 br label %do.body.i.i.i.i.i do.body.i.i.i.i.i: ; preds = %do.cond.i.i.i.i.i, %lor.lhs.false.i.i.i.i - %__count.0.i.i.i.i.i = phi i32 [ %10, %lor.lhs.false.i.i.i.i ], [ %13, %do.cond.i.i.i.i.i ] + %__count.0.i.i.i.i.i = phi i32 [ %9, %lor.lhs.false.i.i.i.i ], [ %12, %do.cond.i.i.i.i.i ] %cmp.not.not.not.i.not.i.i.i.i = icmp eq i32 %__count.0.i.i.i.i.i, 0 br i1 %cmp.not.not.not.i.not.i.i.i.i, label %if.then.i.i.i.i, label %do.cond.i.i.i.i.i do.cond.i.i.i.i.i: ; preds = %do.body.i.i.i.i.i %add.i.i.i.i.i2 = add nsw i32 %__count.0.i.i.i.i.i, 1 - %11 = cmpxchg weak ptr %_M_use_count.i.i.i.i.i.i, i32 %__count.0.i.i.i.i.i, i32 %add.i.i.i.i.i2 acq_rel monotonic, align 8, !noalias !701 - %12 = extractvalue { i32, i1 } %11, 1 - %13 = extractvalue { i32, i1 } %11, 0 - br i1 %12, label %_ZNSt23enable_shared_from_thisIN8coro_rpc15coro_connectionEE16shared_from_thisEv.exit, label %do.body.i.i.i.i.i, !llvm.loop !445 + %10 = cmpxchg weak ptr %_M_use_count.i.i.i.i.i.i, i32 %__count.0.i.i.i.i.i, i32 %add.i.i.i.i.i2 acq_rel monotonic, align 8, !noalias !701 + %11 = extractvalue { i32, i1 } %10, 1 + %12 = extractvalue { i32, i1 } %10, 0 + br i1 %11, label %_ZNSt23enable_shared_from_thisIN8coro_rpc15coro_connectionEE16shared_from_thisEv.exit, label %do.body.i.i.i.i.i, !llvm.loop !445 if.then.i.i.i.i: ; preds = %do.body.i.i.i.i.i, %_ZN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS_11wait_traitsIS3_EENS_15any_io_executorEE16expires_from_nowERKNS1_8durationIlSt5ratioILl1ELl1000000000EEEE.exit %exception.i.i.i.i.i = tail call ptr @__cxa_allocate_exception(i64 8) #34, !noalias !701 @@ -43553,94 +43547,94 @@ if.then.i.i.i.i: ; preds = %do.body.i.i.i.i.i, unreachable _ZNSt23enable_shared_from_thisIN8coro_rpc15coro_connectionEE16shared_from_thisEv.exit: ; preds = %do.cond.i.i.i.i.i - %14 = load ptr, ptr %this, align 8, !noalias !701 - store ptr %14, ptr %8, align 8, !alias.scope !701 - %15 = load ptr, ptr %timer_, align 8 + %13 = load ptr, ptr %this, align 8, !noalias !701 + store ptr %13, ptr %7, align 8, !alias.scope !701 + %14 = load ptr, ptr %timer_, align 8 %executor_.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 288 - invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZN8coro_rpc15coro_connection11reset_timerEvEUlRKSt10error_codeE_NS_15any_io_executorEEEvRNS9_19implementation_typeERT_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %15, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i) + invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZN8coro_rpc15coro_connection11reset_timerEvEUlRKSt10error_codeE_NS_15any_io_executorEEEvRNS9_19implementation_typeERT_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %_ZNSt23enable_shared_from_thisIN8coro_rpc15coro_connectionEE16shared_from_thisEv.exit - %16 = load ptr, ptr %_M_refcount.i.i.i, align 8 - %cmp.not.i.i.i.i = icmp eq ptr %16, null + %15 = load ptr, ptr %_M_refcount.i.i.i, align 8 + %cmp.not.i.i.i.i = icmp eq ptr %15, null br i1 %cmp.not.i.i.i.i, label %return, label %if.then.i.i.i.i4 if.then.i.i.i.i4: ; preds = %invoke.cont - %_M_use_count.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 8 - %17 = load atomic i64, ptr %_M_use_count.i.i.i.i.i acquire, align 8 - %cmp.i.i.i.i.i = icmp eq i64 %17, 4294967297 - %18 = trunc i64 %17 to i32 + %_M_use_count.i.i.i.i.i = getelementptr inbounds i8, ptr %15, i64 8 + %16 = load atomic i64, ptr %_M_use_count.i.i.i.i.i acquire, align 8 + %cmp.i.i.i.i.i = icmp eq i64 %16, 4294967297 + %17 = trunc i64 %16 to i32 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %if.end.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then.i.i.i.i4 store i32 0, ptr %_M_use_count.i.i.i.i.i, align 8 - %_M_weak_count.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 12 + %_M_weak_count.i.i.i.i.i = getelementptr inbounds i8, ptr %15, i64 12 store i32 0, ptr %_M_weak_count.i.i.i.i.i, align 4 - %vtable.i.i.i.i.i = load ptr, ptr %16, align 8 + %vtable.i.i.i.i.i = load ptr, ptr %15, align 8 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 16 - %19 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - call void %19(ptr noundef nonnull align 8 dereferenceable(16) %16) #34 + %18 = load ptr, ptr %vfn.i.i.i.i.i, align 8 + call void %18(ptr noundef nonnull align 8 dereferenceable(16) %15) #34 br label %if.end8.sink.split.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %if.then.i.i.i.i4 - %20 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i = icmp eq i8 %20, 0 + %19 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i = icmp eq i8 %19, 0 br i1 %tobool.i.i.not.i.i.i.i.i, label %if.else.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i - %add.i.i.i.i.i.i = add nsw i32 %18, -1 + %add.i.i.i.i.i.i = add nsw i32 %17, -1 store i32 %add.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i if.else.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i - %21 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i, i32 -1 acq_rel, align 4 + %20 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i, %if.then.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i = phi i32 [ %18, %if.then.i.i.i.i.i.i ], [ %21, %if.else.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i = phi i32 [ %17, %if.then.i.i.i.i.i.i ], [ %20, %if.else.i.i.i.i.i.i ] %cmp6.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i, 1 br i1 %cmp6.i.i.i.i.i, label %if.then7.i.i.i.i.i, label %return if.then7.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i - %vtable.i.i.i.i.i.i.i = load ptr, ptr %16, align 8 + %vtable.i.i.i.i.i.i.i = load ptr, ptr %15, align 8 %vfn.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i.i.i, i64 16 - %22 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 - call void %22(ptr noundef nonnull align 8 dereferenceable(16) %16) #34 - %_M_weak_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 12 - %23 = load i8, ptr @__libc_single_threaded, align 1 - %tobool.i.i.not.i.i.i.i.i.i.i = icmp eq i8 %23, 0 + %21 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 + call void %21(ptr noundef nonnull align 8 dereferenceable(16) %15) #34 + %_M_weak_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %15, i64 12 + %22 = load i8, ptr @__libc_single_threaded, align 1 + %tobool.i.i.not.i.i.i.i.i.i.i = icmp eq i8 %22, 0 br i1 %tobool.i.i.not.i.i.i.i.i.i.i, label %if.else.i.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i - %24 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 - %add.i.i.i.i.i.i.i.i = add nsw i32 %24, -1 + %23 = load i32, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 + %add.i.i.i.i.i.i.i.i = add nsw i32 %23, -1 store i32 %add.i.i.i.i.i.i.i.i, ptr %_M_weak_count.i.i.i.i.i.i.i, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i: ; preds = %if.then7.i.i.i.i.i - %25 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 + %24 = atomicrmw volatile add ptr %_M_weak_count.i.i.i.i.i.i.i, i32 -1 acq_rel, align 4 br label %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i - %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %24, %if.then.i.i.i.i.i.i.i.i ], [ %25, %if.else.i.i.i.i.i.i.i.i ] + %retval.i.0.i.i.i.i.i.i.i = phi i32 [ %23, %if.then.i.i.i.i.i.i.i.i ], [ %24, %if.else.i.i.i.i.i.i.i.i ] %cmp.i.i.i.i.i.i.i = icmp eq i32 %retval.i.0.i.i.i.i.i.i.i, 1 br i1 %cmp.i.i.i.i.i.i.i, label %if.end8.sink.split.i.i.i.i.i, label %return if.end8.sink.split.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %if.then.i.i.i.i.i - %vtable2.i.i.i.i.i.i.i = load ptr, ptr %16, align 8 + %vtable2.i.i.i.i.i.i.i = load ptr, ptr %15, align 8 %vfn3.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable2.i.i.i.i.i.i.i, i64 24 - %26 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 - call void %26(ptr noundef nonnull align 8 dereferenceable(16) %16) #34 + %25 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 + call void %25(ptr noundef nonnull align 8 dereferenceable(16) %15) #34 br label %return return: ; preds = %if.end8.sink.split.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i.i, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %invoke.cont, %entry ret void lpad: ; preds = %_ZNSt23enable_shared_from_thisIN8coro_rpc15coro_connectionEE16shared_from_thisEv.exit - %27 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup call void @_ZZN8coro_rpc15coro_connection11reset_timerEvENUlRKSt10error_codeE_D2Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp) #34 - resume { ptr, i32 } %27 + resume { ptr, i32 } %26 } ; Function Attrs: mustprogress nounwind uwtable diff --git a/bench/z3/optimized/aig.cpp.ll b/bench/z3/optimized/aig.cpp.ll index 859ba33e75e..0d1e23357cc 100644 --- a/bench/z3/optimized/aig.cpp.ll +++ b/bench/z3/optimized/aig.cpp.ll @@ -12388,7 +12388,7 @@ if.end.if.end4_crit_edge: ; preds = %if.end br label %if.end4 if.then3: ; preds = %if.end - %xor.i = and i64 %2, -2 + %xor.i = xor i64 %2, 1 %4 = inttoptr i64 %xor.i to ptr store ptr %4, ptr %c, align 8 %5 = load i64, ptr %t, align 8 @@ -12964,14 +12964,9 @@ if.then23: ; preds = %_ZNK11aig_manager3i %xor.i50 = xor i64 %12, 1 %13 = inttoptr i64 %xor.i50 to ptr %cmp.i52.not.not = icmp eq i64 %and.i4.i, 0 - br i1 %cmp.i52.not.not, label %if.then25, label %if.else - -if.then25: ; preds = %if.then23 - %xor.i49 = xor i64 %8, 1 - br label %return.sink.split - -if.else: ; preds = %if.then23 - %xor.i = and i64 %7, -2 + %. = select i1 %cmp.i52.not.not, i64 %8, i64 %7 + %.148 = select i1 %cmp.i52.not.not, ptr %11, ptr %13 + %.149 = select i1 %cmp.i52.not.not, ptr %13, ptr %11 br label %return.sink.split if.else33: ; preds = %if.end13, %_ZNK11aig_manager3imp9is_not_eqERK7aig_litS3_.exit @@ -12995,14 +12990,9 @@ if.then35: ; preds = %_ZNK11aig_manager3i %xor.i63 = xor i64 %8, 1 %18 = inttoptr i64 %xor.i63 to ptr %cmp.i66.not.not = icmp eq i64 %and.i4.i55, 0 - br i1 %cmp.i66.not.not, label %if.then37, label %if.else41 - -if.then37: ; preds = %if.then35 - %xor.i64 = xor i64 %14, 1 - br label %return.sink.split - -if.else41: ; preds = %if.then35 - %xor.i61 = and i64 %7, -2 + %.150 = select i1 %cmp.i66.not.not, i64 %14, i64 %7 + %.151 = select i1 %cmp.i66.not.not, ptr %17, ptr %18 + %.152 = select i1 %cmp.i66.not.not, ptr %18, ptr %17 br label %return.sink.split if.else46: ; preds = %if.else33, %_ZNK11aig_manager3imp9is_not_eqERK7aig_litS3_.exit60 @@ -13025,14 +13015,9 @@ if.then48: ; preds = %_ZNK11aig_manager3i %xor.i78 = xor i64 %14, 1 %22 = inttoptr i64 %xor.i78 to ptr %cmp.i80.not.not = icmp eq i64 %and.i4.i69, 0 - br i1 %cmp.i80.not.not, label %if.then50, label %if.else54 - -if.then50: ; preds = %if.then48 - %xor.i77 = xor i64 %8, 1 - br label %return.sink.split - -if.else54: ; preds = %if.then48 - %xor.i76 = and i64 %19, -2 + %.153 = select i1 %cmp.i80.not.not, i64 %8, i64 %19 + %.154 = select i1 %cmp.i80.not.not, ptr %21, ptr %22 + %.155 = select i1 %cmp.i80.not.not, ptr %22, ptr %21 br label %return.sink.split if.else59: ; preds = %if.else46, %_ZNK11aig_manager3imp9is_not_eqERK7aig_litS3_.exit74 @@ -13054,21 +13039,17 @@ if.then61: ; preds = %_ZNK11aig_manager3i %xor.i91 = xor i64 %8, 1 %25 = inttoptr i64 %xor.i91 to ptr %cmp.i94.not.not = icmp eq i64 %and.i4.i83, 0 - br i1 %cmp.i94.not.not, label %if.then63, label %if.else67 - -if.then63: ; preds = %if.then61 - %xor.i92 = xor i64 %14, 1 - br label %return.sink.split - -if.else67: ; preds = %if.then61 - %xor.i90 = and i64 %19, -2 + %.156 = select i1 %cmp.i94.not.not, i64 %14, i64 %19 + %.157 = select i1 %cmp.i94.not.not, ptr %24, ptr %25 + %.158 = select i1 %cmp.i94.not.not, ptr %25, ptr %24 br label %return.sink.split -return.sink.split: ; preds = %if.else, %if.then25, %if.else41, %if.then37, %if.else54, %if.then50, %if.else67, %if.then63 - %xor.i92.sink = phi i64 [ %xor.i92, %if.then63 ], [ %xor.i90, %if.else67 ], [ %xor.i77, %if.then50 ], [ %xor.i76, %if.else54 ], [ %xor.i64, %if.then37 ], [ %xor.i61, %if.else41 ], [ %xor.i49, %if.then25 ], [ %xor.i, %if.else ] - %.sink145 = phi ptr [ %24, %if.then63 ], [ %25, %if.else67 ], [ %21, %if.then50 ], [ %22, %if.else54 ], [ %17, %if.then37 ], [ %18, %if.else41 ], [ %11, %if.then25 ], [ %13, %if.else ] - %.sink = phi ptr [ %25, %if.then63 ], [ %24, %if.else67 ], [ %22, %if.then50 ], [ %21, %if.else54 ], [ %18, %if.then37 ], [ %17, %if.else41 ], [ %13, %if.then25 ], [ %11, %if.else ] - %26 = inttoptr i64 %xor.i92.sink to ptr +return.sink.split: ; preds = %if.then61, %if.then48, %if.then35, %if.then23 + %.sink147 = phi i64 [ %., %if.then23 ], [ %.150, %if.then35 ], [ %.153, %if.then48 ], [ %.156, %if.then61 ] + %.sink145 = phi ptr [ %.148, %if.then23 ], [ %.151, %if.then35 ], [ %.154, %if.then48 ], [ %.157, %if.then61 ] + %.sink = phi ptr [ %.149, %if.then23 ], [ %.152, %if.then35 ], [ %.155, %if.then48 ], [ %.158, %if.then61 ] + %xor.i92 = xor i64 %.sink147, 1 + %26 = inttoptr i64 %xor.i92 to ptr store ptr %26, ptr %c, align 8 store ptr %.sink145, ptr %t, align 8 store ptr %.sink, ptr %e, align 8 diff --git a/bench/z3/optimized/goal2nlsat.cpp.ll b/bench/z3/optimized/goal2nlsat.cpp.ll index 60cb4254d89..b4b06e43767 100644 --- a/bench/z3/optimized/goal2nlsat.cpp.ll +++ b/bench/z3/optimized/goal2nlsat.cpp.ll @@ -1172,10 +1172,11 @@ if.then2.i.i.i144: ; preds = %if.then.i.i.i139 sw.bb93: ; preds = %_ZN8rationalD2Ev.exit130 %79 = and i32 %l.coerce, 1 %tobool.i.not = icmp eq i32 %79, 0 - %80 = load ptr, ptr %a62, align 8 br i1 %tobool.i.not, label %if.else106, label %if.then96 if.then96: ; preds = %sw.bb93 + %xor.i = xor i32 %l.coerce, 1 + %80 = load ptr, ptr %a62, align 8 %call.i148 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %80, i32 noundef 5, i32 noundef 3, ptr noundef nonnull %60, ptr noundef %call2.i111) to label %invoke.cont102 unwind label %lpad69 @@ -1203,7 +1204,8 @@ if.then2.i.i.i160: ; preds = %if.then.i.i.i155 to label %sw.epilog unwind label %lpad69 if.else106: ; preds = %sw.bb93 - %call.i164 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %80, i32 noundef 5, i32 noundef 4, ptr noundef nonnull %60, ptr noundef %call2.i111) + %83 = load ptr, ptr %a62, align 8 + %call.i164 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %83, i32 noundef 5, i32 noundef 4, ptr noundef nonnull %60, ptr noundef %call2.i111) to label %invoke.cont112 unwind label %lpad69 invoke.cont112: ; preds = %if.else106 @@ -1212,15 +1214,15 @@ invoke.cont112: ; preds = %if.else106 _ZN11ast_manager7inc_refEP3ast.exit.i166: ; preds = %invoke.cont112 %m_ref_count.i.i.i167 = getelementptr inbounds i8, ptr %call.i164, i64 8 - %83 = load i32, ptr %m_ref_count.i.i.i167, align 4 - %inc.i.i.i168 = add i32 %83, 1 + %84 = load i32, ptr %m_ref_count.i.i.i167, align 4 + %inc.i.i.i168 = add i32 %84, 1 store i32 %inc.i.i.i168, ptr %m_ref_count.i.i.i167, align 4 br label %if.then.i.i.i171 if.then.i.i.i171: ; preds = %invoke.cont112, %_ZN11ast_manager7inc_refEP3ast.exit.i166 %m_ref_count.i.i.i.i173 = getelementptr inbounds i8, ptr %60, i64 8 - %84 = load i32, ptr %m_ref_count.i.i.i.i173, align 4 - %dec.i.i.i.i174 = add i32 %84, -1 + %85 = load i32, ptr %m_ref_count.i.i.i.i173, align 4 + %dec.i.i.i.i174 = add i32 %85, -1 store i32 %dec.i.i.i.i174, ptr %m_ref_count.i.i.i.i173, align 4 %cmp.i.i.i175 = icmp eq i32 %dec.i.i.i.i174, 0 br i1 %cmp.i.i.i175, label %if.then2.i.i.i176, label %sw.epilog @@ -1230,13 +1232,14 @@ if.then2.i.i.i176: ; preds = %if.then.i.i.i171 to label %sw.epilog unwind label %lpad69 sw.bb117: ; preds = %_ZN8rationalD2Ev.exit130 - %85 = and i32 %l.coerce, 1 - %tobool.i179.not = icmp eq i32 %85, 0 - %86 = load ptr, ptr %a62, align 8 + %86 = and i32 %l.coerce, 1 + %tobool.i179.not = icmp eq i32 %86, 0 br i1 %tobool.i179.not, label %if.else130, label %if.then120 if.then120: ; preds = %sw.bb117 - %call.i182 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %86, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %60, ptr noundef %call2.i111) + %xor.i180 = xor i32 %l.coerce, 1 + %87 = load ptr, ptr %a62, align 8 + %call.i182 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %87, i32 noundef 5, i32 noundef 2, ptr noundef nonnull %60, ptr noundef %call2.i111) to label %invoke.cont126 unwind label %lpad69 invoke.cont126: ; preds = %if.then120 @@ -1245,15 +1248,15 @@ invoke.cont126: ; preds = %if.then120 _ZN11ast_manager7inc_refEP3ast.exit.i184: ; preds = %invoke.cont126 %m_ref_count.i.i.i185 = getelementptr inbounds i8, ptr %call.i182, i64 8 - %87 = load i32, ptr %m_ref_count.i.i.i185, align 4 - %inc.i.i.i186 = add i32 %87, 1 + %88 = load i32, ptr %m_ref_count.i.i.i185, align 4 + %inc.i.i.i186 = add i32 %88, 1 store i32 %inc.i.i.i186, ptr %m_ref_count.i.i.i185, align 4 br label %if.then.i.i.i189 if.then.i.i.i189: ; preds = %invoke.cont126, %_ZN11ast_manager7inc_refEP3ast.exit.i184 %m_ref_count.i.i.i.i191 = getelementptr inbounds i8, ptr %60, i64 8 - %88 = load i32, ptr %m_ref_count.i.i.i.i191, align 4 - %dec.i.i.i.i192 = add i32 %88, -1 + %89 = load i32, ptr %m_ref_count.i.i.i.i191, align 4 + %dec.i.i.i.i192 = add i32 %89, -1 store i32 %dec.i.i.i.i192, ptr %m_ref_count.i.i.i.i191, align 4 %cmp.i.i.i193 = icmp eq i32 %dec.i.i.i.i192, 0 br i1 %cmp.i.i.i193, label %if.then2.i.i.i194, label %sw.epilog @@ -1263,7 +1266,8 @@ if.then2.i.i.i194: ; preds = %if.then.i.i.i189 to label %sw.epilog unwind label %lpad69 if.else130: ; preds = %sw.bb117 - %call.i198 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %86, i32 noundef 5, i32 noundef 5, ptr noundef nonnull %60, ptr noundef %call2.i111) + %90 = load ptr, ptr %a62, align 8 + %call.i198 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4exprS1_(ptr noundef nonnull align 8 dereferenceable(976) %90, i32 noundef 5, i32 noundef 5, ptr noundef nonnull %60, ptr noundef %call2.i111) to label %invoke.cont136 unwind label %lpad69 invoke.cont136: ; preds = %if.else130 @@ -1272,15 +1276,15 @@ invoke.cont136: ; preds = %if.else130 _ZN11ast_manager7inc_refEP3ast.exit.i200: ; preds = %invoke.cont136 %m_ref_count.i.i.i201 = getelementptr inbounds i8, ptr %call.i198, i64 8 - %89 = load i32, ptr %m_ref_count.i.i.i201, align 4 - %inc.i.i.i202 = add i32 %89, 1 + %91 = load i32, ptr %m_ref_count.i.i.i201, align 4 + %inc.i.i.i202 = add i32 %91, 1 store i32 %inc.i.i.i202, ptr %m_ref_count.i.i.i201, align 4 br label %if.then.i.i.i205 if.then.i.i.i205: ; preds = %invoke.cont136, %_ZN11ast_manager7inc_refEP3ast.exit.i200 %m_ref_count.i.i.i.i207 = getelementptr inbounds i8, ptr %60, i64 8 - %90 = load i32, ptr %m_ref_count.i.i.i.i207, align 4 - %dec.i.i.i.i208 = add i32 %90, -1 + %92 = load i32, ptr %m_ref_count.i.i.i.i207, align 4 + %dec.i.i.i.i208 = add i32 %92, -1 store i32 %dec.i.i.i.i208, ptr %m_ref_count.i.i.i.i207, align 4 %cmp.i.i.i209 = icmp eq i32 %dec.i.i.i.i208, 0 br i1 %cmp.i.i.i209, label %if.then2.i.i.i210, label %sw.epilog @@ -1299,14 +1303,14 @@ invoke.cont141: ; preds = %sw.default sw.epilog: ; preds = %if.then.i.i.i205, %if.then2.i.i.i210, %if.then.i.i.i189, %if.then2.i.i.i194, %if.then.i.i.i171, %if.then2.i.i.i176, %if.then.i.i.i155, %if.then2.i.i.i160, %if.then.i.i.i139, %if.then2.i.i.i144 %call.i198.sink = phi ptr [ %call2.i132, %if.then2.i.i.i144 ], [ %call2.i132, %if.then.i.i.i139 ], [ %call.i148, %if.then2.i.i.i160 ], [ %call.i148, %if.then.i.i.i155 ], [ %call.i164, %if.then2.i.i.i176 ], [ %call.i164, %if.then.i.i.i171 ], [ %call.i182, %if.then2.i.i.i194 ], [ %call.i182, %if.then.i.i.i189 ], [ %call.i198, %if.then2.i.i.i210 ], [ %call.i198, %if.then.i.i.i205 ] - %l.sroa.0.1 = phi i32 [ %l.coerce, %if.then2.i.i.i144 ], [ %l.coerce, %if.then.i.i.i139 ], [ 0, %if.then2.i.i.i160 ], [ 0, %if.then.i.i.i155 ], [ %l.coerce, %if.then2.i.i.i176 ], [ %l.coerce, %if.then.i.i.i171 ], [ 0, %if.then2.i.i.i194 ], [ 0, %if.then.i.i.i189 ], [ %l.coerce, %if.then2.i.i.i210 ], [ %l.coerce, %if.then.i.i.i205 ] + %l.sroa.0.1 = phi i32 [ %l.coerce, %if.then2.i.i.i144 ], [ %l.coerce, %if.then.i.i.i139 ], [ %xor.i, %if.then2.i.i.i160 ], [ %xor.i, %if.then.i.i.i155 ], [ %l.coerce, %if.then2.i.i.i176 ], [ %l.coerce, %if.then.i.i.i171 ], [ %xor.i180, %if.then2.i.i.i194 ], [ %xor.i180, %if.then.i.i.i189 ], [ %l.coerce, %if.then2.i.i.i210 ], [ %l.coerce, %if.then.i.i.i205 ] store ptr %call.i198.sink, ptr %agg.result, align 8 br i1 %tobool.not.i113, label %_ZN7obj_refI4expr11ast_managerED2Ev.exit221, label %if.then.i.i.i214 if.then.i.i.i214: ; preds = %sw.epilog %m_ref_count.i.i.i.i216 = getelementptr inbounds i8, ptr %call2.i111, i64 8 - %91 = load i32, ptr %m_ref_count.i.i.i.i216, align 4 - %dec.i.i.i.i217 = add i32 %91, -1 + %93 = load i32, ptr %m_ref_count.i.i.i.i216, align 4 + %dec.i.i.i.i217 = add i32 %93, -1 store i32 %dec.i.i.i.i217, ptr %m_ref_count.i.i.i.i216, align 4 %cmp.i.i.i218 = icmp eq i32 %dec.i.i.i.i217, 0 br i1 %cmp.i.i.i218, label %if.then2.i.i.i219, label %_ZN7obj_refI4expr11ast_managerED2Ev.exit221 @@ -1316,42 +1320,42 @@ if.then2.i.i.i219: ; preds = %if.then.i.i.i214 to label %_ZN7obj_refI4expr11ast_managerED2Ev.exit221 unwind label %terminate.lpad.i220 terminate.lpad.i220: ; preds = %if.then2.i.i.i219 - %92 = landingpad { ptr, i32 } + %94 = landingpad { ptr, i32 } catch ptr null - %93 = extractvalue { ptr, i32 } %92, 0 - call void @__clang_call_terminate(ptr %93) #20 + %95 = extractvalue { ptr, i32 } %94, 0 + call void @__clang_call_terminate(ptr %95) #20 unreachable _ZN7obj_refI4expr11ast_managerED2Ev.exit221: ; preds = %sw.epilog, %if.then.i.i.i214, %if.then2.i.i.i219 - %94 = load ptr, ptr %m_nodes.i.i, align 8 - %cmp.i.i.i223 = icmp eq ptr %94, null + %96 = load ptr, ptr %m_nodes.i.i, align 8 + %cmp.i.i.i223 = icmp eq ptr %96, null br i1 %cmp.i.i.i223, label %if.end172, label %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i _ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i: ; preds = %_ZN7obj_refI4expr11ast_managerED2Ev.exit221 - %arrayidx.i.i.i = getelementptr inbounds i8, ptr %94, i64 -4 - %95 = load i32, ptr %arrayidx.i.i.i, align 4 - %96 = zext i32 %95 to i64 - %add.ptr.i.i224 = getelementptr inbounds ptr, ptr %94, i64 %96 - %cmp3.i.not.i.i = icmp eq i32 %95, 0 + %arrayidx.i.i.i = getelementptr inbounds i8, ptr %96, i64 -4 + %97 = load i32, ptr %arrayidx.i.i.i, align 4 + %98 = zext i32 %97 to i64 + %add.ptr.i.i224 = getelementptr inbounds ptr, ptr %96, i64 %98 + %cmp3.i.not.i.i = icmp eq i32 %97, 0 br i1 %cmp3.i.not.i.i, label %if.then.i.i.i.i.i, label %for.body.i.i.i225 for.body.i.i.i225: ; preds = %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i, %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i - %it.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i227, %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i ], [ %94, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i ] - %97 = load ptr, ptr %it.04.i.i.i, align 8 - %98 = load ptr, ptr %ps, align 8 - %tobool.not.i.i.i.i.i.i = icmp eq ptr %97, null + %it.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i227, %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i ], [ %96, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i ] + %99 = load ptr, ptr %it.04.i.i.i, align 8 + %100 = load ptr, ptr %ps, align 8 + %tobool.not.i.i.i.i.i.i = icmp eq ptr %99, null br i1 %tobool.not.i.i.i.i.i.i, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i, label %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %for.body.i.i.i225 - %m_ref_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %97, i64 8 - %99 = load i32, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 - %dec.i.i.i.i.i.i.i = add i32 %99, -1 + %m_ref_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %99, i64 8 + %101 = load i32, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 + %dec.i.i.i.i.i.i.i = add i32 %101, -1 store i32 %dec.i.i.i.i.i.i.i, ptr %m_ref_count.i.i.i.i.i.i.i, align 4 %cmp.i.i.i.i.i.i226 = icmp eq i32 %dec.i.i.i.i.i.i.i, 0 br i1 %cmp.i.i.i.i.i.i226, label %if.then2.i.i.i.i.i.i, label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i if.then2.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %98, ptr noundef nonnull %97) + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %100, ptr noundef nonnull %99) to label %_ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i unwind label %terminate.lpad.i.i _ZN15ref_vector_coreI4expr19ref_manager_wrapperIS0_11ast_managerEE7dec_refEPS0_.exit.i.i.i: ; preds = %if.then2.i.i.i.i.i.i, %if.then.i.i.i.i.i.i, %for.body.i.i.i225 @@ -1365,23 +1369,23 @@ invoke.cont8.i.i: ; preds = %_ZN15ref_vector_cor br i1 %tobool.not.i.i.i.i.i, label %if.end172, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %invoke.cont8.i.i, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i - %100 = phi ptr [ %.pre.i.i228, %invoke.cont8.i.i ], [ %94, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i ] - %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %100, i64 -8 + %102 = phi ptr [ %.pre.i.i228, %invoke.cont8.i.i ], [ %96, %_ZNK6vectorIP4exprLb0EjE4sizeEv.exit.i.i ] + %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %102, i64 -8 invoke void @_ZN6memory10deallocateEPv(ptr noundef nonnull %add.ptr.i.i.i.i.i.i) to label %if.end172 unwind label %terminate.lpad.i.i.i.i terminate.lpad.i.i.i.i: ; preds = %if.then.i.i.i.i.i - %101 = landingpad { ptr, i32 } + %103 = landingpad { ptr, i32 } catch ptr null - %102 = extractvalue { ptr, i32 } %101, 0 - call void @__clang_call_terminate(ptr %102) #20 + %104 = extractvalue { ptr, i32 } %103, 0 + call void @__clang_call_terminate(ptr %104) #20 unreachable terminate.lpad.i.i: ; preds = %if.then2.i.i.i.i.i.i - %103 = landingpad { ptr, i32 } + %105 = landingpad { ptr, i32 } catch ptr null - %104 = extractvalue { ptr, i32 } %103, 0 - call void @__clang_call_terminate(ptr %104) #20 + %106 = extractvalue { ptr, i32 } %105, 0 + call void @__clang_call_terminate(ptr %106) #20 unreachable ehcleanup142: ; preds = %lpad72, %lpad69 @@ -1404,7 +1408,7 @@ invoke.cont145: ; preds = %if.else144 to label %invoke.cont154 unwind label %lpad146 invoke.cont154: ; preds = %invoke.cont145 - %105 = load ptr, ptr %this, align 8 + %107 = load ptr, ptr %this, align 8 invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr nonnull sret(%"class.std::__cxx11::basic_string") align 8 %ref.tmp158, ptr noundef nonnull align 8 dereferenceable(112) %strm) to label %invoke.cont159 unwind label %lpad146 @@ -1414,14 +1418,14 @@ invoke.cont159: ; preds = %invoke.cont154 to label %invoke.cont161 unwind label %lpad160 invoke.cont161: ; preds = %invoke.cont159 - %106 = load ptr, ptr %this, align 8 - %m_bool_sort.i = getelementptr inbounds i8, ptr %106, i64 840 - %107 = load ptr, ptr %m_bool_sort.i, align 8 - %call.i.i.i232 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %105, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp157, i32 noundef 0, ptr noundef null, ptr noundef %107, ptr noundef null) + %108 = load ptr, ptr %this, align 8 + %m_bool_sort.i = getelementptr inbounds i8, ptr %108, i64 840 + %109 = load ptr, ptr %m_bool_sort.i, align 8 + %call.i.i.i232 = invoke noundef ptr @_ZN11ast_manager12mk_func_declERK6symboljPKP4sortS4_P14func_decl_info(ptr noundef nonnull align 8 dereferenceable(976) %107, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp157, i32 noundef 0, ptr noundef null, ptr noundef %109, ptr noundef null) to label %call.i.i.i.noexc unwind label %lpad160 call.i.i.i.noexc: ; preds = %invoke.cont161 - %call.i.i233 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %105, ptr noundef %call.i.i.i232, i32 noundef 0, ptr noundef null) + %call.i.i233 = invoke noundef ptr @_ZN11ast_manager6mk_appEP9func_decljPKP4expr(ptr noundef nonnull align 8 dereferenceable(976) %107, ptr noundef %call.i.i.i232, i32 noundef 0, ptr noundef null) to label %invoke.cont165 unwind label %lpad160 invoke.cont165: ; preds = %call.i.i.i.noexc @@ -1430,8 +1434,8 @@ invoke.cont165: ; preds = %call.i.i.i.noexc _ZN11ast_manager7inc_refEP3ast.exit.i235: ; preds = %invoke.cont165 %m_ref_count.i.i.i236 = getelementptr inbounds i8, ptr %call.i.i233, i64 8 - %108 = load i32, ptr %m_ref_count.i.i.i236, align 4 - %inc.i.i.i237 = add i32 %108, 1 + %110 = load i32, ptr %m_ref_count.i.i.i236, align 4 + %inc.i.i.i237 = add i32 %110, 1 store i32 %inc.i.i.i237, ptr %m_ref_count.i.i.i236, align 4 br label %invoke.cont167 @@ -1442,31 +1446,31 @@ invoke.cont167: ; preds = %invoke.cont165, %_Z br label %if.end172 lpad146: ; preds = %invoke.cont154, %invoke.cont145 - %109 = landingpad { ptr, i32 } + %111 = landingpad { ptr, i32 } cleanup br label %ehcleanup170 lpad160: ; preds = %call.i.i.i.noexc, %invoke.cont161, %invoke.cont159 - %110 = landingpad { ptr, i32 } + %112 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp158) #18 br label %ehcleanup170 ehcleanup170: ; preds = %lpad160, %lpad146 - %.pn = phi { ptr, i32 } [ %110, %lpad160 ], [ %109, %lpad146 ] + %.pn = phi { ptr, i32 } [ %112, %lpad160 ], [ %111, %lpad146 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %strm) #18 br label %ehcleanup184 if.end172: ; preds = %if.then.i.i.i.i.i, %invoke.cont8.i.i, %_ZN7obj_refI4expr11ast_managerED2Ev.exit221, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit, %invoke.cont167 %l.sroa.0.0 = phi i32 [ %l.coerce, %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit ], [ %l.coerce, %invoke.cont167 ], [ %l.sroa.0.1, %_ZN7obj_refI4expr11ast_managerED2Ev.exit221 ], [ %l.sroa.0.1, %invoke.cont8.i.i ], [ %l.sroa.0.1, %if.then.i.i.i.i.i ] - %111 = and i32 %l.sroa.0.0, 1 - %tobool.i248.not = icmp eq i32 %111, 0 + %113 = and i32 %l.sroa.0.0, 1 + %tobool.i248.not = icmp eq i32 %113, 0 br i1 %tobool.i248.not, label %nrvo.skipdtor, label %if.then175 if.then175: ; preds = %if.end172 - %112 = load ptr, ptr %this, align 8 - %113 = load ptr, ptr %agg.result, align 8 - %call.i249250 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4expr(ptr noundef nonnull align 8 dereferenceable(976) %112, i32 noundef 0, i32 noundef 8, ptr noundef %113) + %114 = load ptr, ptr %this, align 8 + %115 = load ptr, ptr %agg.result, align 8 + %call.i249250 = invoke noundef ptr @_ZN11ast_manager6mk_appEiiP4expr(ptr noundef nonnull align 8 dereferenceable(976) %114, i32 noundef 0, i32 noundef 8, ptr noundef %115) to label %invoke.cont179 unwind label %lpad invoke.cont179: ; preds = %if.then175 @@ -1475,26 +1479,26 @@ invoke.cont179: ; preds = %if.then175 _ZN11ast_manager7inc_refEP3ast.exit.i252: ; preds = %invoke.cont179 %m_ref_count.i.i.i253 = getelementptr inbounds i8, ptr %call.i249250, i64 8 - %114 = load i32, ptr %m_ref_count.i.i.i253, align 4 - %inc.i.i.i254 = add i32 %114, 1 + %116 = load i32, ptr %m_ref_count.i.i.i253, align 4 + %inc.i.i.i254 = add i32 %116, 1 store i32 %inc.i.i.i254, ptr %m_ref_count.i.i.i253, align 4 br label %if.end.i255 if.end.i255: ; preds = %_ZN11ast_manager7inc_refEP3ast.exit.i252, %invoke.cont179 - %tobool.not.i3.i256 = icmp eq ptr %113, null + %tobool.not.i3.i256 = icmp eq ptr %115, null br i1 %tobool.not.i3.i256, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit264, label %if.then.i.i.i257 if.then.i.i.i257: ; preds = %if.end.i255 - %115 = load ptr, ptr %m_manager.i, align 8 - %m_ref_count.i.i.i.i259 = getelementptr inbounds i8, ptr %113, i64 8 - %116 = load i32, ptr %m_ref_count.i.i.i.i259, align 4 - %dec.i.i.i.i260 = add i32 %116, -1 + %117 = load ptr, ptr %m_manager.i, align 8 + %m_ref_count.i.i.i.i259 = getelementptr inbounds i8, ptr %115, i64 8 + %118 = load i32, ptr %m_ref_count.i.i.i.i259, align 4 + %dec.i.i.i.i260 = add i32 %118, -1 store i32 %dec.i.i.i.i260, ptr %m_ref_count.i.i.i.i259, align 4 %cmp.i.i.i261 = icmp eq i32 %dec.i.i.i.i260, 0 br i1 %cmp.i.i.i261, label %if.then2.i.i.i262, label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit264 if.then2.i.i.i262: ; preds = %if.then.i.i.i257 - invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %115, ptr noundef nonnull %113) + invoke void @_ZN11ast_manager11delete_nodeEP3ast(ptr noundef nonnull align 8 dereferenceable(976) %117, ptr noundef nonnull %115) to label %_ZN7obj_refI4expr11ast_managerEaSEPS0_.exit264 unwind label %lpad _ZN7obj_refI4expr11ast_managerEaSEPS0_.exit264: ; preds = %if.then2.i.i.i262, %if.end.i255, %if.then.i.i.i257 diff --git a/bench/zed-rs/optimized/7od02cvs02zg2t1jcuk4h4evv.ll b/bench/zed-rs/optimized/7od02cvs02zg2t1jcuk4h4evv.ll index 33b16be4f17..e3c18801d42 100644 --- a/bench/zed-rs/optimized/7od02cvs02zg2t1jcuk4h4evv.ll +++ b/bench/zed-rs/optimized/7od02cvs02zg2t1jcuk4h4evv.ll @@ -8066,15 +8066,15 @@ define hidden noundef ptr @_ZN4gpui3app13async_context15AsyncAppContext6update17 %62 = invoke { ptr, ptr } @_ZN4gpui3app7AppCell10borrow_mut17ha3e0ec8ad11e2124E(ptr noundef nonnull align 8 %61, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.929187a7b0c067e161be6fea07eb31b8.54) to label %65 unwind label %63 -"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit": ; preds = %513, %507, %499, %55 - %.sroa.0.0 = phi ptr [ %60, %55 ], [ null, %499 ], [ null, %507 ], [ null, %513 ] +"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit": ; preds = %511, %505, %497, %55 + %.sroa.0.0 = phi ptr [ %60, %55 ], [ null, %497 ], [ null, %505 ], [ null, %511 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) ret ptr %.sroa.0.0 -.body18: ; preds = %63, %494, %.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %64, %63 ], [ %495, %494 ] +.body18: ; preds = %63, %492, %.body + %.pn = phi { ptr, i32 } [ %eh.lpad-body, %.body ], [ %64, %63 ], [ %493, %492 ] invoke void @"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %45) #35 - to label %516 unwind label %514 + to label %514 unwind label %512 63: ; preds = %"_ZN5alloc2rc17Weak$LT$T$C$A$GT$7upgrade17hbe8119e8c997afa2E.exit" %64 = landingpad { ptr, i32 } @@ -8096,7 +8096,7 @@ define hidden noundef ptr @_ZN4gpui3app13async_context15AsyncAppContext6update17 store i64 -1805779604736161218, ptr %69, align 8, !noalias !2928 %70 = getelementptr inbounds i8, ptr %66, i64 936 %71 = invoke noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h3f06c645fbe1faa8E.llvm.13196489250334621223"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %70, i64 noundef 7681223825621754390, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %41) - to label %.noexc unwind label %491 + to label %.noexc unwind label %489 .noexc: ; preds = %65 %72 = icmp eq ptr %71, null @@ -8105,7 +8105,7 @@ define hidden noundef ptr @_ZN4gpui3app13async_context15AsyncAppContext6update17 "_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.i.i.i": ; preds = %.noexc call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %39), !noalias !2931 invoke void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$6remove17h9365f5374dabc541E.llvm.13196489250334621223"(ptr noalias nocapture noundef nonnull sret([40 x i8]) align 8 dereferenceable(40) %39, ptr noalias noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull %71) - to label %.noexc15 unwind label %491 + to label %.noexc15 unwind label %489 .noexc15: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.i.i.i" %.sroa.3.0..sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %39, i64 16 @@ -8118,7 +8118,7 @@ define hidden noundef ptr @_ZN4gpui3app13async_context15AsyncAppContext6update17 "_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.thread.i.i.i": ; preds = %.noexc15, %.noexc %74 = invoke fastcc noundef nonnull ptr @"_ZN4gpui3app10AppContext12lease_global28_$u7b$$u7b$closure$u7d$$u7d$17h66e11b728b4fce7bE"() - to label %.noexc16 unwind label %491 + to label %.noexc16 unwind label %489 .noexc16: ; preds = %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.thread.i.i.i" call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40), !noalias !2944 @@ -8168,10 +8168,10 @@ _ZN4gpui3app10AppContext12lease_global17hbc3481a09f9f2930E.exit.i.i: ; preds = % .noexc7.i.i: ; preds = %89 unreachable -90: ; preds = %455, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.i.i.i, %420, %394, %_ZN10serde_json5value8to_value17hc70f6a104426645cE.exit.i.i.i.i, %316, %89, %_ZN4gpui3app10AppContext12lease_global17hbc3481a09f9f2930E.exit.i.i +90: ; preds = %453, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.i.i.i, %394, %_ZN10serde_json5value8to_value17hc70f6a104426645cE.exit.i.i.i.i, %316, %89, %_ZN4gpui3app10AppContext12lease_global17hbc3481a09f9f2930E.exit.i.i %91 = landingpad { ptr, i32 } cleanup - br label %488 + br label %486 "_ZN78_$LT$gpui..app..GlobalLease$LT$G$GT$$u20$as$u20$core..ops..deref..DerefMut$GT$9deref_mut17h80cc669ff7476475E.exit.i.i": ; preds = %.noexc.i.i call void @llvm.experimental.noalias.scope.decl(metadata !2951) @@ -8891,7 +8891,7 @@ default.unreachable: ; preds = %140 .body.i.i.i.i: ; preds = %.body14.i.i.i.i, %318, %168, %.body.i.i.i.i.i, %.body.i.i.i.i.i %.pn.pn.i.i.i.i = phi { ptr, i32 } [ %.pn.i.i.i.i, %.body14.i.i.i.i ], [ %319, %318 ], [ %.pn.pn.pn.pn.pn.i.i.i.i.i, %168 ], [ %.pn.pn.pn.pn.pn.i.i.i.i.i, %.body.i.i.i.i.i ], [ %.pn.pn.pn.pn.pn.i.i.i.i.i, %.body.i.i.i.i.i ] call fastcc void @"_ZN4core3ptr109drop_in_place$LT$core..option..Option$LT$language..language_settings..InlineCompletionSettingsContent$GT$$GT$17h2de994cdec59954dE"(ptr noalias noundef align 8 dereferenceable(24) %37) #35, !noalias !2984 - br label %488 + br label %486 318: ; preds = %125, %116 %319 = landingpad { ptr, i32 } @@ -9116,7 +9116,7 @@ default.unreachable: ; preds = %140 %384 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr76drop_in_place$LT$language..language_settings..AllLanguageSettingsContent$GT$17he6be440c8a5cefcbE"(ptr noalias noundef nonnull align 8 dereferenceable(416) %38) #35 - to label %488 unwind label %385, !noalias !3130 + to label %486 unwind label %385, !noalias !3130 385: ; preds = %383 %386 = landingpad { ptr, i32 } @@ -9203,302 +9203,300 @@ _ZN10serde_json5value8to_value17hc70f6a104426645cE.exit.i.i.i.i: ; preds = %"_ZN %414 = getelementptr inbounds i8, ptr %6, i64 24 store i64 0, ptr %414, align 8, !noalias !3126 %415 = invoke fastcc noundef nonnull ptr @_ZN6anyhow9__private10format_err17h72a43e378e179026E(ptr noalias nocapture noundef align 8 dereferenceable(48) %6) - to label %417 unwind label %448, !noalias !3129 + to label %417 unwind label %446, !noalias !3129 .thread.i.i.i.i: ; preds = %408, %401 %416 = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %397, ptr noundef nonnull align 8 dereferenceable(72) %9, i64 72, i1 false), !noalias !3138 - br label %488 + br label %486 417: ; preds = %410 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !3126 call void @llvm.experimental.noalias.scope.decl(metadata !3158) - %418 = and i64 %387, 7 - %419 = call i64 @llvm.umin.i64(i64 %418, i64 5) - switch i64 %419, label %420 [ + %418 = xor i64 %387, -9223372036854775808 + switch i64 %418, label %default.unreachable.i3.i.i.i [ i64 0, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i i64 1, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i i64 2, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i - i64 3, label %421 - i64 4, label %424 + i64 3, label %419 + i64 4, label %422 ] -420: ; preds = %417 - invoke void @"_ZN4core3ptr110drop_in_place$LT$indexmap..map..core..IndexMapCore$LT$alloc..string..String$C$serde_json..value..Value$GT$$GT$17h158faebac84b8b57E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) - to label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i unwind label %90 +default.unreachable.i3.i.i.i: ; preds = %417 + unreachable -421: ; preds = %417 +419: ; preds = %417 call void @llvm.experimental.noalias.scope.decl(metadata !3161) call void @llvm.experimental.noalias.scope.decl(metadata !3164) call void @llvm.experimental.noalias.scope.decl(metadata !3167) call void @llvm.experimental.noalias.scope.decl(metadata !3170) - %422 = icmp eq ptr %390, null - br i1 %422, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i" + %420 = icmp eq ptr %390, null + br i1 %420, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i" -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i": ; preds = %421 - %423 = load ptr, ptr %.sroa.5.0..sroa_idx.i.i8.i.i, align 8, !alias.scope !3173, !noalias !3176, !nonnull !11, !noundef !11 - call void @__rust_dealloc(ptr noundef nonnull %423, i64 noundef %393, i64 noundef 1) #37, !noalias !3178 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i": ; preds = %419 + %421 = load ptr, ptr %.sroa.5.0..sroa_idx.i.i8.i.i, align 8, !alias.scope !3173, !noalias !3176, !nonnull !11, !noundef !11 + call void @__rust_dealloc(ptr noundef nonnull %421, i64 noundef %393, i64 noundef 1) #37, !noalias !3178 br label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i -424: ; preds = %417 +422: ; preds = %417 call void @llvm.experimental.noalias.scope.decl(metadata !3179) call void @llvm.experimental.noalias.scope.decl(metadata !3182) - %425 = load ptr, ptr %.sroa.5.0..sroa_idx.i.i8.i.i, align 8, !alias.scope !3179, !noalias !3126, !nonnull !11, !noundef !11 - %426 = getelementptr inbounds i8, ptr %9, i64 24 - %427 = load i64, ptr %426, align 8, !alias.scope !3185, !noalias !3126, !noundef !11 - br label %428 - -428: ; preds = %430, %424 - %.sroa.0.0.i.i.i.i.i.i.i = phi i64 [ 0, %424 ], [ %432, %430 ] - %429 = icmp eq i64 %.sroa.0.0.i.i.i.i.i.i.i, %427 - br i1 %429, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i", label %430 - -430: ; preds = %428 - %431 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %425, i64 0, i64 %.sroa.0.0.i.i.i.i.i.i.i - %432 = add i64 %.sroa.0.0.i.i.i.i.i.i.i, 1 - invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h6c834ef8b2ff0960E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(72) %431) - to label %428 unwind label %435, !noalias !3186 - -433: ; preds = %437, %435 - %.sroa.0.1.i.i.i.i.i.i.i = phi i64 [ %432, %435 ], [ %439, %437 ] - %434 = icmp eq i64 %.sroa.0.1.i.i.i.i.i.i.i, %427 - br i1 %434, label %.body.i.i2.i.i.i, label %437 - -435: ; preds = %430 - %436 = landingpad { ptr, i32 } - cleanup - br label %433 - -437: ; preds = %433 - %438 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %425, i64 0, i64 %.sroa.0.1.i.i.i.i.i.i.i - %439 = add i64 %.sroa.0.1.i.i.i.i.i.i.i, 1 - invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h6c834ef8b2ff0960E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(72) %438) #35 - to label %433 unwind label %440, !noalias !3186 - -440: ; preds = %437 - %441 = landingpad { ptr, i32 } + %423 = load ptr, ptr %.sroa.5.0..sroa_idx.i.i8.i.i, align 8, !alias.scope !3179, !noalias !3126, !nonnull !11, !noundef !11 + %424 = getelementptr inbounds i8, ptr %9, i64 24 + %425 = load i64, ptr %424, align 8, !alias.scope !3185, !noalias !3126, !noundef !11 + br label %426 + +426: ; preds = %428, %422 + %.sroa.0.0.i.i.i.i.i.i.i = phi i64 [ 0, %422 ], [ %430, %428 ] + %427 = icmp eq i64 %.sroa.0.0.i.i.i.i.i.i.i, %425 + br i1 %427, label %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i", label %428 + +428: ; preds = %426 + %429 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %423, i64 0, i64 %.sroa.0.0.i.i.i.i.i.i.i + %430 = add i64 %.sroa.0.0.i.i.i.i.i.i.i, 1 + invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h6c834ef8b2ff0960E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(72) %429) + to label %426 unwind label %433, !noalias !3186 + +431: ; preds = %435, %433 + %.sroa.0.1.i.i.i.i.i.i.i = phi i64 [ %430, %433 ], [ %437, %435 ] + %432 = icmp eq i64 %.sroa.0.1.i.i.i.i.i.i.i, %425 + br i1 %432, label %.body.i.i2.i.i.i, label %435 + +433: ; preds = %428 + %434 = landingpad { ptr, i32 } + cleanup + br label %431 + +435: ; preds = %431 + %436 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %423, i64 0, i64 %.sroa.0.1.i.i.i.i.i.i.i + %437 = add i64 %.sroa.0.1.i.i.i.i.i.i.i, 1 + invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h6c834ef8b2ff0960E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(72) %436) #35 + to label %431 unwind label %438, !noalias !3186 + +438: ; preds = %435 + %439 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #36, !noalias !3186 unreachable -.body.i.i2.i.i.i: ; preds = %433 - %442 = icmp eq ptr %390, null - br i1 %442, label %488, label %443 +.body.i.i2.i.i.i: ; preds = %431 + %440 = icmp eq ptr %390, null + br i1 %440, label %486, label %441 -443: ; preds = %.body.i.i2.i.i.i - %444 = mul nuw i64 %393, 72 - call void @__rust_dealloc(ptr noundef nonnull %425, i64 noundef %444, i64 noundef 8) #37, !noalias !3187 - br label %488 +441: ; preds = %.body.i.i2.i.i.i + %442 = mul nuw i64 %393, 72 + call void @__rust_dealloc(ptr noundef nonnull %423, i64 noundef %442, i64 noundef 8) #37, !noalias !3187 + br label %486 -"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i": ; preds = %428 - %445 = icmp eq ptr %390, null - br i1 %445, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i, label %446 +"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i": ; preds = %426 + %443 = icmp eq ptr %390, null + br i1 %443, label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i, label %444 -446: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i" - %447 = mul nuw i64 %393, 72 - call void @__rust_dealloc(ptr noundef nonnull %425, i64 noundef %447, i64 noundef 8) #37, !noalias !3192 +444: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i" + %445 = mul nuw i64 %393, 72 + call void @__rust_dealloc(ptr noundef nonnull %423, i64 noundef %445, i64 noundef 8) #37, !noalias !3192 br label %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i -448: ; preds = %410 - %449 = landingpad { ptr, i32 } +446: ; preds = %410 + %447 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h6c834ef8b2ff0960E"(ptr noalias noundef align 8 dereferenceable(72) %9) #35 - to label %488 unwind label %450, !noalias !3129 + to label %486 unwind label %448, !noalias !3129 -450: ; preds = %448 - %451 = landingpad { ptr, i32 } +448: ; preds = %446 + %449 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #36, !noalias !3129 unreachable -_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i: ; preds = %446, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i", %421, %420, %417, %417, %417, %394 - %.sroa.0.3.i.ph.i.i.i = phi ptr [ %415, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i" ], [ %415, %421 ], [ %415, %417 ], [ %415, %417 ], [ %415, %417 ], [ %415, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i" ], [ %415, %446 ], [ %395, %394 ], [ %415, %420 ] +_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i: ; preds = %444, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i", %419, %417, %417, %417, %394 + %.sroa.0.3.i.ph.i.i.i = phi ptr [ %415, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i23.i.i.i.i" ], [ %415, %419 ], [ %415, %417 ], [ %415, %417 ], [ %415, %417 ], [ %415, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hee0821fcd6a85926E.llvm.5062695954853193952.exit.i.i.i.i.i" ], [ %415, %444 ], [ %395, %394 ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !3126 call void @llvm.lifetime.end.p0(i64 416, ptr nonnull %38), !noalias !2956 - br label %455 + br label %453 _ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.i.i.i: ; preds = %408, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.5062695954853193952.exit.i.i1.i.i.i.i.i.i.i", %402, %401, %396, %396, %396 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %397, ptr noundef nonnull align 8 dereferenceable(72) %9, i64 72, i1 false), !noalias !3138 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !3126 - %452 = getelementptr inbounds i8, ptr %7, i64 8 - store ptr null, ptr %452, align 8, !noalias !3126 - %453 = invoke noundef ptr @_ZN8settings14settings_store13SettingsStore16recompute_values17h53b4fd8bc92c4cdfE(ptr noalias noundef nonnull align 8 dereferenceable(328) %.sroa.3.0.copyload.i.i.i.i, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7, ptr noalias noundef nonnull align 8 dereferenceable(1176) %66) - to label %.noexc13.i.i unwind label %90 + %450 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr null, ptr %450, align 8, !noalias !3126 + %451 = invoke noundef ptr @_ZN8settings14settings_store13SettingsStore16recompute_values17h53b4fd8bc92c4cdfE(ptr noalias noundef nonnull align 8 dereferenceable(328) %.sroa.3.0.copyload.i.i.i.i, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7, ptr noalias noundef nonnull align 8 dereferenceable(1176) %66) + to label %.noexc12.i.i unwind label %90 -.noexc13.i.i: ; preds = %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.i.i.i +.noexc12.i.i: ; preds = %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.i.i.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !3126 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9), !noalias !3126 call void @llvm.lifetime.end.p0(i64 416, ptr nonnull %38), !noalias !2956 - %454 = icmp eq ptr %453, null - br i1 %454, label %456, label %455 + %452 = icmp eq ptr %451, null + br i1 %452, label %454, label %453 -455: ; preds = %.noexc13.i.i, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i - %.sroa.0.3.i4.i.i.i = phi ptr [ %.sroa.0.3.i.ph.i.i.i, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i ], [ %453, %.noexc13.i.i ] +453: ; preds = %.noexc12.i.i, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i + %.sroa.0.3.i5.i.i.i = phi ptr [ %.sroa.0.3.i.ph.i.i.i, %_ZN8settings14settings_store13SettingsStore22set_extension_settings17h9321f8597cccf401E.exit.thread.i.i.i ], [ %451, %.noexc12.i.i ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !3197 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull readonly align 8 dereferenceable(24) @anon.929187a7b0c067e161be6fea07eb31b8.209, i64 24, i1 false), !noalias !2956 - invoke void @_ZN4util21log_error_with_caller17h092546dacf3aec0cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull %.sroa.0.3.i4.i.i.i, i64 noundef 1) - to label %.noexc14.i.i unwind label %90 + invoke void @_ZN4util21log_error_with_caller17h092546dacf3aec0cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull %.sroa.0.3.i5.i.i.i, i64 noundef 1) + to label %.noexc13.i.i unwind label %90 -.noexc14.i.i: ; preds = %455 +.noexc13.i.i: ; preds = %453 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !3197 %.pre.i.i = load ptr, ptr %42, align 8, !noalias !2925 - %.pre22.i.i = load ptr, ptr %81, align 8, !noalias !2925 - br label %456 + %.pre21.i.i = load ptr, ptr %81, align 8, !noalias !2925 + br label %454 -456: ; preds = %.noexc14.i.i, %.noexc13.i.i - %457 = phi ptr [ %.sroa.5.0.copyload.i.i.i.i, %.noexc13.i.i ], [ %.pre22.i.i, %.noexc14.i.i ] - %458 = phi ptr [ %.sroa.3.0.copyload.i.i.i.i, %.noexc13.i.i ], [ %.pre.i.i, %.noexc14.i.i ] +454: ; preds = %.noexc13.i.i, %.noexc12.i.i + %455 = phi ptr [ %.sroa.5.0.copyload.i.i.i.i, %.noexc12.i.i ], [ %.pre21.i.i, %.noexc13.i.i ] + %456 = phi ptr [ %.sroa.3.0.copyload.i.i.i.i, %.noexc12.i.i ], [ %.pre.i.i, %.noexc13.i.i ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !3200 - %459 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 -5874881510729499277, ptr %459, align 8, !noalias !3200 - %460 = getelementptr inbounds i8, ptr %4, i64 16 - store i64 -1805779604736161218, ptr %460, align 8, !noalias !3200 + %457 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 -5874881510729499277, ptr %457, align 8, !noalias !3200 + %458 = getelementptr inbounds i8, ptr %4, i64 16 + store i64 -1805779604736161218, ptr %458, align 8, !noalias !3200 store i32 3, ptr %4, align 8, !noalias !3200 invoke void @_ZN4gpui3app10AppContext11push_effect17h5902c945acf2ad0cE(ptr noalias noundef nonnull align 8 dereferenceable(1176) %66, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %4) - to label %.noexc15.i.i unwind label %484, !noalias !3204 + to label %.noexc14.i.i unwind label %482, !noalias !3204 -.noexc15.i.i: ; preds = %456 +.noexc14.i.i: ; preds = %454 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !3200 - %461 = invoke { ptr, ptr } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h61510f843ac80185E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %70, i64 noundef -5874881510729499277, i64 noundef -1805779604736161218, ptr noundef nonnull align 1 %458, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %457) - to label %.noexc17 unwind label %491 - -.noexc17: ; preds = %.noexc15.i.i - %462 = extractvalue { ptr, ptr } %461, 0 - %463 = extractvalue { ptr, ptr } %461, 1 - %464 = icmp eq ptr %462, null - br i1 %464, label %493, label %465 - -465: ; preds = %.noexc17 - %466 = icmp ne ptr %463, null - call void @llvm.assume(i1 %466) - %467 = load ptr, ptr %463, align 8, !invariant.load !11 - %.not.i.i.i.i.i = icmp eq ptr %467, null - br i1 %.not.i.i.i.i.i, label %469, label %468 - -468: ; preds = %465 - invoke void %467(ptr noundef nonnull align 1 %462) - to label %469 unwind label %476 - -469: ; preds = %468, %465 - %470 = getelementptr inbounds i8, ptr %463, i64 8 - %471 = load i64, ptr %470, align 8, !range !353, !invariant.load !11 - %472 = getelementptr inbounds i8, ptr %463, i64 16 - %473 = load i64, ptr %472, align 8, !range !357, !invariant.load !11 - %474 = icmp ult i64 %473, -9223372036854775807 - call void @llvm.assume(i1 %474) - %475 = icmp eq i64 %471, 0 - br i1 %475, label %493, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i": ; preds = %469 - call void @__rust_dealloc(ptr noundef nonnull %462, i64 noundef %471, i64 noundef %473) #37 - br label %493 - -476: ; preds = %468 - %477 = landingpad { ptr, i32 } - cleanup - %478 = getelementptr inbounds i8, ptr %463, i64 8 - %479 = load i64, ptr %478, align 8, !range !353, !invariant.load !11 - %480 = getelementptr inbounds i8, ptr %463, i64 16 - %481 = load i64, ptr %480, align 8, !range !357, !invariant.load !11 - %482 = icmp ult i64 %481, -9223372036854775807 - call void @llvm.assume(i1 %482) - %483 = icmp eq i64 %479, 0 - br i1 %483, label %.body, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i" - -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i": ; preds = %476 - call void @__rust_dealloc(ptr noundef nonnull %462, i64 noundef %479, i64 noundef %481) #37 + %459 = invoke { ptr, ptr } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h61510f843ac80185E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %70, i64 noundef -5874881510729499277, i64 noundef -1805779604736161218, ptr noundef nonnull align 1 %456, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %455) + to label %.noexc17 unwind label %489 + +.noexc17: ; preds = %.noexc14.i.i + %460 = extractvalue { ptr, ptr } %459, 0 + %461 = extractvalue { ptr, ptr } %459, 1 + %462 = icmp eq ptr %460, null + br i1 %462, label %491, label %463 + +463: ; preds = %.noexc17 + %464 = icmp ne ptr %461, null + call void @llvm.assume(i1 %464) + %465 = load ptr, ptr %461, align 8, !invariant.load !11 + %.not.i.i.i.i.i = icmp eq ptr %465, null + br i1 %.not.i.i.i.i.i, label %467, label %466 + +466: ; preds = %463 + invoke void %465(ptr noundef nonnull align 1 %460) + to label %467 unwind label %474 + +467: ; preds = %466, %463 + %468 = getelementptr inbounds i8, ptr %461, i64 8 + %469 = load i64, ptr %468, align 8, !range !353, !invariant.load !11 + %470 = getelementptr inbounds i8, ptr %461, i64 16 + %471 = load i64, ptr %470, align 8, !range !357, !invariant.load !11 + %472 = icmp ult i64 %471, -9223372036854775807 + call void @llvm.assume(i1 %472) + %473 = icmp eq i64 %469, 0 + br i1 %473, label %491, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i": ; preds = %467 + call void @__rust_dealloc(ptr noundef nonnull %460, i64 noundef %469, i64 noundef %471) #37 + br label %491 + +474: ; preds = %466 + %475 = landingpad { ptr, i32 } + cleanup + %476 = getelementptr inbounds i8, ptr %461, i64 8 + %477 = load i64, ptr %476, align 8, !range !353, !invariant.load !11 + %478 = getelementptr inbounds i8, ptr %461, i64 16 + %479 = load i64, ptr %478, align 8, !range !357, !invariant.load !11 + %480 = icmp ult i64 %479, -9223372036854775807 + call void @llvm.assume(i1 %480) + %481 = icmp eq i64 %477, 0 + br i1 %481, label %.body, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i": ; preds = %474 + call void @__rust_dealloc(ptr noundef nonnull %460, i64 noundef %477, i64 noundef %479) #37 br label %.body -484: ; preds = %456 - %485 = landingpad { ptr, i32 } +482: ; preds = %454 + %483 = landingpad { ptr, i32 } cleanup - invoke fastcc void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$17h9c9b8493c60b8cc6E"(ptr nonnull %458, ptr nonnull readonly %457) #35 - to label %.body unwind label %486 + invoke fastcc void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$core..any..Any$GT$$GT$17h9c9b8493c60b8cc6E"(ptr nonnull %456, ptr nonnull readonly %455) #35 + to label %.body unwind label %484 -486: ; preds = %484 - %487 = landingpad { ptr, i32 } +484: ; preds = %482 + %485 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #36 unreachable -488: ; preds = %448, %443, %.body.i.i2.i.i.i, %.thread.i.i.i.i, %383, %.body.i.i.i.i, %90 - %.pn.ph.i.i = phi { ptr, i32 } [ %449, %448 ], [ %416, %.thread.i.i.i.i ], [ %436, %.body.i.i2.i.i.i ], [ %436, %443 ], [ %384, %383 ], [ %.pn.pn.i.i.i.i, %.body.i.i.i.i ], [ %91, %90 ] +486: ; preds = %446, %441, %.body.i.i2.i.i.i, %.thread.i.i.i.i, %383, %.body.i.i.i.i, %90 + %.pn.ph.i.i = phi { ptr, i32 } [ %447, %446 ], [ %416, %.thread.i.i.i.i ], [ %434, %.body.i.i2.i.i.i ], [ %434, %441 ], [ %384, %383 ], [ %.pn.pn.i.i.i.i, %.body.i.i.i.i ], [ %91, %90 ] invoke void @"_ZN4core3ptr90drop_in_place$LT$gpui..app..GlobalLease$LT$settings..settings_store..SettingsStore$GT$$GT$17hfe5f51b8097ca032E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %42) #35 - to label %.body unwind label %489 + to label %.body unwind label %487 -489: ; preds = %488 - %490 = landingpad { ptr, i32 } +487: ; preds = %486 + %488 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #36 unreachable -491: ; preds = %.noexc15.i.i, %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.thread.i.i.i", %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.i.i.i", %65 - %492 = landingpad { ptr, i32 } +489: ; preds = %.noexc14.i.i, %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.thread.i.i.i", %"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6remove17hc21f5673afae6942E.exit.i.i.i", %65 + %490 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %75, %476, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i", %484, %488, %491 - %eh.lpad-body = phi { ptr, i32 } [ %492, %491 ], [ %76, %75 ], [ %.pn.ph.i.i, %488 ], [ %485, %484 ], [ %477, %476 ], [ %477, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i" ] +.body: ; preds = %75, %474, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i", %482, %486, %489 + %eh.lpad-body = phi { ptr, i32 } [ %490, %489 ], [ %76, %75 ], [ %.pn.ph.i.i, %486 ], [ %483, %482 ], [ %475, %474 ], [ %475, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i4.i.i.i.i.i" ] invoke void @"_ZN4core3ptr41drop_in_place$LT$gpui..app..AppRefMut$GT$17h6600205256992dffE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %44) #35 - to label %.body18 unwind label %514 + to label %.body18 unwind label %512 -493: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i", %469, %.noexc17 +491: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.8900334472148293471.exit.i.i.i.i.i.i", %467, %.noexc17 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42), !noalias !2925 invoke void @"_ZN62_$LT$gpui..app..AppRefMut$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7538934c9907f33dE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %44) - to label %499 unwind label %494 + to label %497 unwind label %492 -494: ; preds = %493 - %495 = landingpad { ptr, i32 } +492: ; preds = %491 + %493 = landingpad { ptr, i32 } cleanup call void @llvm.experimental.noalias.scope.decl(metadata !3205) call void @llvm.experimental.noalias.scope.decl(metadata !3208) call void @llvm.experimental.noalias.scope.decl(metadata !3211) - %496 = load ptr, ptr %68, align 8, !alias.scope !3214, !nonnull !11, !align !147, !noundef !11 - %497 = load i64, ptr %496, align 8, !noalias !3217, !noundef !11 - %498 = add i64 %497, 1 - store i64 %498, ptr %496, align 8, !noalias !3217 + %494 = load ptr, ptr %68, align 8, !alias.scope !3214, !nonnull !11, !align !147, !noundef !11 + %495 = load i64, ptr %494, align 8, !noalias !3217, !noundef !11 + %496 = add i64 %495, 1 + store i64 %496, ptr %494, align 8, !noalias !3217 br label %.body18 -499: ; preds = %493 +497: ; preds = %491 call void @llvm.experimental.noalias.scope.decl(metadata !3218) call void @llvm.experimental.noalias.scope.decl(metadata !3221) call void @llvm.experimental.noalias.scope.decl(metadata !3224) - %500 = load ptr, ptr %68, align 8, !alias.scope !3227, !nonnull !11, !align !147, !noundef !11 - %501 = load i64, ptr %500, align 8, !noalias !3228, !noundef !11 - %502 = add i64 %501, 1 - store i64 %502, ptr %500, align 8, !noalias !3228 + %498 = load ptr, ptr %68, align 8, !alias.scope !3227, !nonnull !11, !align !147, !noundef !11 + %499 = load i64, ptr %498, align 8, !noalias !3228, !noundef !11 + %500 = add i64 %499, 1 + store i64 %500, ptr %498, align 8, !noalias !3228 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) call void @llvm.experimental.noalias.scope.decl(metadata !3229) call void @llvm.experimental.noalias.scope.decl(metadata !3232) - %503 = load ptr, ptr %45, align 8, !alias.scope !3235, !nonnull !11, !noundef !11 - %504 = load i64, ptr %503, align 8, !noalias !3235, !noundef !11 - %505 = add i64 %504, -1 - store i64 %505, ptr %503, align 8, !noalias !3235 - %506 = icmp eq i64 %505, 0 - br i1 %506, label %507, label %"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit" - -507: ; preds = %499 - %508 = getelementptr inbounds i8, ptr %503, i64 24 - call void @"_ZN4core3ptr42drop_in_place$LT$gpui..app..AppContext$GT$17h0cb716cbfce2b4f9E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(1176) %508), !noalias !3235 - %509 = getelementptr inbounds i8, ptr %503, i64 8 - %510 = load i64, ptr %509, align 8, !noalias !3235, !noundef !11 - %511 = add i64 %510, -1 - store i64 %511, ptr %509, align 8, !noalias !3235 - %512 = icmp eq i64 %511, 0 - br i1 %512, label %513, label %"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit" - -513: ; preds = %507 - call void @__rust_dealloc(ptr noundef nonnull %503, i64 noundef 1200, i64 noundef 8) #37, !noalias !3235 + %501 = load ptr, ptr %45, align 8, !alias.scope !3235, !nonnull !11, !noundef !11 + %502 = load i64, ptr %501, align 8, !noalias !3235, !noundef !11 + %503 = add i64 %502, -1 + store i64 %503, ptr %501, align 8, !noalias !3235 + %504 = icmp eq i64 %503, 0 + br i1 %504, label %505, label %"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit" + +505: ; preds = %497 + %506 = getelementptr inbounds i8, ptr %501, i64 24 + call void @"_ZN4core3ptr42drop_in_place$LT$gpui..app..AppContext$GT$17h0cb716cbfce2b4f9E.llvm.5062695954853193952"(ptr noalias noundef nonnull align 8 dereferenceable(1176) %506), !noalias !3235 + %507 = getelementptr inbounds i8, ptr %501, i64 8 + %508 = load i64, ptr %507, align 8, !noalias !3235, !noundef !11 + %509 = add i64 %508, -1 + store i64 %509, ptr %507, align 8, !noalias !3235 + %510 = icmp eq i64 %509, 0 + br i1 %510, label %511, label %"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit" + +511: ; preds = %505 + call void @__rust_dealloc(ptr noundef nonnull %501, i64 noundef 1200, i64 noundef 8) #37, !noalias !3235 br label %"_ZN4core3ptr60drop_in_place$LT$alloc..rc..Rc$LT$gpui..app..AppCell$GT$$GT$17h4ff7501508fce261E.exit" -514: ; preds = %.body, %.body18 - %515 = landingpad { ptr, i32 } +512: ; preds = %.body, %.body18 + %513 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #36 unreachable -516: ; preds = %.body18 +514: ; preds = %.body18 resume { ptr, i32 } %.pn } diff --git a/bench/zed-rs/optimized/9igvnisirgadr0nx586j3hgeh.ll b/bench/zed-rs/optimized/9igvnisirgadr0nx586j3hgeh.ll index b45c83e6ee8..a7c62f885cd 100644 --- a/bench/zed-rs/optimized/9igvnisirgadr0nx586j3hgeh.ll +++ b/bench/zed-rs/optimized/9igvnisirgadr0nx586j3hgeh.ll @@ -3341,7 +3341,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store ptr %.sroa.618.0.copyload.i, ptr %.sroa.3109.sroa.2.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i, ptr %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 13: ; preds = %9 %14 = icmp eq i8 %10, -128 @@ -3352,103 +3352,100 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %17 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %16, ptr %17, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 18: ; preds = %13 store i32 0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 5, ptr %.sroa.5.0..sroa_idx, align 8 - br label %45 + br label %44 19: ; preds = %13 %20 = icmp ult i8 %10, -123 - br i1 %20, label %22, label %21 + br i1 %20, label %.lr.ph.preheader, label %21 21: ; preds = %19 store i32 0, ptr %0, align 8 %.sroa.598.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.598.0..sroa_idx, align 8 - br label %45 + br label %44 -22: ; preds = %19 - %23 = and i8 %10, 127 - %24 = zext nneg i8 %23 to i64 - %.not = icmp eq i8 %23, 0 - br i1 %.not, label %.thread223, label %.lr.ph +.lr.ph.preheader: ; preds = %19 + %22 = xor i8 %10, -128 + %umax = zext nneg i8 %22 to i64 + br label %.lr.ph -._crit_edge: ; preds = %38 - %25 = icmp ult i32 %39, 268435456 - br i1 %25, label %28, label %34 +._crit_edge: ; preds = %37 + %23 = icmp ult i32 %38, 268435456 + br i1 %23, label %26, label %33 -.lr.ph: ; preds = %22, %38 - %.sroa.0168.0214 = phi i64 [ %40, %38 ], [ 0, %22 ] - %.sroa.084.0213 = phi i32 [ %43, %38 ], [ 0, %22 ] +.lr.ph: ; preds = %.lr.ph.preheader, %37 + %.sroa.0168.0214 = phi i64 [ %39, %37 ], [ 0, %.lr.ph.preheader ] + %.sroa.084.0213 = phi i32 [ %42, %37 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !856 store i8 0, ptr %4, align 1, !noalias !856 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !856 call void @"_ZN82_$LT$der..reader..nested..NestedReader$LT$R$GT$$u20$as$u20$der..reader..Reader$GT$9read_into17ha7ff7be306371eeaE.llvm.11317465494677454901"(ptr noalias nocapture noundef nonnull sret([56 x i8]) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !860 - %26 = load i32, ptr %3, align 8, !range !840, !noalias !856, !noundef !7 - %27 = icmp eq i32 %26, 2 - br i1 %27, label %38, label %44 + %24 = load i32, ptr %3, align 8, !range !840, !noalias !856, !noundef !7 + %25 = icmp eq i32 %24, 2 + br i1 %25, label %37, label %43 -28: ; preds = %._crit_edge - %29 = and i32 %43, 268435328 - %or.cond.i = icmp eq i32 %29, 128 - br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 +26: ; preds = %._crit_edge + %27 = and i32 %42, 268435328 + %or.cond.i = icmp eq i32 %27, 128 + br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %28 + +28: ; preds = %26 + %29 = add nsw i32 %38, -256 + %or.cond1.i = icmp ult i32 %29, 65280 + br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 30: ; preds = %28 - %31 = add nsw i32 %39, -256 - %or.cond1.i = icmp ult i32 %31, 65280 - br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %.thread223 - -.thread223: ; preds = %22, %30 - %.sroa.084.0.lcssa218221226 = phi i32 [ %43, %30 ], [ 0, %22 ] - %32 = add nsw i32 %.sroa.084.0.lcssa218221226, -65536 - %or.cond2.i = icmp ult i32 %32, 16711680 + %31 = add nsw i32 %38, -65536 + %or.cond2.i = icmp ult i32 %31, 16711680 %spec.select.i = select i1 %or.cond2.i, i8 -125, i8 -124 - %spec.select5.i = icmp ugt i32 %.sroa.084.0.lcssa218221226, 65535 + %spec.select5.i = icmp ugt i32 %38, 65535 br label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit -_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %30, %.thread223 - %.sroa.084.0.lcssa218222 = phi i32 [ %43, %28 ], [ %43, %30 ], [ %.sroa.084.0.lcssa218221226, %.thread223 ] - %.sroa.6.0.i = phi i8 [ -127, %28 ], [ -126, %30 ], [ %spec.select.i, %.thread223 ] - %.sroa.0.0.i = phi i1 [ true, %28 ], [ true, %30 ], [ %spec.select5.i, %.thread223 ] - %33 = icmp eq i8 %.sroa.6.0.i, %10 - %or.cond = select i1 %.sroa.0.0.i, i1 %33, i1 false - br i1 %or.cond, label %36, label %35 +_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %26, %28, %30 + %.sroa.6.0.i = phi i8 [ -127, %26 ], [ -126, %28 ], [ %spec.select.i, %30 ] + %.sroa.0.0.i = phi i1 [ true, %26 ], [ true, %28 ], [ %spec.select5.i, %30 ] + %32 = icmp eq i8 %.sroa.6.0.i, %10 + %or.cond = select i1 %.sroa.0.0.i, i1 %32, i1 false + br i1 %or.cond, label %35, label %34 -34: ; preds = %._crit_edge +33: ; preds = %._crit_edge store i32 0, ptr %0, align 8 %.sroa.2165.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %43, ptr %.sroa.2165.0..sroa_idx, align 4 + store i32 %42, ptr %.sroa.2165.0..sroa_idx, align 4 %.sroa.3166.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 12, ptr %.sroa.3166.0..sroa_idx, align 8 - br label %45 + br label %44 -35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit +34: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit store i32 0, ptr %0, align 8 %.sroa.593.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.593.0..sroa_idx, align 8 - br label %45 + br label %44 -36: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit - %37 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %.sroa.084.0.lcssa218222, ptr %37, align 4 +35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit + %36 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %42, ptr %36, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 -38: ; preds = %.lr.ph - %39 = shl i32 %.sroa.084.0213, 8 - %40 = add nuw nsw i64 %.sroa.0168.0214, 1 +37: ; preds = %.lr.ph + %38 = shl i32 %.sroa.084.0213, 8 + %39 = add nuw nsw i64 %.sroa.0168.0214, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !856 - %41 = load i8, ptr %4, align 1, !noalias !856, !noundef !7 + %40 = load i8, ptr %4, align 1, !noalias !856, !noundef !7 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !856 - %42 = zext i8 %41 to i32 - %43 = or disjoint i32 %39, %42 - %exitcond.not = icmp eq i64 %40, %24 + %41 = zext i8 %40 to i32 + %42 = or disjoint i32 %38, %41 + %exitcond.not = icmp eq i64 %39, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -44: ; preds = %.lr.ph +43: ; preds = %.lr.ph %.sroa.517.0..sroa_idx.i175 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.517.0.copyload.i176 = load i32, ptr %.sroa.517.0..sroa_idx.i175, align 4, !noalias !856 %.sroa.618.0..sroa_idx.i177 = getelementptr inbounds i8, ptr %3, i64 8 @@ -3463,7 +3460,7 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 %.sroa.5.sroa.7.0.extract.shift192 = lshr i32 %.sroa.517.0.copyload.i176, 8 %.sroa.5.sroa.7.0.extract.trunc193 = trunc nuw i32 %.sroa.5.sroa.7.0.extract.shift192 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !856 - store i32 %26, ptr %0, align 8 + store i32 %24, ptr %0, align 8 %.sroa.2154.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.5.sroa.0191.0.extract.trunc, ptr %.sroa.2154.0..sroa_idx, align 4 %.sroa.3155.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -3472,9 +3469,9 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 store ptr %.sroa.618.0.copyload.i178, ptr %.sroa.3155.sroa.2.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i180, ptr %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 -45: ; preds = %12, %34, %44, %15, %18, %21, %36, %35 +44: ; preds = %12, %33, %43, %15, %18, %21, %35, %34 ret void } @@ -3523,7 +3520,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store ptr %.sroa.618.0.copyload.i, ptr %.sroa.3109.sroa.2.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i, ptr %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 13: ; preds = %9 %14 = icmp eq i8 %10, -128 @@ -3534,103 +3531,100 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %17 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %16, ptr %17, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 18: ; preds = %13 store i32 0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 5, ptr %.sroa.5.0..sroa_idx, align 8 - br label %45 + br label %44 19: ; preds = %13 %20 = icmp ult i8 %10, -123 - br i1 %20, label %22, label %21 + br i1 %20, label %.lr.ph.preheader, label %21 21: ; preds = %19 store i32 0, ptr %0, align 8 %.sroa.598.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.598.0..sroa_idx, align 8 - br label %45 + br label %44 -22: ; preds = %19 - %23 = and i8 %10, 127 - %24 = zext nneg i8 %23 to i64 - %.not = icmp eq i8 %23, 0 - br i1 %.not, label %.thread223, label %.lr.ph +.lr.ph.preheader: ; preds = %19 + %22 = xor i8 %10, -128 + %umax = zext nneg i8 %22 to i64 + br label %.lr.ph -._crit_edge: ; preds = %38 - %25 = icmp ult i32 %39, 268435456 - br i1 %25, label %28, label %34 +._crit_edge: ; preds = %37 + %23 = icmp ult i32 %38, 268435456 + br i1 %23, label %26, label %33 -.lr.ph: ; preds = %22, %38 - %.sroa.0168.0214 = phi i64 [ %40, %38 ], [ 0, %22 ] - %.sroa.084.0213 = phi i32 [ %43, %38 ], [ 0, %22 ] +.lr.ph: ; preds = %.lr.ph.preheader, %37 + %.sroa.0168.0214 = phi i64 [ %39, %37 ], [ 0, %.lr.ph.preheader ] + %.sroa.084.0213 = phi i32 [ %42, %37 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !866 store i8 0, ptr %4, align 1, !noalias !866 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !866 call void @_ZN3der6reader6Reader9read_into17h459eeb46d343f193E(ptr noalias nocapture noundef nonnull sret([56 x i8]) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !870 - %26 = load i32, ptr %3, align 8, !range !840, !noalias !866, !noundef !7 - %27 = icmp eq i32 %26, 2 - br i1 %27, label %38, label %44 + %24 = load i32, ptr %3, align 8, !range !840, !noalias !866, !noundef !7 + %25 = icmp eq i32 %24, 2 + br i1 %25, label %37, label %43 -28: ; preds = %._crit_edge - %29 = and i32 %43, 268435328 - %or.cond.i = icmp eq i32 %29, 128 - br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 +26: ; preds = %._crit_edge + %27 = and i32 %42, 268435328 + %or.cond.i = icmp eq i32 %27, 128 + br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %28 + +28: ; preds = %26 + %29 = add nsw i32 %38, -256 + %or.cond1.i = icmp ult i32 %29, 65280 + br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 30: ; preds = %28 - %31 = add nsw i32 %39, -256 - %or.cond1.i = icmp ult i32 %31, 65280 - br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %.thread223 - -.thread223: ; preds = %22, %30 - %.sroa.084.0.lcssa218221226 = phi i32 [ %43, %30 ], [ 0, %22 ] - %32 = add nsw i32 %.sroa.084.0.lcssa218221226, -65536 - %or.cond2.i = icmp ult i32 %32, 16711680 + %31 = add nsw i32 %38, -65536 + %or.cond2.i = icmp ult i32 %31, 16711680 %spec.select.i = select i1 %or.cond2.i, i8 -125, i8 -124 - %spec.select5.i = icmp ugt i32 %.sroa.084.0.lcssa218221226, 65535 + %spec.select5.i = icmp ugt i32 %38, 65535 br label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit -_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %30, %.thread223 - %.sroa.084.0.lcssa218222 = phi i32 [ %43, %28 ], [ %43, %30 ], [ %.sroa.084.0.lcssa218221226, %.thread223 ] - %.sroa.6.0.i = phi i8 [ -127, %28 ], [ -126, %30 ], [ %spec.select.i, %.thread223 ] - %.sroa.0.0.i = phi i1 [ true, %28 ], [ true, %30 ], [ %spec.select5.i, %.thread223 ] - %33 = icmp eq i8 %.sroa.6.0.i, %10 - %or.cond = select i1 %.sroa.0.0.i, i1 %33, i1 false - br i1 %or.cond, label %36, label %35 +_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %26, %28, %30 + %.sroa.6.0.i = phi i8 [ -127, %26 ], [ -126, %28 ], [ %spec.select.i, %30 ] + %.sroa.0.0.i = phi i1 [ true, %26 ], [ true, %28 ], [ %spec.select5.i, %30 ] + %32 = icmp eq i8 %.sroa.6.0.i, %10 + %or.cond = select i1 %.sroa.0.0.i, i1 %32, i1 false + br i1 %or.cond, label %35, label %34 -34: ; preds = %._crit_edge +33: ; preds = %._crit_edge store i32 0, ptr %0, align 8 %.sroa.2165.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %43, ptr %.sroa.2165.0..sroa_idx, align 4 + store i32 %42, ptr %.sroa.2165.0..sroa_idx, align 4 %.sroa.3166.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 12, ptr %.sroa.3166.0..sroa_idx, align 8 - br label %45 + br label %44 -35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit +34: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit store i32 0, ptr %0, align 8 %.sroa.593.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.593.0..sroa_idx, align 8 - br label %45 + br label %44 -36: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit - %37 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %.sroa.084.0.lcssa218222, ptr %37, align 4 +35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit + %36 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %42, ptr %36, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 -38: ; preds = %.lr.ph - %39 = shl i32 %.sroa.084.0213, 8 - %40 = add nuw nsw i64 %.sroa.0168.0214, 1 +37: ; preds = %.lr.ph + %38 = shl i32 %.sroa.084.0213, 8 + %39 = add nuw nsw i64 %.sroa.0168.0214, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !866 - %41 = load i8, ptr %4, align 1, !noalias !866, !noundef !7 + %40 = load i8, ptr %4, align 1, !noalias !866, !noundef !7 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !866 - %42 = zext i8 %41 to i32 - %43 = or disjoint i32 %39, %42 - %exitcond.not = icmp eq i64 %40, %24 + %41 = zext i8 %40 to i32 + %42 = or disjoint i32 %38, %41 + %exitcond.not = icmp eq i64 %39, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -44: ; preds = %.lr.ph +43: ; preds = %.lr.ph %.sroa.517.0..sroa_idx.i175 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.517.0.copyload.i176 = load i32, ptr %.sroa.517.0..sroa_idx.i175, align 4, !noalias !866 %.sroa.618.0..sroa_idx.i177 = getelementptr inbounds i8, ptr %3, i64 8 @@ -3645,7 +3639,7 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 %.sroa.5.sroa.7.0.extract.shift192 = lshr i32 %.sroa.517.0.copyload.i176, 8 %.sroa.5.sroa.7.0.extract.trunc193 = trunc nuw i32 %.sroa.5.sroa.7.0.extract.shift192 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !866 - store i32 %26, ptr %0, align 8 + store i32 %24, ptr %0, align 8 %.sroa.2154.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.5.sroa.0191.0.extract.trunc, ptr %.sroa.2154.0..sroa_idx, align 4 %.sroa.3155.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -3654,9 +3648,9 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 store ptr %.sroa.618.0.copyload.i178, ptr %.sroa.3155.sroa.2.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i180, ptr %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 -45: ; preds = %12, %34, %44, %15, %18, %21, %36, %35 +44: ; preds = %12, %33, %43, %15, %18, %21, %35, %34 ret void } @@ -3705,7 +3699,7 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod store ptr %.sroa.618.0.copyload.i, ptr %.sroa.3109.sroa.2.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i, ptr %.sroa.3109.sroa.3.0..sroa.3109.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 13: ; preds = %9 %14 = icmp eq i8 %10, -128 @@ -3716,103 +3710,100 @@ define hidden void @"_ZN59_$LT$der..length..Length$u20$as$u20$der..decode..Decod %17 = getelementptr inbounds i8, ptr %0, i64 4 store i32 %16, ptr %17, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 18: ; preds = %13 store i32 0, ptr %0, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 5, ptr %.sroa.5.0..sroa_idx, align 8 - br label %45 + br label %44 19: ; preds = %13 %20 = icmp ult i8 %10, -123 - br i1 %20, label %22, label %21 + br i1 %20, label %.lr.ph.preheader, label %21 21: ; preds = %19 store i32 0, ptr %0, align 8 %.sroa.598.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.598.0..sroa_idx, align 8 - br label %45 + br label %44 -22: ; preds = %19 - %23 = and i8 %10, 127 - %24 = zext nneg i8 %23 to i64 - %.not = icmp eq i8 %23, 0 - br i1 %.not, label %.thread223, label %.lr.ph +.lr.ph.preheader: ; preds = %19 + %22 = xor i8 %10, -128 + %umax = zext nneg i8 %22 to i64 + br label %.lr.ph -._crit_edge: ; preds = %38 - %25 = icmp ult i32 %39, 268435456 - br i1 %25, label %28, label %34 +._crit_edge: ; preds = %37 + %23 = icmp ult i32 %38, 268435456 + br i1 %23, label %26, label %33 -.lr.ph: ; preds = %22, %38 - %.sroa.0168.0214 = phi i64 [ %40, %38 ], [ 0, %22 ] - %.sroa.084.0213 = phi i32 [ %43, %38 ], [ 0, %22 ] +.lr.ph: ; preds = %.lr.ph.preheader, %37 + %.sroa.0168.0214 = phi i64 [ %39, %37 ], [ 0, %.lr.ph.preheader ] + %.sroa.084.0213 = phi i32 [ %42, %37 ], [ 0, %.lr.ph.preheader ] call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4), !noalias !876 store i8 0, ptr %4, align 1, !noalias !876 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3), !noalias !876 call void @"_ZN82_$LT$der..reader..nested..NestedReader$LT$R$GT$$u20$as$u20$der..reader..Reader$GT$9read_into17h68cc7c7b0186b561E"(ptr noalias nocapture noundef nonnull sret([56 x i8]) align 8 dereferenceable(56) %3, ptr noalias noundef nonnull align 8 dereferenceable(16) %1, ptr noalias noundef nonnull align 1 %4, i64 noundef 1), !noalias !880 - %26 = load i32, ptr %3, align 8, !range !840, !noalias !876, !noundef !7 - %27 = icmp eq i32 %26, 2 - br i1 %27, label %38, label %44 + %24 = load i32, ptr %3, align 8, !range !840, !noalias !876, !noundef !7 + %25 = icmp eq i32 %24, 2 + br i1 %25, label %37, label %43 + +26: ; preds = %._crit_edge + %27 = and i32 %42, 268435328 + %or.cond.i = icmp eq i32 %27, 128 + br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %28 -28: ; preds = %._crit_edge - %29 = and i32 %43, 268435328 - %or.cond.i = icmp eq i32 %29, 128 - br i1 %or.cond.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 +28: ; preds = %26 + %29 = add nsw i32 %38, -256 + %or.cond1.i = icmp ult i32 %29, 65280 + br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %30 30: ; preds = %28 - %31 = add nsw i32 %39, -256 - %or.cond1.i = icmp ult i32 %31, 65280 - br i1 %or.cond1.i, label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit, label %.thread223 - -.thread223: ; preds = %22, %30 - %.sroa.084.0.lcssa218221226 = phi i32 [ %43, %30 ], [ 0, %22 ] - %32 = add nsw i32 %.sroa.084.0.lcssa218221226, -65536 - %or.cond2.i = icmp ult i32 %32, 16711680 + %31 = add nsw i32 %38, -65536 + %or.cond2.i = icmp ult i32 %31, 16711680 %spec.select.i = select i1 %or.cond2.i, i8 -125, i8 -124 - %spec.select5.i = icmp ugt i32 %.sroa.084.0.lcssa218221226, 65535 + %spec.select5.i = icmp ugt i32 %38, 65535 br label %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit -_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %30, %.thread223 - %.sroa.084.0.lcssa218222 = phi i32 [ %43, %28 ], [ %43, %30 ], [ %.sroa.084.0.lcssa218221226, %.thread223 ] - %.sroa.6.0.i = phi i8 [ -127, %28 ], [ -126, %30 ], [ %spec.select.i, %.thread223 ] - %.sroa.0.0.i = phi i1 [ true, %28 ], [ true, %30 ], [ %spec.select5.i, %.thread223 ] - %33 = icmp eq i8 %.sroa.6.0.i, %10 - %or.cond = select i1 %.sroa.0.0.i, i1 %33, i1 false - br i1 %or.cond, label %36, label %35 +_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %26, %28, %30 + %.sroa.6.0.i = phi i8 [ -127, %26 ], [ -126, %28 ], [ %spec.select.i, %30 ] + %.sroa.0.0.i = phi i1 [ true, %26 ], [ true, %28 ], [ %spec.select5.i, %30 ] + %32 = icmp eq i8 %.sroa.6.0.i, %10 + %or.cond = select i1 %.sroa.0.0.i, i1 %32, i1 false + br i1 %or.cond, label %35, label %34 -34: ; preds = %._crit_edge +33: ; preds = %._crit_edge store i32 0, ptr %0, align 8 %.sroa.2165.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %43, ptr %.sroa.2165.0..sroa_idx, align 4 + store i32 %42, ptr %.sroa.2165.0..sroa_idx, align 4 %.sroa.3166.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 12, ptr %.sroa.3166.0..sroa_idx, align 8 - br label %45 + br label %44 -35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit +34: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit store i32 0, ptr %0, align 8 %.sroa.593.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 13, ptr %.sroa.593.0..sroa_idx, align 8 - br label %45 + br label %44 -36: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit - %37 = getelementptr inbounds i8, ptr %0, i64 4 - store i32 %.sroa.084.0.lcssa218222, ptr %37, align 4 +35: ; preds = %_ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit + %36 = getelementptr inbounds i8, ptr %0, i64 4 + store i32 %42, ptr %36, align 4 store i32 2, ptr %0, align 8 - br label %45 + br label %44 -38: ; preds = %.lr.ph - %39 = shl i32 %.sroa.084.0213, 8 - %40 = add nuw nsw i64 %.sroa.0168.0214, 1 +37: ; preds = %.lr.ph + %38 = shl i32 %.sroa.084.0213, 8 + %39 = add nuw nsw i64 %.sroa.0168.0214, 1 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3), !noalias !876 - %41 = load i8, ptr %4, align 1, !noalias !876, !noundef !7 + %40 = load i8, ptr %4, align 1, !noalias !876, !noundef !7 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !876 - %42 = zext i8 %41 to i32 - %43 = or disjoint i32 %39, %42 - %exitcond.not = icmp eq i64 %40, %24 + %41 = zext i8 %40 to i32 + %42 = or disjoint i32 %38, %41 + %exitcond.not = icmp eq i64 %39, %umax br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -44: ; preds = %.lr.ph +43: ; preds = %.lr.ph %.sroa.517.0..sroa_idx.i175 = getelementptr inbounds i8, ptr %3, i64 4 %.sroa.517.0.copyload.i176 = load i32, ptr %.sroa.517.0..sroa_idx.i175, align 4, !noalias !876 %.sroa.618.0..sroa_idx.i177 = getelementptr inbounds i8, ptr %3, i64 8 @@ -3827,7 +3818,7 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 %.sroa.5.sroa.7.0.extract.shift192 = lshr i32 %.sroa.517.0.copyload.i176, 8 %.sroa.5.sroa.7.0.extract.trunc193 = trunc nuw i32 %.sroa.5.sroa.7.0.extract.shift192 to i24 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4), !noalias !876 - store i32 %26, ptr %0, align 8 + store i32 %24, ptr %0, align 8 %.sroa.2154.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.5.sroa.0191.0.extract.trunc, ptr %.sroa.2154.0..sroa_idx, align 4 %.sroa.3155.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 @@ -3836,9 +3827,9 @@ _ZN3der6length6Length13initial_octet17h9ee421196ad7b448E.exit: ; preds = %28, %3 store ptr %.sroa.618.0.copyload.i178, ptr %.sroa.3155.sroa.2.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.719.0.copyload.i180, ptr %.sroa.3155.sroa.3.0..sroa.3155.0..sroa_idx.sroa_idx, align 8 - br label %45 + br label %44 -45: ; preds = %12, %34, %44, %15, %18, %21, %36, %35 +44: ; preds = %12, %33, %43, %15, %18, %21, %35, %34 ret void } diff --git a/bench/zstd/optimized/divsufsort.c.ll b/bench/zstd/optimized/divsufsort.c.ll index 12a2e86db1b..a0b6ea95599 100644 --- a/bench/zstd/optimized/divsufsort.c.ll +++ b/bench/zstd/optimized/divsufsort.c.ll @@ -6936,7 +6936,7 @@ do.body.i: ; preds = %if.then28.i, %do.bo br i1 %cmp31.i, label %do.body.i, label %do.end.i, !llvm.loop !87 do.end.i: ; preds = %do.body.i - %xor.i = and i32 %x.2.i, -2 + %xor.i = xor i32 %x.2.i, 1 br label %if.end33.i if.end33.i: ; preds = %do.end.i, %if.then28.i @@ -6961,7 +6961,7 @@ if.then42.i: ; preds = %if.end38.i %not43.i = xor i32 %18, -1 %idx.ext44.i = zext nneg i32 %not43.i to i64 %add.ptr45.i = getelementptr inbounds i32, ptr %PA, i64 %idx.ext44.i - %or46.i = or disjoint i32 %x.3.i, 1 + %or46.i = or i32 %x.3.i, 1 br label %for.cond.i.outer.backedge for.cond.i.outer.backedge: ; preds = %if.then42.i, %if.else47.i, %if.then146.i, %if.else151.i @@ -7003,7 +7003,7 @@ do.body58.i: ; preds = %if.then54.i, %do.bo br i1 %cmp62.i, label %do.body58.i, label %do.end64.i, !llvm.loop !88 do.end64.i: ; preds = %do.body58.i - %xor65.i = and i32 %x.2.i, -3 + %xor65.i = xor i32 %x.2.i, 2 br label %if.end66.i if.end66.i: ; preds = %do.end64.i, %if.then54.i @@ -7039,7 +7039,7 @@ if.end76.i: ; preds = %if.end66.i %26 = load i32, ptr %incdec.ptr68.i, align 4 %cmp77.i = icmp slt i32 %26, 0 %not80.i = xor i32 %26, -1 - %or83.i = or disjoint i32 %x.5.i, 2 + %or83.i = or i32 %x.5.i, 2 %idx.ext81.i.pn.in = select i1 %cmp77.i, i32 %not80.i, i32 %26 %x.2.i.be = select i1 %cmp77.i, i32 %or83.i, i32 %x.5.i %idx.ext81.i.pn = zext i32 %idx.ext81.i.pn.in to i64 @@ -7066,7 +7066,7 @@ do.body92.i: ; preds = %if.else88.i, %do.bo br i1 %cmp96.i, label %do.body92.i, label %do.end98.i, !llvm.loop !90 do.end98.i: ; preds = %do.body92.i - %xor99.i = and i32 %x.2.i, -2 + %xor99.i = xor i32 %x.2.i, 1 br label %if.end100.i if.end100.i: ; preds = %do.end98.i, %if.else88.i @@ -7100,13 +7100,17 @@ do.body111.i: ; preds = %if.end106.i, %do.bo store i32 %33, ptr %c.5.i, align 4 %34 = load i32, ptr %incdec.ptr113.i, align 4 %cmp115.i = icmp slt i32 %34, 0 - br i1 %cmp115.i, label %do.body111.i, label %if.end119.i, !llvm.loop !91 + br i1 %cmp115.i, label %do.body111.i, label %do.end117.i, !llvm.loop !91 -if.end119.i: ; preds = %do.body111.i, %if.end106.i - %35 = phi i32 [ %.pre160.i, %if.end106.i ], [ %34, %do.body111.i ] - %c.4.i = phi ptr [ %c.0.i, %if.end106.i ], [ %incdec.ptr113.i, %do.body111.i ] - %a.9.i = phi ptr [ %incdec.ptr102.i, %if.end106.i ], [ %incdec.ptr112.i, %do.body111.i ] - %x.7.i = phi i32 [ %x.6.i, %if.end106.i ], [ 0, %do.body111.i ] +do.end117.i: ; preds = %do.body111.i + %xor118.i = xor i32 %x.6.i, 2 + br label %if.end119.i + +if.end119.i: ; preds = %do.end117.i, %if.end106.i + %35 = phi i32 [ %34, %do.end117.i ], [ %.pre160.i, %if.end106.i ] + %c.4.i = phi ptr [ %incdec.ptr113.i, %do.end117.i ], [ %c.0.i, %if.end106.i ] + %a.9.i = phi ptr [ %incdec.ptr112.i, %do.end117.i ], [ %incdec.ptr102.i, %if.end106.i ] + %x.7.i = phi i32 [ %xor118.i, %do.end117.i ], [ %x.6.i, %if.end106.i ] %incdec.ptr120.i = getelementptr inbounds i8, ptr %a.9.i, i64 -4 store i32 %35, ptr %a.9.i, align 4 %36 = load i32, ptr %incdec.ptr120.i, align 4 @@ -7147,7 +7151,7 @@ if.then146.i: ; preds = %if.end132.i %not147.i = xor i32 %41, -1 %idx.ext148.i = zext nneg i32 %not147.i to i64 %add.ptr149.i = getelementptr inbounds i32, ptr %PA, i64 %idx.ext148.i - %or150.i = or disjoint i32 %x.8.i, 2 + %or150.i = or i32 %x.8.i, 2 br label %for.cond.i.outer.backedge if.else151.i: ; preds = %if.end132.i diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..157ff98b178 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/97289 # Please rebase manually # git fetch origin