diff --git a/bench/darktable/optimized/RawImageDataU16.cpp.ll b/bench/darktable/optimized/RawImageDataU16.cpp.ll index 0072a1abb0..9e22484672 100644 --- a/bench/darktable/optimized/RawImageDataU16.cpp.ll +++ b/bench/darktable/optimized/RawImageDataU16.cpp.ll @@ -463,7 +463,7 @@ define hidden void @_ZN8rawspeed15RawImageDataU1619calculateBlackAreasEv(ptr nou %238 = zext i32 %230 to i64 %239 = mul nsw i64 %238, -131072 %240 = and i32 %77, 6 - %241 = sub i32 %80, %240 + %241 = and i32 %77, -8 %242 = add i32 %241, %75 %243 = insertelement <8 x i32> poison, i32 %75, i64 0 %244 = shufflevector <8 x i32> %243, <8 x i32> poison, <8 x i32> zeroinitializer diff --git a/bench/darktable/optimized/UncompressedDecompressor.cpp.ll b/bench/darktable/optimized/UncompressedDecompressor.cpp.ll index 6cbc08ef5f..f968e4481c 100644 --- a/bench/darktable/optimized/UncompressedDecompressor.cpp.ll +++ b/bench/darktable/optimized/UncompressedDecompressor.cpp.ll @@ -3027,7 +3027,7 @@ define hidden void @_ZN8rawspeed24UncompressedDecompressor19readUncompressedRawE br i1 %109, label %.loopexit1, label %110 110: ; preds = %101 - %111 = sub nsw i64 %106, %108 + %111 = and i64 %60, 4294967288 br label %112 112: ; preds = %112, %110 @@ -3317,7 +3317,7 @@ define hidden void @_ZN8rawspeed24UncompressedDecompressor19readUncompressedRawE br i1 %295, label %.loopexit4, label %296 296: ; preds = %287 - %297 = sub nsw i64 %292, %294 + %297 = and i64 %246, 4294967288 br label %298 298: ; preds = %298, %296 @@ -3435,14 +3435,14 @@ define hidden void @_ZN8rawspeed24UncompressedDecompressor19readUncompressedRawE %377 = phi i64 [ %387, %.preheader ], [ 0, %.loopexit1 ] %378 = mul nuw nsw i64 %376, %104 %379 = add nuw nsw i64 %378, %102 - %380 = icmp ule i64 %379, %105 + %380 = icmp samesign ule i64 %379, %105 tail call void @llvm.assume(i1 %380) %381 = getelementptr inbounds nuw i8, ptr %57, i64 %378 %382 = mul nuw nsw i64 %376, %103 %383 = add nuw nsw i64 %382, %102 - %384 = icmp ule i64 %383, %66 + %384 = icmp samesign ule i64 %383, %66 tail call void @llvm.assume(i1 %384) - %385 = getelementptr inbounds i8, ptr %80, i64 %382 + %385 = getelementptr inbounds nuw i8, ptr %80, i64 %382 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %381, ptr nonnull align 1 %385, i64 %102, i1 false) %386 = add nuw nsw i64 %376, 1 %387 = add nuw nsw i64 %377, 1 @@ -3459,14 +3459,14 @@ define hidden void @_ZN8rawspeed24UncompressedDecompressor19readUncompressedRawE %392 = phi i64 [ %402, %.preheader2 ], [ 0, %.loopexit4 ] %393 = mul nuw nsw i64 %391, %290 %394 = add nuw nsw i64 %393, %288 - %395 = icmp ule i64 %394, %291 + %395 = icmp samesign ule i64 %394, %291 tail call void @llvm.assume(i1 %395) %396 = getelementptr inbounds nuw i8, ptr %243, i64 %393 %397 = mul nuw nsw i64 %391, %289 %398 = add nuw nsw i64 %397, %288 - %399 = icmp ule i64 %398, %252 + %399 = icmp samesign ule i64 %398, %252 tail call void @llvm.assume(i1 %399) - %400 = getelementptr inbounds i8, ptr %266, i64 %397 + %400 = getelementptr inbounds nuw i8, ptr %266, i64 %397 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %396, ptr nonnull align 1 %400, i64 %288, i1 false) %401 = add nuw nsw i64 %391, 1 %402 = add nuw nsw i64 %392, 1 diff --git a/bench/darktable/optimized/introspection_lut3d.c.ll b/bench/darktable/optimized/introspection_lut3d.c.ll index 719281e204..0759d23cbf 100644 --- a/bench/darktable/optimized/introspection_lut3d.c.ll +++ b/bench/darktable/optimized/introspection_lut3d.c.ll @@ -4201,8 +4201,8 @@ define hidden void @filepath_set_unix_separator(ptr nocapture noundef %0) local_ %7 = icmp samesign ult i64 %6, 16 br i1 %7, label %.preheader, label %8 -.preheader: ; preds = %44, %31, %5 - %.ph = phi i64 [ %36, %44 ], [ %12, %31 ], [ 0, %5 ] +.preheader: ; preds = %43, %31, %5 + %.ph = phi i64 [ %35, %43 ], [ %11, %31 ], [ 0, %5 ] br label %46 8: ; preds = %5 @@ -4210,66 +4210,66 @@ define hidden void @filepath_set_unix_separator(ptr nocapture noundef %0) local_ br i1 %9, label %33, label %10 10: ; preds = %8 - %11 = and i64 %2, 127 - %12 = sub nuw nsw i64 %6, %11 - br label %13 - -13: ; preds = %13, %10 - %14 = phi i64 [ 0, %10 ], [ %27, %13 ] - %15 = getelementptr i8, ptr %0, i64 %14 - %16 = getelementptr inbounds nuw i8, ptr %15, i64 32 - %17 = getelementptr inbounds nuw i8, ptr %15, i64 64 - %18 = getelementptr inbounds nuw i8, ptr %15, i64 96 + %11 = and i64 %2, 2147483520 + br label %12 + +12: ; preds = %12, %10 + %13 = phi i64 [ 0, %10 ], [ %26, %12 ] + %14 = getelementptr i8, ptr %0, i64 %13 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 32 + %16 = getelementptr inbounds nuw i8, ptr %14, i64 64 + %17 = getelementptr inbounds nuw i8, ptr %14, i64 96 + %18 = load <32 x i8>, ptr %14, align 1, !tbaa !57 %19 = load <32 x i8>, ptr %15, align 1, !tbaa !57 %20 = load <32 x i8>, ptr %16, align 1, !tbaa !57 %21 = load <32 x i8>, ptr %17, align 1, !tbaa !57 - %22 = load <32 x i8>, ptr %18, align 1, !tbaa !57 + %22 = icmp eq <32 x i8> %18, splat (i8 92) %23 = icmp eq <32 x i8> %19, splat (i8 92) %24 = icmp eq <32 x i8> %20, splat (i8 92) %25 = icmp eq <32 x i8> %21, splat (i8 92) - %26 = icmp eq <32 x i8> %22, splat (i8 92) - tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %15, i32 1, <32 x i1> %23), !tbaa !57 + tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %14, i32 1, <32 x i1> %22), !tbaa !57 + tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %15, i32 1, <32 x i1> %23), !tbaa !57 tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %16, i32 1, <32 x i1> %24), !tbaa !57 tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %17, i32 1, <32 x i1> %25), !tbaa !57 - tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %18, i32 1, <32 x i1> %26), !tbaa !57 - %27 = add nuw i64 %14, 128 - %28 = icmp eq i64 %27, %12 - br i1 %28, label %29, label %13, !llvm.loop !118 + %26 = add nuw i64 %13, 128 + %27 = icmp eq i64 %26, %11 + br i1 %27, label %28, label %12, !llvm.loop !118 -29: ; preds = %13 - %30 = icmp eq i64 %11, 0 +28: ; preds = %12 + %29 = and i64 %2, 127 + %30 = icmp eq i64 %29, 0 br i1 %30, label %.loopexit, label %31 -31: ; preds = %29 - %32 = icmp samesign ult i64 %11, 16 +31: ; preds = %28 + %32 = icmp samesign ult i64 %29, 16 br i1 %32, label %.preheader, label %33 33: ; preds = %31, %8 - %34 = phi i64 [ %12, %31 ], [ 0, %8 ] - %35 = and i64 %2, 15 - %36 = sub nuw nsw i64 %6, %35 - br label %37 + %34 = phi i64 [ %11, %31 ], [ 0, %8 ] + %35 = and i64 %2, 2147483632 + br label %36 + +36: ; preds = %36, %33 + %37 = phi i64 [ %34, %33 ], [ %41, %36 ] + %38 = getelementptr i8, ptr %0, i64 %37 + %39 = load <16 x i8>, ptr %38, align 1, !tbaa !57 + %40 = icmp eq <16 x i8> %39, splat (i8 92) + tail call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %38, i32 1, <16 x i1> %40), !tbaa !57 + %41 = add nuw i64 %37, 16 + %42 = icmp eq i64 %41, %35 + br i1 %42, label %43, label %36, !llvm.loop !119 -37: ; preds = %37, %33 - %38 = phi i64 [ %34, %33 ], [ %42, %37 ] - %39 = getelementptr i8, ptr %0, i64 %38 - %40 = load <16 x i8>, ptr %39, align 1, !tbaa !57 - %41 = icmp eq <16 x i8> %40, splat (i8 92) - tail call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %39, i32 1, <16 x i1> %41), !tbaa !57 - %42 = add nuw i64 %38, 16 - %43 = icmp eq i64 %42, %36 - br i1 %43, label %44, label %37, !llvm.loop !119 - -44: ; preds = %37 - %45 = icmp eq i64 %35, 0 +43: ; preds = %36 + %44 = and i64 %2, 15 + %45 = icmp eq i64 %44, 0 br i1 %45, label %.loopexit, label %.preheader -.loopexit: ; preds = %52, %44, %29, %1 +.loopexit: ; preds = %52, %43, %28, %1 ret void 46: ; preds = %.preheader, %52 %47 = phi i64 [ %53, %52 ], [ %.ph, %.preheader ] - %48 = getelementptr inbounds i8, ptr %0, i64 %47 + %48 = getelementptr inbounds nuw i8, ptr %0, i64 %47 %49 = load i8, ptr %48, align 1, !tbaa !57 %50 = icmp eq i8 %49, 92 br i1 %50, label %51, label %52 @@ -4740,67 +4740,67 @@ sub_0: ; preds = %.loopexit, %19 br i1 %43, label %67, label %44 44: ; preds = %42 - %45 = and i64 %36, 127 - %46 = sub nuw nsw i64 %40, %45 - br label %47 - -47: ; preds = %47, %44 - %48 = phi i64 [ 0, %44 ], [ %61, %47 ] - %49 = getelementptr i8, ptr %35, i64 %48 - %50 = getelementptr inbounds nuw i8, ptr %49, i64 32 - %51 = getelementptr inbounds nuw i8, ptr %49, i64 64 - %52 = getelementptr inbounds nuw i8, ptr %49, i64 96 + %45 = and i64 %36, 2147483520 + br label %46 + +46: ; preds = %46, %44 + %47 = phi i64 [ 0, %44 ], [ %60, %46 ] + %48 = getelementptr i8, ptr %35, i64 %47 + %49 = getelementptr inbounds nuw i8, ptr %48, i64 32 + %50 = getelementptr inbounds nuw i8, ptr %48, i64 64 + %51 = getelementptr inbounds nuw i8, ptr %48, i64 96 + %52 = load <32 x i8>, ptr %48, align 1, !tbaa !57 %53 = load <32 x i8>, ptr %49, align 1, !tbaa !57 %54 = load <32 x i8>, ptr %50, align 1, !tbaa !57 %55 = load <32 x i8>, ptr %51, align 1, !tbaa !57 - %56 = load <32 x i8>, ptr %52, align 1, !tbaa !57 + %56 = icmp eq <32 x i8> %52, splat (i8 92) %57 = icmp eq <32 x i8> %53, splat (i8 92) %58 = icmp eq <32 x i8> %54, splat (i8 92) %59 = icmp eq <32 x i8> %55, splat (i8 92) - %60 = icmp eq <32 x i8> %56, splat (i8 92) - call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %49, i32 1, <32 x i1> %57), !tbaa !57 + call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %48, i32 1, <32 x i1> %56), !tbaa !57 + call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %49, i32 1, <32 x i1> %57), !tbaa !57 call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %50, i32 1, <32 x i1> %58), !tbaa !57 call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %51, i32 1, <32 x i1> %59), !tbaa !57 - call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %52, i32 1, <32 x i1> %60), !tbaa !57 - %61 = add nuw i64 %48, 128 - %62 = icmp eq i64 %61, %46 - br i1 %62, label %63, label %47, !llvm.loop !135 + %60 = add nuw i64 %47, 128 + %61 = icmp eq i64 %60, %45 + br i1 %61, label %62, label %46, !llvm.loop !135 -63: ; preds = %47 - %64 = icmp eq i64 %45, 0 +62: ; preds = %46 + %63 = and i64 %36, 127 + %64 = icmp eq i64 %63, 0 br i1 %64, label %.loopexit, label %65 -65: ; preds = %63 - %66 = icmp samesign ult i64 %45, 16 +65: ; preds = %62 + %66 = icmp samesign ult i64 %63, 16 br i1 %66, label %.preheader, label %67 67: ; preds = %65, %42 - %68 = phi i64 [ %46, %65 ], [ 0, %42 ] - %69 = and i64 %36, 15 - %70 = sub nuw nsw i64 %40, %69 - br label %71 - -71: ; preds = %71, %67 - %72 = phi i64 [ %68, %67 ], [ %76, %71 ] - %73 = getelementptr i8, ptr %35, i64 %72 - %74 = load <16 x i8>, ptr %73, align 1, !tbaa !57 - %75 = icmp eq <16 x i8> %74, splat (i8 92) - call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %73, i32 1, <16 x i1> %75), !tbaa !57 - %76 = add nuw i64 %72, 16 - %77 = icmp eq i64 %76, %70 - br i1 %77, label %78, label %71, !llvm.loop !136 - -78: ; preds = %71 - %79 = icmp eq i64 %69, 0 + %68 = phi i64 [ %45, %65 ], [ 0, %42 ] + %69 = and i64 %36, 2147483632 + br label %70 + +70: ; preds = %70, %67 + %71 = phi i64 [ %68, %67 ], [ %75, %70 ] + %72 = getelementptr i8, ptr %35, i64 %71 + %73 = load <16 x i8>, ptr %72, align 1, !tbaa !57 + %74 = icmp eq <16 x i8> %73, splat (i8 92) + call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %72, i32 1, <16 x i1> %74), !tbaa !57 + %75 = add nuw i64 %71, 16 + %76 = icmp eq i64 %75, %69 + br i1 %76, label %77, label %70, !llvm.loop !136 + +77: ; preds = %70 + %78 = and i64 %36, 15 + %79 = icmp eq i64 %78, 0 br i1 %79, label %.loopexit, label %.preheader -.preheader: ; preds = %78, %65, %39 - %.ph = phi i64 [ %70, %78 ], [ %46, %65 ], [ 0, %39 ] +.preheader: ; preds = %77, %65, %39 + %.ph = phi i64 [ %69, %77 ], [ %45, %65 ], [ 0, %39 ] br label %80 80: ; preds = %.preheader, %86 %81 = phi i64 [ %87, %86 ], [ %.ph, %.preheader ] - %82 = getelementptr inbounds i8, ptr %35, i64 %81 + %82 = getelementptr inbounds nuw i8, ptr %35, i64 %81 %83 = load i8, ptr %82, align 1, !tbaa !57 %84 = icmp eq i8 %83, 92 br i1 %84, label %85, label %86 @@ -4814,7 +4814,7 @@ sub_0: ; preds = %.loopexit, %19 %88 = icmp eq i64 %87, %40 br i1 %88, label %.loopexit, label %80, !llvm.loop !137 -.loopexit: ; preds = %86, %78, %63, %34 +.loopexit: ; preds = %86, %77, %62, %34 %89 = load ptr, ptr %7, align 8, !tbaa !131 call void @dt_bauhaus_combobox_add_aligned(ptr noundef %89, ptr noundef %35, i32 noundef 0) #29 call void @g_free(ptr noundef %35) #29 @@ -5361,67 +5361,67 @@ define internal void @button_clicked(ptr nocapture readnone %0, ptr nocapture no br i1 %83, label %107, label %84 84: ; preds = %82 - %85 = and i64 %76, 127 - %86 = sub nuw nsw i64 %80, %85 - br label %87 - -87: ; preds = %87, %84 - %88 = phi i64 [ 0, %84 ], [ %101, %87 ] - %89 = getelementptr i8, ptr %53, i64 %88 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - %91 = getelementptr inbounds nuw i8, ptr %89, i64 64 - %92 = getelementptr inbounds nuw i8, ptr %89, i64 96 + %85 = and i64 %76, 2147483520 + br label %86 + +86: ; preds = %86, %84 + %87 = phi i64 [ 0, %84 ], [ %100, %86 ] + %88 = getelementptr i8, ptr %53, i64 %87 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + %90 = getelementptr inbounds nuw i8, ptr %88, i64 64 + %91 = getelementptr inbounds nuw i8, ptr %88, i64 96 + %92 = load <32 x i8>, ptr %88, align 1, !tbaa !57 %93 = load <32 x i8>, ptr %89, align 1, !tbaa !57 %94 = load <32 x i8>, ptr %90, align 1, !tbaa !57 %95 = load <32 x i8>, ptr %91, align 1, !tbaa !57 - %96 = load <32 x i8>, ptr %92, align 1, !tbaa !57 + %96 = icmp eq <32 x i8> %92, splat (i8 92) %97 = icmp eq <32 x i8> %93, splat (i8 92) %98 = icmp eq <32 x i8> %94, splat (i8 92) %99 = icmp eq <32 x i8> %95, splat (i8 92) - %100 = icmp eq <32 x i8> %96, splat (i8 92) - tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %89, i32 1, <32 x i1> %97), !tbaa !57 + tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %88, i32 1, <32 x i1> %96), !tbaa !57 + tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %89, i32 1, <32 x i1> %97), !tbaa !57 tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %90, i32 1, <32 x i1> %98), !tbaa !57 tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %91, i32 1, <32 x i1> %99), !tbaa !57 - tail call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %92, i32 1, <32 x i1> %100), !tbaa !57 - %101 = add nuw i64 %88, 128 - %102 = icmp eq i64 %101, %86 - br i1 %102, label %103, label %87, !llvm.loop !150 + %100 = add nuw i64 %87, 128 + %101 = icmp eq i64 %100, %85 + br i1 %101, label %102, label %86, !llvm.loop !150 -103: ; preds = %87 - %104 = icmp eq i64 %85, 0 +102: ; preds = %86 + %103 = and i64 %76, 127 + %104 = icmp eq i64 %103, 0 br i1 %104, label %.loopexit, label %105 -105: ; preds = %103 - %106 = icmp samesign ult i64 %85, 16 +105: ; preds = %102 + %106 = icmp samesign ult i64 %103, 16 br i1 %106, label %.preheader6, label %107 107: ; preds = %105, %82 - %108 = phi i64 [ %86, %105 ], [ 0, %82 ] - %109 = and i64 %76, 15 - %110 = sub nuw nsw i64 %80, %109 - br label %111 - -111: ; preds = %111, %107 - %112 = phi i64 [ %108, %107 ], [ %116, %111 ] - %113 = getelementptr i8, ptr %53, i64 %112 - %114 = load <16 x i8>, ptr %113, align 1, !tbaa !57 - %115 = icmp eq <16 x i8> %114, splat (i8 92) - tail call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %113, i32 1, <16 x i1> %115), !tbaa !57 - %116 = add nuw i64 %112, 16 - %117 = icmp eq i64 %116, %110 - br i1 %117, label %118, label %111, !llvm.loop !151 - -118: ; preds = %111 - %119 = icmp eq i64 %109, 0 + %108 = phi i64 [ %85, %105 ], [ 0, %82 ] + %109 = and i64 %76, 2147483632 + br label %110 + +110: ; preds = %110, %107 + %111 = phi i64 [ %108, %107 ], [ %115, %110 ] + %112 = getelementptr i8, ptr %53, i64 %111 + %113 = load <16 x i8>, ptr %112, align 1, !tbaa !57 + %114 = icmp eq <16 x i8> %113, splat (i8 92) + tail call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %112, i32 1, <16 x i1> %114), !tbaa !57 + %115 = add nuw i64 %111, 16 + %116 = icmp eq i64 %115, %109 + br i1 %116, label %117, label %110, !llvm.loop !151 + +117: ; preds = %110 + %118 = and i64 %76, 15 + %119 = icmp eq i64 %118, 0 br i1 %119, label %.loopexit, label %.preheader6 -.preheader6: ; preds = %118, %105, %79 - %.ph = phi i64 [ %110, %118 ], [ %86, %105 ], [ 0, %79 ] +.preheader6: ; preds = %117, %105, %79 + %.ph = phi i64 [ %109, %117 ], [ %85, %105 ], [ 0, %79 ] br label %120 120: ; preds = %.preheader6, %126 %121 = phi i64 [ %127, %126 ], [ %.ph, %.preheader6 ] - %122 = getelementptr inbounds i8, ptr %53, i64 %121 + %122 = getelementptr inbounds nuw i8, ptr %53, i64 %121 %123 = load i8, ptr %122, align 1, !tbaa !57 %124 = icmp eq i8 %123, 92 br i1 %124, label %125, label %126 @@ -5435,7 +5435,7 @@ define internal void @button_clicked(ptr nocapture readnone %0, ptr nocapture no %128 = icmp eq i64 %127, %80 br i1 %128, label %.loopexit, label %120, !llvm.loop !152 -.loopexit: ; preds = %126, %118, %103, %73 +.loopexit: ; preds = %126, %117, %102, %73 tail call fastcc void @update_filepath_combobox(ptr noundef %4, ptr noundef nonnull %53, ptr noundef nonnull %7) br label %134 @@ -5507,67 +5507,67 @@ define internal void @filepath_callback(ptr noundef %0, ptr noundef %1) #1 { br i1 %23, label %47, label %24 24: ; preds = %22 - %25 = and i64 %16, 127 - %26 = sub nuw nsw i64 %20, %25 - br label %27 - -27: ; preds = %27, %24 - %28 = phi i64 [ 0, %24 ], [ %41, %27 ] - %29 = getelementptr i8, ptr %3, i64 %28 - %30 = getelementptr inbounds nuw i8, ptr %29, i64 32 - %31 = getelementptr inbounds nuw i8, ptr %29, i64 64 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 96 + %25 = and i64 %16, 2147483520 + br label %26 + +26: ; preds = %26, %24 + %27 = phi i64 [ 0, %24 ], [ %40, %26 ] + %28 = getelementptr i8, ptr %3, i64 %27 + %29 = getelementptr inbounds nuw i8, ptr %28, i64 32 + %30 = getelementptr inbounds nuw i8, ptr %28, i64 64 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 96 + %32 = load <32 x i8>, ptr %28, align 16, !tbaa !57 %33 = load <32 x i8>, ptr %29, align 16, !tbaa !57 %34 = load <32 x i8>, ptr %30, align 16, !tbaa !57 %35 = load <32 x i8>, ptr %31, align 16, !tbaa !57 - %36 = load <32 x i8>, ptr %32, align 16, !tbaa !57 + %36 = icmp eq <32 x i8> %32, splat (i8 92) %37 = icmp eq <32 x i8> %33, splat (i8 92) %38 = icmp eq <32 x i8> %34, splat (i8 92) %39 = icmp eq <32 x i8> %35, splat (i8 92) - %40 = icmp eq <32 x i8> %36, splat (i8 92) - call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %29, i32 1, <32 x i1> %37), !tbaa !57 + call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr %28, i32 1, <32 x i1> %36), !tbaa !57 + call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %29, i32 1, <32 x i1> %37), !tbaa !57 call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %30, i32 1, <32 x i1> %38), !tbaa !57 call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %31, i32 1, <32 x i1> %39), !tbaa !57 - call void @llvm.masked.store.v32i8.p0(<32 x i8> splat (i8 47), ptr nonnull %32, i32 1, <32 x i1> %40), !tbaa !57 - %41 = add nuw i64 %28, 128 - %42 = icmp eq i64 %41, %26 - br i1 %42, label %43, label %27, !llvm.loop !154 + %40 = add nuw i64 %27, 128 + %41 = icmp eq i64 %40, %25 + br i1 %41, label %42, label %26, !llvm.loop !154 -43: ; preds = %27 - %44 = icmp eq i64 %25, 0 +42: ; preds = %26 + %43 = and i64 %16, 127 + %44 = icmp eq i64 %43, 0 br i1 %44, label %.loopexit, label %45 -45: ; preds = %43 - %46 = icmp samesign ult i64 %25, 16 +45: ; preds = %42 + %46 = icmp samesign ult i64 %43, 16 br i1 %46, label %.preheader, label %47 47: ; preds = %45, %22 - %48 = phi i64 [ %26, %45 ], [ 0, %22 ] - %49 = and i64 %16, 15 - %50 = sub nuw nsw i64 %20, %49 - br label %51 - -51: ; preds = %51, %47 - %52 = phi i64 [ %48, %47 ], [ %56, %51 ] - %53 = getelementptr i8, ptr %3, i64 %52 - %54 = load <16 x i8>, ptr %53, align 1, !tbaa !57 - %55 = icmp eq <16 x i8> %54, splat (i8 92) - call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %53, i32 1, <16 x i1> %55), !tbaa !57 - %56 = add nuw i64 %52, 16 - %57 = icmp eq i64 %56, %50 - br i1 %57, label %58, label %51, !llvm.loop !155 + %48 = phi i64 [ %25, %45 ], [ 0, %22 ] + %49 = and i64 %16, 2147483632 + br label %50 -58: ; preds = %51 - %59 = icmp eq i64 %49, 0 +50: ; preds = %50, %47 + %51 = phi i64 [ %48, %47 ], [ %55, %50 ] + %52 = getelementptr i8, ptr %3, i64 %51 + %53 = load <16 x i8>, ptr %52, align 16, !tbaa !57 + %54 = icmp eq <16 x i8> %53, splat (i8 92) + call void @llvm.masked.store.v16i8.p0(<16 x i8> splat (i8 47), ptr %52, i32 1, <16 x i1> %54), !tbaa !57 + %55 = add nuw i64 %51, 16 + %56 = icmp eq i64 %55, %49 + br i1 %56, label %57, label %50, !llvm.loop !155 + +57: ; preds = %50 + %58 = and i64 %16, 15 + %59 = icmp eq i64 %58, 0 br i1 %59, label %.loopexit, label %.preheader -.preheader: ; preds = %58, %45, %19 - %.ph = phi i64 [ %50, %58 ], [ %26, %45 ], [ 0, %19 ] +.preheader: ; preds = %57, %45, %19 + %.ph = phi i64 [ %49, %57 ], [ %25, %45 ], [ 0, %19 ] br label %60 60: ; preds = %.preheader, %66 %61 = phi i64 [ %67, %66 ], [ %.ph, %.preheader ] - %62 = getelementptr inbounds i8, ptr %3, i64 %61 + %62 = getelementptr inbounds nuw i8, ptr %3, i64 %61 %63 = load i8, ptr %62, align 1, !tbaa !57 %64 = icmp eq i8 %63, 92 br i1 %64, label %65, label %66 @@ -5581,7 +5581,7 @@ define internal void @filepath_callback(ptr noundef %0, ptr noundef %1) #1 { %68 = icmp eq i64 %67, %20 br i1 %68, label %.loopexit, label %60, !llvm.loop !156 -.loopexit: ; preds = %66, %58, %43, %15 +.loopexit: ; preds = %66, %57, %42, %15 %69 = getelementptr inbounds nuw i8, ptr %1, i64 704 %70 = load ptr, ptr %69, align 16, !tbaa !128 %71 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %10) #31 diff --git a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll index 61cdb95b8e..46e4330d75 100644 --- a/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll +++ b/bench/delta-rs/optimized/s2xrj2sh770tx8d.ll @@ -44122,163 +44122,163 @@ define hidden { i64, i64 } @_ZN11arrow_arith9aggregate9aggregate17h7e9296e13cb60 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %.sroa.9.i) store i64 0, ptr %.sroa.0.i, align 8, !noalias !13921 store i64 0, ptr %.sroa.9.i, align 8, !noalias !13921 - %26 = and i64 %15, 63 - %27 = and i64 %15, 2305843009213693888 - %28 = getelementptr inbounds nuw i64, ptr %12, i64 %27 + %26 = and i64 %15, 2305843009213693888 + %27 = getelementptr inbounds nuw i64, ptr %12, i64 %26 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3), !noalias !13921 - %29 = getelementptr inbounds nuw i8, ptr %., i64 8 - %30 = load ptr, ptr %29, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 - %31 = getelementptr inbounds nuw i8, ptr %., i64 16 - %32 = load i64, ptr %31, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 - %33 = getelementptr inbounds nuw i8, ptr %., i64 24 - %34 = load i64, ptr %33, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 - call void @_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks3new17hd927779e7baf4b25E(ptr noalias nocapture noundef nonnull sret({ { ptr, i64 }, i64, i64, i64 }) align 8 dereferenceable(40) %3, ptr noalias noundef nonnull readonly align 1 %30, i64 noundef %32, i64 noundef %34, i64 noundef range(i64 0, 2305843009213693952) %15), !noalias !13921 - %35 = load ptr, ptr %3, align 8, !noalias !13921, !nonnull !4, !align !56, !noundef !4 - %36 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %37 = load i64, ptr %36, align 8, !noalias !13921, !noundef !4 - %38 = getelementptr inbounds nuw i8, ptr %3, i64 24 - %39 = load i64, ptr %38, align 8, !noalias !13921, !noundef !4 + %28 = getelementptr inbounds nuw i8, ptr %., i64 8 + %29 = load ptr, ptr %28, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 + %30 = getelementptr inbounds nuw i8, ptr %., i64 16 + %31 = load i64, ptr %30, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 + %32 = getelementptr inbounds nuw i8, ptr %., i64 24 + %33 = load i64, ptr %32, align 8, !alias.scope !13919, !noalias !13916, !noundef !4 + call void @_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks3new17hd927779e7baf4b25E(ptr noalias nocapture noundef nonnull sret({ { ptr, i64 }, i64, i64, i64 }) align 8 dereferenceable(40) %3, ptr noalias noundef nonnull readonly align 1 %29, i64 noundef %31, i64 noundef %33, i64 noundef range(i64 0, 2305843009213693952) %15), !noalias !13921 + %34 = load ptr, ptr %3, align 8, !noalias !13921, !nonnull !4, !align !56, !noundef !4 + %35 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %36 = load i64, ptr %35, align 8, !noalias !13921, !noundef !4 + %37 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %38 = load i64, ptr %37, align 8, !noalias !13921, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !13922) - %40 = icmp ult i64 %14, 512 - br i1 %40, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.i.i + %39 = icmp ult i64 %14, 512 + br i1 %39, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.i.i .lr.ph.split.i.i: ; preds = %25 - %41 = icmp eq i64 %37, 0 - %42 = and i64 %37, 63 - %43 = sub i64 0, %37 - %44 = and i64 %43, 63 - br i1 %41, label %.lr.ph.split.split.us.i.i, label %.lr.ph.split.split.i.i + %40 = icmp eq i64 %36, 0 + %41 = and i64 %36, 63 + %42 = sub i64 0, %36 + %43 = and i64 %42, 63 + br i1 %40, label %.lr.ph.split.split.us.i.i, label %.lr.ph.split.split.i.i .lr.ph.split.split.us.i.i: ; preds = %.lr.ph.split.i.i, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" - %45 = phi i64 [ %53, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ 0, %.lr.ph.split.i.i ] - %46 = phi i64 [ %49, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ %27, %.lr.ph.split.i.i ] - %47 = phi ptr [ %48, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ %12, %.lr.ph.split.i.i ] - %48 = getelementptr inbounds nuw i8, ptr %47, i64 512 - %49 = add nsw i64 %46, -64 + %44 = phi i64 [ %52, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ 0, %.lr.ph.split.i.i ] + %45 = phi i64 [ %48, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ %26, %.lr.ph.split.i.i ] + %46 = phi ptr [ %47, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i" ], [ %12, %.lr.ph.split.i.i ] + %47 = getelementptr inbounds nuw i8, ptr %46, i64 512 + %48 = add nsw i64 %45, -64 tail call void @llvm.experimental.noalias.scope.decl(metadata !13925) tail call void @llvm.experimental.noalias.scope.decl(metadata !13928) tail call void @llvm.experimental.noalias.scope.decl(metadata !13931) - %.not.i.i.i.i.us13.i.i = icmp ult i64 %45, %39 - br i1 %.not.i.i.i.i.us13.i.i, label %50, label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" + %.not.i.i.i.i.us13.i.i = icmp ult i64 %44, %38 + br i1 %.not.i.i.i.i.us13.i.i, label %49, label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" -50: ; preds = %.lr.ph.split.split.us.i.i - %51 = getelementptr inbounds i64, ptr %35, i64 %45 - %.0.copyload.i.i.i.i.us14.i.i = load i64, ptr %51, align 1, !noalias !13934 - %52 = add nuw i64 %45, 1 +49: ; preds = %.lr.ph.split.split.us.i.i + %50 = getelementptr inbounds i64, ptr %34, i64 %44 + %.0.copyload.i.i.i.i.us14.i.i = load i64, ptr %50, align 1, !noalias !13934 + %51 = add nuw i64 %44, 1 br label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" -"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i": ; preds = %50, %.lr.ph.split.split.us.i.i - %53 = phi i64 [ %52, %50 ], [ %45, %.lr.ph.split.split.us.i.i ] - %.sroa.3.0.i.i.i.i.us17.i.i = phi i64 [ %.0.copyload.i.i.i.i.us14.i.i, %50 ], [ undef, %.lr.ph.split.split.us.i.i ] +"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i": ; preds = %49, %.lr.ph.split.split.us.i.i + %52 = phi i64 [ %51, %49 ], [ %44, %.lr.ph.split.split.us.i.i ] + %.sroa.3.0.i.i.i.i.us17.i.i = phi i64 [ %.0.copyload.i.i.i.i.us14.i.i, %49 ], [ undef, %.lr.ph.split.split.us.i.i ] tail call void @llvm.assume(i1 %.not.i.i.i.i.us13.i.i) tail call void @llvm.experimental.noalias.scope.decl(metadata !13939) br label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i": ; preds = %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i", %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" - %54 = phi i64 [ %66, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ 64, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] - %55 = phi ptr [ %65, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ %47, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] - %56 = phi i64 [ %67, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ %.sroa.3.0.i.i.i.i.us17.i.i, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] + %53 = phi i64 [ %65, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ 64, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] + %54 = phi ptr [ %64, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ %46, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] + %55 = phi i64 [ %66, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" ], [ %.sroa.3.0.i.i.i.i.us17.i.i, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.us16.i.i" ] tail call void @llvm.experimental.noalias.scope.decl(metadata !13942) tail call void @llvm.experimental.noalias.scope.decl(metadata !13945) tail call void @llvm.experimental.noalias.scope.decl(metadata !13948) - br label %57 + br label %56 -57: ; preds = %57, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" - %.0.i4.i.i.i.i.i.i.us.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ %64, %57 ] - %58 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ false, %57 ] - %.sroa.02.0.i3.i.i.i.i.i.i.us.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ %.sroa.9.i, %57 ] - %.sroa.02.0.i3.i.i.i.i.i.i.us.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ 1, %57 ] - %59 = getelementptr inbounds nuw [2 x i64], ptr %55, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i.i.us.i.i - %60 = load i64, ptr %59, align 8, !alias.scope !13951, !noalias !13952, !noundef !4 - %61 = and i64 %.0.i4.i.i.i.i.i.i.us.i.i, %56 - %.not.i.i.i.i.i.i.us.i.i = icmp eq i64 %61, 0 - %62 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.i.i.us.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959, !noundef !4 - %63 = select i1 %.not.i.i.i.i.i.i.us.i.i, i64 0, i64 %60 - %spec.select.i.i.i.i.i.i.i.us.i.i = add i64 %62, %63 +56: ; preds = %56, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" + %.0.i4.i.i.i.i.i.i.us.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ %63, %56 ] + %57 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ false, %56 ] + %.sroa.02.0.i3.i.i.i.i.i.i.us.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ %.sroa.9.i, %56 ] + %.sroa.02.0.i3.i.i.i.i.i.i.us.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" ], [ 1, %56 ] + %58 = getelementptr inbounds nuw [2 x i64], ptr %54, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i.i.us.i.i + %59 = load i64, ptr %58, align 8, !alias.scope !13951, !noalias !13952, !noundef !4 + %60 = and i64 %.0.i4.i.i.i.i.i.i.us.i.i, %55 + %.not.i.i.i.i.i.i.us.i.i = icmp eq i64 %60, 0 + %61 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.i.i.us.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959, !noundef !4 + %62 = select i1 %.not.i.i.i.i.i.i.us.i.i, i64 0, i64 %59 + %spec.select.i.i.i.i.i.i.i.us.i.i = add i64 %61, %62 store i64 %spec.select.i.i.i.i.i.i.i.us.i.i, ptr %.sroa.02.0.i3.i.i.i.i.i.i.us.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959 - %64 = shl i64 %.0.i4.i.i.i.i.i.i.us.i.i, 1 - br i1 %58, label %57, label %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" + %63 = shl i64 %.0.i4.i.i.i.i.i.i.us.i.i, 1 + br i1 %57, label %56, label %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" -"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i": ; preds = %57 - %65 = getelementptr inbounds nuw i8, ptr %55, i64 16 - %66 = add nsw i64 %54, -2 - %67 = lshr i64 %56, 2 - %68 = icmp eq i64 %66, 0 - br i1 %68, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" +"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i": ; preds = %56 + %64 = getelementptr inbounds nuw i8, ptr %54, i64 16 + %65 = add nsw i64 %53, -2 + %66 = lshr i64 %55, 2 + %67 = icmp eq i64 %65, 0 + br i1 %67, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.us.i.i" "_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i": ; preds = %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.us.i.i" - %69 = icmp eq i64 %49, 0 - br i1 %69, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.split.us.i.i + %68 = icmp eq i64 %48, 0 + br i1 %68, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.split.us.i.i .lr.ph.split.split.i.i: ; preds = %.lr.ph.split.i.i, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" - %70 = phi i64 [ %83, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ 0, %.lr.ph.split.i.i ] - %71 = phi i64 [ %74, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ %27, %.lr.ph.split.i.i ] - %72 = phi ptr [ %73, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ %12, %.lr.ph.split.i.i ] - %73 = getelementptr inbounds nuw i8, ptr %72, i64 512 - %74 = add nsw i64 %71, -64 + %69 = phi i64 [ %82, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ 0, %.lr.ph.split.i.i ] + %70 = phi i64 [ %73, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ %26, %.lr.ph.split.i.i ] + %71 = phi ptr [ %72, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i" ], [ %12, %.lr.ph.split.i.i ] + %72 = getelementptr inbounds nuw i8, ptr %71, i64 512 + %73 = add nsw i64 %70, -64 tail call void @llvm.experimental.noalias.scope.decl(metadata !13925) tail call void @llvm.experimental.noalias.scope.decl(metadata !13928) tail call void @llvm.experimental.noalias.scope.decl(metadata !13931) - %.not.i.i.i.i.i.i = icmp ult i64 %70, %39 - br i1 %.not.i.i.i.i.i.i, label %75, label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" - -75: ; preds = %.lr.ph.split.split.i.i - %76 = getelementptr inbounds i64, ptr %35, i64 %70 - %.0.copyload.i.i.i.i.i.i = load i64, ptr %76, align 1, !noalias !13934 - %77 = getelementptr i8, ptr %76, i64 8 - %.0.copyload1.i.i.i.i.i.i = load i8, ptr %77, align 1, !noalias !13934 - %78 = zext i8 %.0.copyload1.i.i.i.i.i.i to i64 - %79 = lshr i64 %.0.copyload.i.i.i.i.i.i, %42 - %80 = shl i64 %78, %44 - %81 = or i64 %80, %79 - %82 = add nuw i64 %70, 1 + %.not.i.i.i.i.i.i = icmp ult i64 %69, %38 + br i1 %.not.i.i.i.i.i.i, label %74, label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" + +74: ; preds = %.lr.ph.split.split.i.i + %75 = getelementptr inbounds i64, ptr %34, i64 %69 + %.0.copyload.i.i.i.i.i.i = load i64, ptr %75, align 1, !noalias !13934 + %76 = getelementptr i8, ptr %75, i64 8 + %.0.copyload1.i.i.i.i.i.i = load i8, ptr %76, align 1, !noalias !13934 + %77 = zext i8 %.0.copyload1.i.i.i.i.i.i to i64 + %78 = lshr i64 %.0.copyload.i.i.i.i.i.i, %41 + %79 = shl i64 %77, %43 + %80 = or i64 %79, %78 + %81 = add nuw i64 %69, 1 br label %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" -"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i": ; preds = %75, %.lr.ph.split.split.i.i - %83 = phi i64 [ %82, %75 ], [ %70, %.lr.ph.split.split.i.i ] - %.sroa.3.0.i.i.i.i.i.i = phi i64 [ %81, %75 ], [ undef, %.lr.ph.split.split.i.i ] +"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i": ; preds = %74, %.lr.ph.split.split.i.i + %82 = phi i64 [ %81, %74 ], [ %69, %.lr.ph.split.split.i.i ] + %.sroa.3.0.i.i.i.i.i.i = phi i64 [ %80, %74 ], [ undef, %.lr.ph.split.split.i.i ] tail call void @llvm.assume(i1 %.not.i.i.i.i.i.i) tail call void @llvm.experimental.noalias.scope.decl(metadata !13939) br label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i": ; preds = %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i", %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" - %84 = phi i64 [ %96, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ 64, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] - %85 = phi ptr [ %95, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ %72, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] - %86 = phi i64 [ %97, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ %.sroa.3.0.i.i.i.i.i.i, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] + %83 = phi i64 [ %95, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ 64, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] + %84 = phi ptr [ %94, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ %71, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] + %85 = phi i64 [ %96, %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" ], [ %.sroa.3.0.i.i.i.i.i.i, %"_ZN115_$LT$arrow_buffer..util..bit_chunk_iterator..BitChunkIterator$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa250480a93eba3fE.exit.i.i.i.i.i" ] tail call void @llvm.experimental.noalias.scope.decl(metadata !13942) tail call void @llvm.experimental.noalias.scope.decl(metadata !13945) tail call void @llvm.experimental.noalias.scope.decl(metadata !13948) - br label %87 - -87: ; preds = %87, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" - %.0.i4.i.i.i.i.i.i.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ %94, %87 ] - %88 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ false, %87 ] - %.sroa.02.0.i3.i.i.i.i.i.i.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ %.sroa.9.i, %87 ] - %.sroa.02.0.i3.i.i.i.i.i.i.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ 1, %87 ] - %89 = getelementptr inbounds nuw [2 x i64], ptr %85, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i.i.i.i - %90 = load i64, ptr %89, align 8, !alias.scope !13951, !noalias !13952, !noundef !4 - %91 = and i64 %.0.i4.i.i.i.i.i.i.i.i, %86 - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %91, 0 - %92 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959, !noundef !4 - %93 = select i1 %.not.i.i.i.i.i.i.i.i, i64 0, i64 %90 - %spec.select.i.i.i.i.i.i.i.i.i = add i64 %92, %93 + br label %86 + +86: ; preds = %86, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" + %.0.i4.i.i.i.i.i.i.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ %93, %86 ] + %87 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ false, %86 ] + %.sroa.02.0.i3.i.i.i.i.i.i.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ %.sroa.9.i, %86 ] + %.sroa.02.0.i3.i.i.i.i.i.i.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" ], [ 1, %86 ] + %88 = getelementptr inbounds nuw [2 x i64], ptr %84, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i.i.i.i + %89 = load i64, ptr %88, align 8, !alias.scope !13951, !noalias !13952, !noundef !4 + %90 = and i64 %.0.i4.i.i.i.i.i.i.i.i, %85 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %90, 0 + %91 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959, !noundef !4 + %92 = select i1 %.not.i.i.i.i.i.i.i.i, i64 0, i64 %89 + %spec.select.i.i.i.i.i.i.i.i.i = add i64 %91, %92 store i64 %spec.select.i.i.i.i.i.i.i.i.i, ptr %.sroa.02.0.i3.i.i.i.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13956, !noalias !13959 - %94 = shl i64 %.0.i4.i.i.i.i.i.i.i.i, 1 - br i1 %88, label %87, label %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" + %93 = shl i64 %.0.i4.i.i.i.i.i.i.i.i, 1 + br i1 %87, label %86, label %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" -"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i": ; preds = %87 - %95 = getelementptr inbounds nuw i8, ptr %85, i64 16 - %96 = add nsw i64 %84, -2 - %97 = lshr i64 %86, 2 - %98 = icmp eq i64 %96, 0 - br i1 %98, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" +"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i": ; preds = %86 + %94 = getelementptr inbounds nuw i8, ptr %84, i64 16 + %95 = add nsw i64 %83, -2 + %96 = lshr i64 %85, 2 + %97 = icmp eq i64 %95, 0 + br i1 %97, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i", label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i.i.i.i" "_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i": ; preds = %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h5a5a0ac698ca38feE.exit.i.i.i.i.i.i" - %99 = icmp eq i64 %74, 0 - br i1 %99, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.split.i.i + %98 = icmp eq i64 %73, 0 + br i1 %98, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i, label %.lr.ph.split.split.i.i _ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i: ; preds = %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.i.i", %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17hd8018ad50dd76834E.exit.loopexit.us.i.i", %25 - %100 = icmp eq i64 %26, 0 + %99 = and i64 %14, 504 + %100 = icmp eq i64 %99, 0 br i1 %100, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit..thread_crit_edge.i, label %101 _ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit..thread_crit_edge.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit.i @@ -44293,17 +44293,17 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit..thread br i1 %104, label %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i, label %105 105: ; preds = %101 - %106 = add i64 %103, %37 + %106 = add i64 %103, %36 %107 = lshr i64 %106, 3 %108 = and i64 %106, 7 %109 = icmp ne i64 %108, 0 %110 = zext i1 %109 to i64 %111 = add nuw nsw i64 %107, %110 - %112 = shl i64 %39, 3 - %113 = getelementptr inbounds i8, ptr %35, i64 %112 + %112 = shl i64 %38, 3 + %113 = getelementptr inbounds i8, ptr %34, i64 %112 %114 = load i8, ptr %113, align 1, !noalias !13963, !noundef !4 %115 = zext i8 %114 to i64 - %116 = and i64 %37, 63 + %116 = and i64 %36, 63 %117 = lshr i64 %115, %116 %118 = icmp samesign ugt i64 %111, 1 br i1 %118, label %.lr.ph.i26.i, label %._crit_edge.i25.i @@ -44324,7 +44324,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit..thread %124 = load i8, ptr %123, align 1, !noalias !13963, !noundef !4 %125 = zext i8 %124 to i64 %126 = shl i64 %.sroa.01.011.i.i, 3 - %127 = sub i64 %126, %37 + %127 = sub i64 %126, %36 %128 = and i64 %127, 63 %129 = shl i64 %125, %128 %130 = or i64 %129, %.0712.i.i @@ -44333,54 +44333,54 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17hea26178ca196f382E.exit..thread _ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i: ; preds = %._crit_edge.i25.i, %101 %.0.i.i = phi i64 [ %121, %._crit_edge.i25.i ], [ 0, %101 ] - %131 = and i64 %15, 1 - %132 = sub nuw nsw i64 %26, %131 - %133 = getelementptr inbounds nuw i64, ptr %28, i64 %132 + %131 = and i64 %15, 62 + %132 = getelementptr inbounds nuw i64, ptr %27, i64 %131 tail call void @llvm.experimental.noalias.scope.decl(metadata !13964) - %134 = icmp samesign ult i64 %132, 2 - br i1 %134, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" + %133 = icmp eq i64 %131, 0 + br i1 %133, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i": ; preds = %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" - %135 = phi i64 [ %147, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %132, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] - %136 = phi ptr [ %146, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %28, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] - %137 = phi i64 [ %148, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %.0.i.i, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] + %134 = phi i64 [ %146, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %131, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] + %135 = phi ptr [ %145, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %27, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] + %136 = phi i64 [ %147, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ], [ %.0.i.i, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ] tail call void @llvm.experimental.noalias.scope.decl(metadata !13967) tail call void @llvm.experimental.noalias.scope.decl(metadata !13970) tail call void @llvm.experimental.noalias.scope.decl(metadata !13973) tail call void @llvm.experimental.noalias.scope.decl(metadata !13976) - br label %138 - -138: ; preds = %138, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" - %.0.i4.i.i.i.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ %145, %138 ] - %139 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ false, %138 ] - %.sroa.02.0.i3.i.i.i.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ %.sroa.9.i, %138 ] - %.sroa.02.0.i3.i.i.i.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ 1, %138 ] - %140 = getelementptr inbounds nuw [2 x i64], ptr %136, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i - %141 = load i64, ptr %140, align 8, !alias.scope !13979, !noalias !13980, !noundef !4 - %142 = and i64 %.0.i4.i.i.i.i.i, %137 - %.not.i.i.i.i.i = icmp eq i64 %142, 0 - %143 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13984, !noalias !13987, !noundef !4 - %144 = select i1 %.not.i.i.i.i.i, i64 0, i64 %141 - %spec.select.i.i.i.i.i.i = add i64 %143, %144 + br label %137 + +137: ; preds = %137, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" + %.0.i4.i.i.i.i.i = phi i64 [ 1, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ %144, %137 ] + %138 = phi i1 [ true, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ false, %137 ] + %.sroa.02.0.i3.i.i.i.i.sroa.phi.i = phi ptr [ %.sroa.0.i, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ %.sroa.9.i, %137 ] + %.sroa.02.0.i3.i.i.i.i.i = phi i64 [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" ], [ 1, %137 ] + %139 = getelementptr inbounds nuw [2 x i64], ptr %135, i64 0, i64 %.sroa.02.0.i3.i.i.i.i.i + %140 = load i64, ptr %139, align 8, !alias.scope !13979, !noalias !13980, !noundef !4 + %141 = and i64 %.0.i4.i.i.i.i.i, %136 + %.not.i.i.i.i.i = icmp eq i64 %141, 0 + %142 = load i64, ptr %.sroa.02.0.i3.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13984, !noalias !13987, !noundef !4 + %143 = select i1 %.not.i.i.i.i.i, i64 0, i64 %140 + %spec.select.i.i.i.i.i.i = add i64 %142, %143 store i64 %spec.select.i.i.i.i.i.i, ptr %.sroa.02.0.i3.i.i.i.i.sroa.phi.i, align 8, !alias.scope !13984, !noalias !13987 - %145 = shl i64 %.0.i4.i.i.i.i.i, 1 - br i1 %139, label %138, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" + %144 = shl i64 %.0.i4.i.i.i.i.i, 1 + br i1 %138, label %137, label %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" -"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i": ; preds = %138 - %146 = getelementptr inbounds nuw i8, ptr %136, i64 16 - %147 = add i64 %135, -2 - %148 = lshr i64 %137, 2 - %149 = icmp ult i64 %147, 2 - br i1 %149, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" +"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i": ; preds = %137 + %145 = getelementptr inbounds nuw i8, ptr %135, i64 16 + %146 = add i64 %134, -2 + %147 = lshr i64 %136, 2 + %148 = icmp eq i64 %146, 0 + br i1 %148, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i, label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h22621da69fe46331E.exit.i.i.i.i.i" _ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i: ; preds = %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i", %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i - %.044.i = phi i64 [ %.0.i.i, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ], [ %148, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ] - %150 = icmp eq i64 %131, 0 + %.044.i = phi i64 [ %.0.i.i, %_ZN12arrow_buffer4util18bit_chunk_iterator9BitChunks14remainder_bits17hcf1b0aaa7a630a7bE.exit.i ], [ %147, %"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h45b50a64b268969eE.exit.i.i" ] + %149 = and i64 %14, 8 + %150 = icmp eq i64 %149, 0 %.sroa.0.i.0..sroa.0.i.0..sroa.0.i.0..sroa.0.0..sroa.0.0..sroa.042.0.copyload.pre53.i = load i64, ptr %.sroa.0.i, align 8, !noalias !13921 br i1 %150, label %_ZN11arrow_arith9aggregate24aggregate_nullable_lanes17he1adf4d6edb93fa5E.exit, label %.preheader.preheader.i .preheader.preheader.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator8try_fold17hd3b3b95fc955db12E.exit.i - %151 = load i64, ptr %133, align 8, !alias.scope !13916, !noalias !13919, !noundef !4 + %151 = load i64, ptr %132, align 8, !alias.scope !13916, !noalias !13919, !noundef !4 %152 = and i64 %.044.i, 1 %.not.i12 = icmp eq i64 %152, 0 %153 = select i1 %.not.i12, i64 0, i64 %151 diff --git a/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll b/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll index aab34aa7ec..c4adec1e2f 100644 --- a/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_common_types.cpp.ll @@ -8638,17 +8638,17 @@ entry: %cmp.i.i = icmp ult i32 %1, 13 %inlined.i = getelementptr inbounds nuw i8, ptr %blob, i64 4 %cond.i = select i1 %cmp.i.i, ptr %inlined.i, ptr %blob.coerce1 - %conv.i = and i64 %blob.coerce0, 4294967295 %cmp11.not = icmp eq i32 %1, 0 br i1 %cmp11.not, label %for.cond.cleanup, label %for.body.preheader for.body.preheader: ; preds = %entry + %conv.i = and i64 %blob.coerce0, 4294967295 %xtraiter = and i64 %blob.coerce0, 1 %2 = icmp eq i64 %conv.i, 1 br i1 %2, label %for.cond.cleanup.loopexit.unr-lcssa, label %for.body.preheader.new for.body.preheader.new: ; preds = %for.body.preheader - %unroll_iter = sub nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %blob.coerce0, 4294967294 br label %for.body for.cond.cleanup.loopexit.unr-lcssa: ; preds = %for.cond.1, %for.body.preheader @@ -8659,7 +8659,7 @@ for.cond.cleanup.loopexit.unr-lcssa: ; preds = %for.cond.1, %for.bo br i1 %lcmp.mod.not, label %for.cond.cleanup, label %for.body.epil for.body.epil: ; preds = %for.cond.cleanup.loopexit.unr-lcssa - %arrayidx.epil = getelementptr inbounds i8, ptr %cond.i, i64 %i.013.unr + %arrayidx.epil = getelementptr inbounds nuw i8, ptr %cond.i, i64 %i.013.unr %3 = load i8, ptr %arrayidx.epil, align 1, !tbaa !116 %4 = add i8 %3, -32 %or.cond.i.epil = icmp ult i8 %4, 95 @@ -8823,7 +8823,7 @@ for.body.i.preheader: ; preds = %entry br i1 %2, label %_ZN6duckdb4Blob13GetStringSizeENS_8string_tE.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nsw i64 %conv.i.i, %xtraiter + %unroll_iter = and i64 %blob.coerce0, 4294967294 br label %for.body.i for.body.i: ; preds = %for.cond.i.1, %for.body.i.preheader.new @@ -8880,7 +8880,7 @@ _ZN6duckdb4Blob13GetStringSizeENS_8string_tE.exit.loopexit.unr-lcssa: ; preds = br i1 %lcmp.mod.not, label %_ZN6duckdb4Blob13GetStringSizeENS_8string_tE.exit, label %for.body.i.epil for.body.i.epil: ; preds = %_ZN6duckdb4Blob13GetStringSizeENS_8string_tE.exit.loopexit.unr-lcssa - %arrayidx.i.epil = getelementptr inbounds i8, ptr %cond.i.i, i64 %i.013.i.unr + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i, i64 %i.013.i.unr %9 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !116 %10 = add i8 %9, -32 %or.cond.i.i.epil = icmp ult i8 %10, 95 @@ -49438,8 +49438,7 @@ for.body12.i.preheader: ; preds = %cleanup.i.epil, %fo br i1 %min.iters.check, label %for.body12.i.preheader40, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader - %n.mod.vf = and i64 %count, 3 - %n.vec = sub nuw nsw i64 %rem.i, %n.mod.vf + %n.vec = and i64 %count, 60 %8 = insertelement <2 x i64> , i64 %valid.050.i.lcssa, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -49463,6 +49462,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %15, label %middle.block, label %vector.body, !llvm.loop !1003 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %count, 3 %bin.rdx = add <2 x i64> %14, %13 %16 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 diff --git a/bench/duckdb/optimized/ub_duckdb_func_list.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_list.cpp.ll index 39b9921630..76e9cce3a9 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_list.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_list.cpp.ll @@ -870,8 +870,7 @@ for.body.i.preheader: ; preds = %entry br i1 %min.iters.check, label %for.body.i.preheader5, label %vector.ph vector.ph: ; preds = %for.body.i.preheader - %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -893,6 +892,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !32 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 %bin.rdx = add <2 x i64> %9, %8 %11 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -906,7 +906,7 @@ for.body.i.preheader5: ; preds = %middle.block, %for. for.body.i: ; preds = %for.body.i.preheader5, %for.body.i %i.08.i = phi i64 [ %inc.i, %for.body.i ], [ %i.08.i.ph, %for.body.i.preheader5 ] %length.07.i = phi i64 [ %add.i, %for.body.i ], [ %length.07.i.ph, %for.body.i.preheader5 ] - %arrayidx.i = getelementptr inbounds i8, ptr %cond.i.i, i64 %i.08.i + %arrayidx.i = getelementptr inbounds nuw i8, ptr %cond.i.i, i64 %i.08.i %12 = load i8, ptr %arrayidx.i, align 1, !tbaa !31 %cmp.i.i = icmp sgt i8 %12, -65 %conv.i = zext i1 %cmp.i.i to i64 @@ -3526,8 +3526,7 @@ for.body.i.i.i.i.preheader: ; preds = %cond.true15.i.i br i1 %min.iters.check410, label %for.body.i.i.i.i.preheader132, label %vector.ph411 vector.ph411: ; preds = %for.body.i.i.i.i.preheader - %n.mod.vf412 = and i64 %str.sroa.0.0.copyload.i.i248, 3 - %n.vec413 = sub nuw nsw i64 %conv.i.i.i.i.i, %n.mod.vf412 + %n.vec413 = and i64 %str.sroa.0.0.copyload.i.i248, 4294967292 br label %vector.body416 vector.body416: ; preds = %vector.body416, %vector.ph411 @@ -3549,6 +3548,7 @@ vector.body416: ; preds = %vector.body416, %ve br i1 %225, label %middle.block408, label %vector.body416, !llvm.loop !129 middle.block408: ; preds = %vector.body416 + %n.mod.vf412 = and i64 %str.sroa.0.0.copyload.i.i248, 3 %bin.rdx423 = add <2 x i64> %224, %223 %226 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx423) %cmp.n415 = icmp eq i64 %n.mod.vf412, 0 @@ -3562,7 +3562,7 @@ for.body.i.i.i.i.preheader132: ; preds = %middle.block408, %f for.body.i.i.i.i: ; preds = %for.body.i.i.i.i.preheader132, %for.body.i.i.i.i %i.08.i.i.i.i = phi i64 [ %inc.i.i.i.i, %for.body.i.i.i.i ], [ %i.08.i.i.i.i.ph, %for.body.i.i.i.i.preheader132 ] %length.07.i.i.i.i = phi i64 [ %add.i.i.i.i, %for.body.i.i.i.i ], [ %length.07.i.i.i.i.ph, %for.body.i.i.i.i.preheader132 ] - %arrayidx.i.i.i.i329 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.08.i.i.i.i + %arrayidx.i.i.i.i329 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.08.i.i.i.i %227 = load i8, ptr %arrayidx.i.i.i.i329, align 1, !tbaa !31 %cmp.i.i.i.i.i330 = icmp sgt i8 %227, -65 %conv.i.i.i.i331 = zext i1 %cmp.i.i.i.i.i330 to i64 @@ -3612,8 +3612,7 @@ for.body.i.i165.i.i.preheader: ; preds = %cond.true33.i.i br i1 %min.iters.check427, label %for.body.i.i165.i.i.preheader129, label %vector.ph428 vector.ph428: ; preds = %for.body.i.i165.i.i.preheader - %n.mod.vf429 = and i64 %str.sroa.0.0.copyload.i.i248, 3 - %n.vec430 = sub nuw nsw i64 %conv.i.i.i163.i.i, %n.mod.vf429 + %n.vec430 = and i64 %str.sroa.0.0.copyload.i.i248, 4294967292 br label %vector.body433 vector.body433: ; preds = %vector.body433, %vector.ph428 @@ -3635,6 +3634,7 @@ vector.body433: ; preds = %vector.body433, %ve br i1 %240, label %middle.block425, label %vector.body433, !llvm.loop !131 middle.block425: ; preds = %vector.body433 + %n.mod.vf429 = and i64 %str.sroa.0.0.copyload.i.i248, 3 %bin.rdx440 = add <2 x i64> %239, %238 %241 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx440) %cmp.n432 = icmp eq i64 %n.mod.vf429, 0 @@ -3648,7 +3648,7 @@ for.body.i.i165.i.i.preheader129: ; preds = %middle.block425, %f for.body.i.i165.i.i: ; preds = %for.body.i.i165.i.i.preheader129, %for.body.i.i165.i.i %i.08.i.i166.i.i = phi i64 [ %inc.i.i172.i.i, %for.body.i.i165.i.i ], [ %i.08.i.i166.i.i.ph, %for.body.i.i165.i.i.preheader129 ] %length.07.i.i167.i.i = phi i64 [ %add.i.i171.i.i, %for.body.i.i165.i.i ], [ %length.07.i.i167.i.i.ph, %for.body.i.i165.i.i.preheader129 ] - %arrayidx.i.i168.i.i = getelementptr inbounds i8, ptr %cond.i.i.i162.i.i, i64 %i.08.i.i166.i.i + %arrayidx.i.i168.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i162.i.i, i64 %i.08.i.i166.i.i %242 = load i8, ptr %arrayidx.i.i168.i.i, align 1, !tbaa !31 %cmp.i.i.i169.i.i = icmp sgt i8 %242, -65 %conv.i.i170.i.i = zext i1 %cmp.i.i.i169.i.i to i64 @@ -3769,8 +3769,7 @@ for.body.i.i.i.i.i.preheader: ; preds = %if.end.i.i.i298 br i1 %min.iters.check444, label %for.body.i.i.i.i.i.preheader127, label %vector.ph445 vector.ph445: ; preds = %for.body.i.i.i.i.i.preheader - %n.mod.vf446 = and i64 %str.sroa.0.0.copyload.i.i248, 3 - %n.vec447 = sub nuw nsw i64 %conv.i.i.i.i.i.i, %n.mod.vf446 + %n.vec447 = and i64 %str.sroa.0.0.copyload.i.i248, 4294967292 br label %vector.body450 vector.body450: ; preds = %vector.body450, %vector.ph445 @@ -3792,6 +3791,7 @@ vector.body450: ; preds = %vector.body450, %ve br i1 %264, label %middle.block442, label %vector.body450, !llvm.loop !133 middle.block442: ; preds = %vector.body450 + %n.mod.vf446 = and i64 %str.sroa.0.0.copyload.i.i248, 3 %bin.rdx457 = add <2 x i64> %263, %262 %265 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx457) %cmp.n449 = icmp eq i64 %n.mod.vf446, 0 @@ -3805,7 +3805,7 @@ for.body.i.i.i.i.i.preheader127: ; preds = %middle.block442, %f for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader127, %for.body.i.i.i.i.i %i.08.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %i.08.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader127 ] %length.07.i.i.i.i.i = phi i64 [ %add.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %length.07.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader127 ] - %arrayidx.i.i.i.i.i302 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i + %arrayidx.i.i.i.i.i302 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i %266 = load i8, ptr %arrayidx.i.i.i.i.i302, align 1, !tbaa !31 %cmp.i.i.i.i198.i.i = icmp sgt i8 %266, -65 %conv.i.i.i199.i.i = zext i1 %cmp.i.i.i.i198.i.i to i64 @@ -4249,8 +4249,7 @@ for.body.i.i.i110.i.preheader: ; preds = %cond.true77.i.i br i1 %min.iters.check368, label %for.body.i.i.i110.i.preheader140, label %vector.ph369 vector.ph369: ; preds = %for.body.i.i.i110.i.preheader - %n.mod.vf370 = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 - %n.vec371 = sub nuw nsw i64 %conv.i.i.i.i108.i, %n.mod.vf370 + %n.vec371 = and i64 %sliced.sroa.0.0.copyload.i.i235, 4294967292 br label %vector.body374 vector.body374: ; preds = %vector.body374, %vector.ph369 @@ -4272,6 +4271,7 @@ vector.body374: ; preds = %vector.body374, %ve br i1 %323, label %middle.block366, label %vector.body374, !llvm.loop !135 middle.block366: ; preds = %vector.body374 + %n.mod.vf370 = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 %bin.rdx381 = add <2 x i64> %322, %321 %324 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx381) %cmp.n373 = icmp eq i64 %n.mod.vf370, 0 @@ -4285,7 +4285,7 @@ for.body.i.i.i110.i.preheader140: ; preds = %middle.block366, %f for.body.i.i.i110.i: ; preds = %for.body.i.i.i110.i.preheader140, %for.body.i.i.i110.i %i.08.i.i.i111.i = phi i64 [ %inc.i.i.i117.i, %for.body.i.i.i110.i ], [ %i.08.i.i.i111.i.ph, %for.body.i.i.i110.i.preheader140 ] %length.07.i.i.i112.i = phi i64 [ %add.i.i.i116.i, %for.body.i.i.i110.i ], [ %length.07.i.i.i112.i.ph, %for.body.i.i.i110.i.preheader140 ] - %arrayidx.i.i.i113.i = getelementptr inbounds i8, ptr %cond.i.i.i.i107.i, i64 %i.08.i.i.i111.i + %arrayidx.i.i.i113.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i107.i, i64 %i.08.i.i.i111.i %325 = load i8, ptr %arrayidx.i.i.i113.i, align 1, !tbaa !31 %cmp.i.i.i.i114.i = icmp sgt i8 %325, -65 %conv.i.i.i115.i = zext i1 %cmp.i.i.i.i114.i to i64 @@ -4336,8 +4336,7 @@ for.body.i.i340.i.i.preheader: ; preds = %cond.true101.i.i br i1 %min.iters.check351, label %for.body.i.i340.i.i.preheader139, label %vector.ph352 vector.ph352: ; preds = %for.body.i.i340.i.i.preheader - %n.mod.vf353 = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 - %n.vec354 = sub nuw nsw i64 %conv.i.i.i338.i.i, %n.mod.vf353 + %n.vec354 = and i64 %sliced.sroa.0.0.copyload.i.i235, 4294967292 br label %vector.body357 vector.body357: ; preds = %vector.body357, %vector.ph352 @@ -4359,6 +4358,7 @@ vector.body357: ; preds = %vector.body357, %ve br i1 %339, label %middle.block349, label %vector.body357, !llvm.loop !137 middle.block349: ; preds = %vector.body357 + %n.mod.vf353 = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 %bin.rdx364 = add <2 x i64> %338, %337 %340 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx364) %cmp.n356 = icmp eq i64 %n.mod.vf353, 0 @@ -4372,7 +4372,7 @@ for.body.i.i340.i.i.preheader139: ; preds = %middle.block349, %f for.body.i.i340.i.i: ; preds = %for.body.i.i340.i.i.preheader139, %for.body.i.i340.i.i %i.08.i.i341.i.i = phi i64 [ %inc.i.i347.i.i, %for.body.i.i340.i.i ], [ %i.08.i.i341.i.i.ph, %for.body.i.i340.i.i.preheader139 ] %length.07.i.i342.i.i = phi i64 [ %add.i.i346.i.i, %for.body.i.i340.i.i ], [ %length.07.i.i342.i.i.ph, %for.body.i.i340.i.i.preheader139 ] - %arrayidx.i.i343.i.i = getelementptr inbounds i8, ptr %cond.i.i.i337.i.i, i64 %i.08.i.i341.i.i + %arrayidx.i.i343.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i337.i.i, i64 %i.08.i.i341.i.i %341 = load i8, ptr %arrayidx.i.i343.i.i, align 1, !tbaa !31 %cmp.i.i.i344.i.i = icmp sgt i8 %341, -65 %conv.i.i345.i.i = zext i1 %cmp.i.i.i344.i.i to i64 @@ -4428,8 +4428,7 @@ for.body.i.i.i.i71.i.preheader: ; preds = %if.end.i.i64.i br i1 %min.iters.check, label %for.body.i.i.i.i71.i.preheader138, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.i71.i.preheader - %n.mod.vf = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i.i69.i, %n.mod.vf + %n.vec = and i64 %sliced.sroa.0.0.copyload.i.i235, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4451,6 +4450,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %351, label %middle.block, label %vector.body, !llvm.loop !139 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %sliced.sroa.0.0.copyload.i.i235, 3 %bin.rdx = add <2 x i64> %350, %349 %352 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -4464,7 +4464,7 @@ for.body.i.i.i.i71.i.preheader138: ; preds = %middle.block, %for. for.body.i.i.i.i71.i: ; preds = %for.body.i.i.i.i71.i.preheader138, %for.body.i.i.i.i71.i %i.08.i.i.i.i72.i = phi i64 [ %inc.i.i.i.i75.i, %for.body.i.i.i.i71.i ], [ %i.08.i.i.i.i72.i.ph, %for.body.i.i.i.i71.i.preheader138 ] %length.07.i.i.i.i73.i = phi i64 [ %add.i.i.i.i74.i, %for.body.i.i.i.i71.i ], [ %length.07.i.i.i.i73.i.ph, %for.body.i.i.i.i71.i.preheader138 ] - %arrayidx.i.i.i352.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i68.i, i64 %i.08.i.i.i.i72.i + %arrayidx.i.i.i352.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i68.i, i64 %i.08.i.i.i.i72.i %353 = load i8, ptr %arrayidx.i.i.i352.i.i, align 1, !tbaa !31 %cmp.i.i.i.i353.i.i = icmp sgt i8 %353, -65 %conv.i.i.i354.i.i = zext i1 %cmp.i.i.i.i353.i.i to i64 @@ -21642,8 +21642,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -21667,6 +21666,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !334 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -21961,8 +21961,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check283, label %for.body12.i.i87.preheader, label %vector.ph284 vector.ph284: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf285 = and i64 %call5, 3 - %n.vec286 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf285 + %n.vec286 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert297 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat298 = shufflevector <2 x i64> %broadcast.splatinsert297, <2 x i64> poison, <2 x i32> zeroinitializer @@ -21986,6 +21985,7 @@ vector.body289: ; preds = %vector.body289, %ve br i1 %44, label %middle.block281, label %vector.body289, !llvm.loop !336 middle.block281: ; preds = %vector.body289 + %n.mod.vf285 = and i64 %call5, 3 %bin.rdx300 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx300) %cmp.n288 = icmp eq i64 %n.mod.vf285, 0 @@ -24689,8 +24689,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -24714,6 +24713,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !412 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -25008,8 +25008,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check283, label %for.body12.i.i87.preheader, label %vector.ph284 vector.ph284: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf285 = and i64 %call5, 3 - %n.vec286 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf285 + %n.vec286 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert297 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat298 = shufflevector <2 x i64> %broadcast.splatinsert297, <2 x i64> poison, <2 x i32> zeroinitializer @@ -25033,6 +25032,7 @@ vector.body289: ; preds = %vector.body289, %ve br i1 %44, label %middle.block281, label %vector.body289, !llvm.loop !414 middle.block281: ; preds = %vector.body289 + %n.mod.vf285 = and i64 %call5, 3 %bin.rdx300 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx300) %cmp.n288 = icmp eq i64 %n.mod.vf285, 0 @@ -28480,8 +28480,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -28505,6 +28504,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !489 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -28799,8 +28799,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check331, label %for.body12.i.i87.preheader, label %vector.ph332 vector.ph332: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf333 = and i64 %call5, 3 - %n.vec334 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf333 + %n.vec334 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert345 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat346 = shufflevector <2 x i64> %broadcast.splatinsert345, <2 x i64> poison, <2 x i32> zeroinitializer @@ -28824,6 +28823,7 @@ vector.body337: ; preds = %vector.body337, %ve br i1 %44, label %middle.block329, label %vector.body337, !llvm.loop !491 middle.block329: ; preds = %vector.body337 + %n.mod.vf333 = and i64 %call5, 3 %bin.rdx348 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx348) %cmp.n336 = icmp eq i64 %n.mod.vf333, 0 @@ -31515,8 +31515,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -31540,6 +31539,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !558 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -31834,8 +31834,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check331, label %for.body12.i.i87.preheader, label %vector.ph332 vector.ph332: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf333 = and i64 %call5, 3 - %n.vec334 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf333 + %n.vec334 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert345 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat346 = shufflevector <2 x i64> %broadcast.splatinsert345, <2 x i64> poison, <2 x i32> zeroinitializer @@ -31859,6 +31858,7 @@ vector.body337: ; preds = %vector.body337, %ve br i1 %44, label %middle.block329, label %vector.body337, !llvm.loop !560 middle.block329: ; preds = %vector.body337 + %n.mod.vf333 = and i64 %call5, 3 %bin.rdx348 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx348) %cmp.n336 = icmp eq i64 %n.mod.vf333, 0 @@ -35312,8 +35312,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -35337,6 +35336,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !627 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -35631,8 +35631,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check283, label %for.body12.i.i87.preheader, label %vector.ph284 vector.ph284: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf285 = and i64 %call5, 3 - %n.vec286 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf285 + %n.vec286 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert297 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat298 = shufflevector <2 x i64> %broadcast.splatinsert297, <2 x i64> poison, <2 x i32> zeroinitializer @@ -35656,6 +35655,7 @@ vector.body289: ; preds = %vector.body289, %ve br i1 %44, label %middle.block281, label %vector.body289, !llvm.loop !629 middle.block281: ; preds = %vector.body289 + %n.mod.vf285 = and i64 %call5, 3 %bin.rdx300 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx300) %cmp.n288 = icmp eq i64 %n.mod.vf285, 0 @@ -38290,8 +38290,7 @@ for.body12.i.preheader.i: ; preds = %cleanup.i.i.epil, % br i1 %min.iters.check, label %for.body12.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body12.i.preheader.i - %n.mod.vf = and i64 %call4, 3 - %n.vec = sub nuw nsw i64 %rem.i.i, %n.mod.vf + %n.vec = and i64 %call4, 60 %10 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i, i64 0 %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %.lcssa.i, i64 0 %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer @@ -38315,6 +38314,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !702 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call4, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -38609,8 +38609,7 @@ for.body12.i.preheader.i84: ; preds = %cleanup.i.i79.epil, br i1 %min.iters.check283, label %for.body12.i.i87.preheader, label %vector.ph284 vector.ph284: ; preds = %for.body12.i.preheader.i84 - %n.mod.vf285 = and i64 %call5, 3 - %n.vec286 = sub nuw nsw i64 %rem.i.i72, %n.mod.vf285 + %n.vec286 = and i64 %call5, 60 %37 = insertelement <2 x i64> , i64 %valid.050.i.lcssa.i85, i64 0 %broadcast.splatinsert297 = insertelement <2 x i64> poison, i64 %.lcssa.i86, i64 0 %broadcast.splat298 = shufflevector <2 x i64> %broadcast.splatinsert297, <2 x i64> poison, <2 x i32> zeroinitializer @@ -38634,6 +38633,7 @@ vector.body289: ; preds = %vector.body289, %ve br i1 %44, label %middle.block281, label %vector.body289, !llvm.loop !704 middle.block281: ; preds = %vector.body289 + %n.mod.vf285 = and i64 %call5, 3 %bin.rdx300 = add <2 x i64> %43, %42 %45 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx300) %cmp.n288 = icmp eq i64 %n.mod.vf285, 0 diff --git a/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll index 23109865c2..58488b464c 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_string.cpp.ll @@ -14163,8 +14163,7 @@ for.body.i.i.i.i.i.i.i.i.preheader: ; preds = %if.end.i.i.i.i.i.i br i1 %min.iters.check275, label %for.body.i.i.i.i.i.i.i.i.preheader226, label %vector.ph276 vector.ph276: ; preds = %for.body.i.i.i.i.i.i.i.i.preheader - %n.mod.vf277 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 3 - %n.vec278 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i, %n.mod.vf277 + %n.vec278 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 4294967292 br label %vector.body281 vector.body281: ; preds = %vector.body281, %vector.ph276 @@ -14186,6 +14185,7 @@ vector.body281: ; preds = %vector.body281, %ve br i1 %21, label %middle.block273, label %vector.body281, !llvm.loop !340 middle.block273: ; preds = %vector.body281 + %n.mod.vf277 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 3 %bin.rdx288 = add <2 x i64> %20, %19 %22 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx288) %cmp.n280 = icmp eq i64 %n.mod.vf277, 0 @@ -14199,7 +14199,7 @@ for.body.i.i.i.i.i.i.i.i.preheader226: ; preds = %middle.block273, %f for.body.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.preheader226, %for.body.i.i.i.i.i.i.i.i %i.08.i.i.i.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %i.08.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader226 ] %length.07.i.i.i.i.i.i.i.i = phi i64 [ %add.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %length.07.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader226 ] - %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i + %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i %23 = load i8, ptr %arrayidx.i.i.i.i.i.i.i.i, align 1, !tbaa !35 %cmp.i.i.i.i.i.i.i.i.i = icmp sgt i8 %23, -65 %conv.i.i.i.i.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i.i to i64 @@ -14472,8 +14472,7 @@ for.body.i.i.i.i.i.i.i.i.i.preheader: ; preds = %for.body9.i.i.i.i br i1 %min.iters.check224, label %for.body.i.i.i.i.i.i.i.i.i.preheader232, label %vector.ph225 vector.ph225: ; preds = %for.body.i.i.i.i.i.i.i.i.i.preheader - %n.mod.vf226 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec227 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i, %n.mod.vf226 + %n.vec227 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body230 vector.body230: ; preds = %vector.body230, %vector.ph225 @@ -14495,6 +14494,7 @@ vector.body230: ; preds = %vector.body230, %ve br i1 %67, label %middle.block222, label %vector.body230, !llvm.loop !357 middle.block222: ; preds = %vector.body230 + %n.mod.vf226 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx237 = add <2 x i64> %66, %65 %68 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx237) %cmp.n229 = icmp eq i64 %n.mod.vf226, 0 @@ -14508,7 +14508,7 @@ for.body.i.i.i.i.i.i.i.i.i.preheader232: ; preds = %middle.block222, %f for.body.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.preheader232, %for.body.i.i.i.i.i.i.i.i.i %i.08.i.i.i.i.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i ], [ %i.08.i.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.i.preheader232 ] %length.07.i.i.i.i.i.i.i.i.i = phi i64 [ %add.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i ], [ %length.07.i.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.i.preheader232 ] - %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i.i + %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i.i %69 = load i8, ptr %arrayidx.i.i.i.i.i.i.i.i.i, align 1, !tbaa !35, !noalias !344 %cmp.i.i.i.i.i.i.i.i65.i.i = icmp sgt i8 %69, -65 %conv.i.i.i.i.i.i.i66.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i65.i.i to i64 @@ -14566,8 +14566,7 @@ for.body.i.i.i.i.i118.i.i.i.i.preheader: ; preds = %if.end.i.i.i112.i.i br i1 %min.iters.check241, label %for.body.i.i.i.i.i118.i.i.i.i.preheader233, label %vector.ph242 vector.ph242: ; preds = %for.body.i.i.i.i.i118.i.i.i.i.preheader - %n.mod.vf243 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec244 = sub nuw nsw i64 %conv.i.i.i.i.i.i116.i.i.i.i, %n.mod.vf243 + %n.vec244 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body247 vector.body247: ; preds = %vector.body247, %vector.ph242 @@ -14589,6 +14588,7 @@ vector.body247: ; preds = %vector.body247, %ve br i1 %82, label %middle.block239, label %vector.body247, !llvm.loop !359 middle.block239: ; preds = %vector.body247 + %n.mod.vf243 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx254 = add <2 x i64> %81, %80 %83 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx254) %cmp.n246 = icmp eq i64 %n.mod.vf243, 0 @@ -14602,7 +14602,7 @@ for.body.i.i.i.i.i118.i.i.i.i.preheader233: ; preds = %middle.block239, %f for.body.i.i.i.i.i118.i.i.i.i: ; preds = %for.body.i.i.i.i.i118.i.i.i.i.preheader233, %for.body.i.i.i.i.i118.i.i.i.i %i.08.i.i.i.i.i119.i.i.i.i = phi i64 [ %inc.i.i.i.i.i125.i.i.i.i, %for.body.i.i.i.i.i118.i.i.i.i ], [ %i.08.i.i.i.i.i119.i.i.i.i.ph, %for.body.i.i.i.i.i118.i.i.i.i.preheader233 ] %length.07.i.i.i.i.i120.i.i.i.i = phi i64 [ %add.i.i.i.i.i124.i.i.i.i, %for.body.i.i.i.i.i118.i.i.i.i ], [ %length.07.i.i.i.i.i120.i.i.i.i.ph, %for.body.i.i.i.i.i118.i.i.i.i.preheader233 ] - %arrayidx.i.i.i.i.i121.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i115.i.i.i.i, i64 %i.08.i.i.i.i.i119.i.i.i.i + %arrayidx.i.i.i.i.i121.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i115.i.i.i.i, i64 %i.08.i.i.i.i.i119.i.i.i.i %84 = load i8, ptr %arrayidx.i.i.i.i.i121.i.i.i.i, align 1, !tbaa !35, !noalias !344 %cmp.i.i.i.i.i.i122.i.i.i.i = icmp sgt i8 %84, -65 %conv.i.i.i.i.i123.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i122.i.i.i.i to i64 @@ -14661,8 +14661,7 @@ for.body.i.i.i.i.i142.i.i.i.i.preheader: ; preds = %for.body52.i.i.i.i br i1 %min.iters.check258, label %for.body.i.i.i.i.i142.i.i.i.i.preheader228, label %vector.ph259 vector.ph259: ; preds = %for.body.i.i.i.i.i142.i.i.i.i.preheader - %n.mod.vf260 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec261 = sub nuw nsw i64 %conv.i.i.i.i.i.i140.i.i.i.i, %n.mod.vf260 + %n.vec261 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body264 vector.body264: ; preds = %vector.body264, %vector.ph259 @@ -14684,6 +14683,7 @@ vector.body264: ; preds = %vector.body264, %ve br i1 %96, label %middle.block256, label %vector.body264, !llvm.loop !363 middle.block256: ; preds = %vector.body264 + %n.mod.vf260 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx271 = add <2 x i64> %95, %94 %97 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx271) %cmp.n263 = icmp eq i64 %n.mod.vf260, 0 @@ -14697,7 +14697,7 @@ for.body.i.i.i.i.i142.i.i.i.i.preheader228: ; preds = %middle.block256, %f for.body.i.i.i.i.i142.i.i.i.i: ; preds = %for.body.i.i.i.i.i142.i.i.i.i.preheader228, %for.body.i.i.i.i.i142.i.i.i.i %i.08.i.i.i.i.i143.i.i.i.i = phi i64 [ %inc.i.i.i.i.i149.i.i.i.i, %for.body.i.i.i.i.i142.i.i.i.i ], [ %i.08.i.i.i.i.i143.i.i.i.i.ph, %for.body.i.i.i.i.i142.i.i.i.i.preheader228 ] %length.07.i.i.i.i.i144.i.i.i.i = phi i64 [ %add.i.i.i.i.i148.i.i.i.i, %for.body.i.i.i.i.i142.i.i.i.i ], [ %length.07.i.i.i.i.i144.i.i.i.i.ph, %for.body.i.i.i.i.i142.i.i.i.i.preheader228 ] - %arrayidx.i.i.i.i.i145.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i139.i.i.i.i, i64 %i.08.i.i.i.i.i143.i.i.i.i + %arrayidx.i.i.i.i.i145.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i139.i.i.i.i, i64 %i.08.i.i.i.i.i143.i.i.i.i %98 = load i8, ptr %arrayidx.i.i.i.i.i145.i.i.i.i, align 1, !tbaa !35, !noalias !344 %cmp.i.i.i.i.i.i146.i.i.i.i = icmp sgt i8 %98, -65 %conv.i.i.i.i.i147.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i146.i.i.i.i to i64 @@ -14875,7 +14875,7 @@ for.body52.lr.ph.i.i208.i.i: ; preds = %for.cond49.preheade for.body52.i.i217.i.i.preheader: ; preds = %for.body52.lr.ph.i.i208.i.i %min.iters.check207 = icmp samesign ult i64 %conv.i.i.i.i.i.i140.i.i215.i.i, 4 %n.mod.vf209 = and i64 %lentry53.sroa.0.0.copyload.fr.i.i.i.i, 3 - %n.vec210 = sub nsw i64 %conv.i.i.i.i.i.i140.i.i215.i.i, %n.mod.vf209 + %n.vec210 = and i64 %lentry53.sroa.0.0.copyload.fr.i.i.i.i, 4294967292 %cmp.n212 = icmp eq i64 %n.mod.vf209, 0 br label %for.body52.i.i217.i.i @@ -14950,7 +14950,7 @@ for.body9.lr.ph.i.i132.i.i: ; preds = %for.cond7.preheader for.body9.i.i139.i.i.preheader: ; preds = %for.body9.lr.ph.i.i132.i.i %min.iters.check173 = icmp samesign ult i64 %conv.i.i.i.i.i.i.i.i137.i.i, 4 %n.mod.vf175 = and i64 %lentry.sroa.0.0.copyload.fr.i.i.i.i, 3 - %n.vec176 = sub nsw i64 %conv.i.i.i.i.i.i.i.i137.i.i, %n.mod.vf175 + %n.vec176 = and i64 %lentry.sroa.0.0.copyload.fr.i.i.i.i, 4294967292 %cmp.n178 = icmp eq i64 %n.mod.vf175, 0 br label %for.body9.i.i139.i.i @@ -15018,7 +15018,7 @@ for.body.i.i.i.i.i.i.i142.i.i.preheader: ; preds = %middle.block171, %i for.body.i.i.i.i.i.i.i142.i.i: ; preds = %for.body.i.i.i.i.i.i.i142.i.i.preheader, %for.body.i.i.i.i.i.i.i142.i.i %i.08.i.i.i.i.i.i.i143.i.i = phi i64 [ %inc.i.i.i.i.i.i.i149.i.i, %for.body.i.i.i.i.i.i.i142.i.i ], [ %i.08.i.i.i.i.i.i.i143.i.i.ph, %for.body.i.i.i.i.i.i.i142.i.i.preheader ] %length.07.i.i.i.i.i.i.i144.i.i = phi i64 [ %add.i.i.i.i.i.i.i148.i.i, %for.body.i.i.i.i.i.i.i142.i.i ], [ %length.07.i.i.i.i.i.i.i144.i.i.ph, %for.body.i.i.i.i.i.i.i142.i.i.preheader ] - %arrayidx.i.i.i.i.i.i.i145.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i136.i.i, i64 %i.08.i.i.i.i.i.i.i143.i.i + %arrayidx.i.i.i.i.i.i.i145.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i136.i.i, i64 %i.08.i.i.i.i.i.i.i143.i.i %146 = load i8, ptr %arrayidx.i.i.i.i.i.i.i145.i.i, align 1, !tbaa !35, !noalias !365 %cmp.i.i.i.i.i.i.i.i146.i.i = icmp sgt i8 %146, -65 %conv.i.i.i.i.i.i.i147.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i146.i.i to i64 @@ -15079,8 +15079,7 @@ for.body.i.i.i.i.i118.i.i182.i.i.preheader: ; preds = %if.end.i.i.i112.i.i br i1 %min.iters.check190, label %for.body.i.i.i.i.i118.i.i182.i.i.preheader246, label %vector.ph191 vector.ph191: ; preds = %for.body.i.i.i.i.i118.i.i182.i.i.preheader - %n.mod.vf192 = and i64 %lentry26.sroa.0.0.copyload.i.i174.i.i, 3 - %n.vec193 = sub nuw nsw i64 %conv.i.i.i.i.i.i116.i.i180.i.i, %n.mod.vf192 + %n.vec193 = and i64 %lentry26.sroa.0.0.copyload.i.i174.i.i, 4294967292 br label %vector.body196 vector.body196: ; preds = %vector.body196, %vector.ph191 @@ -15102,6 +15101,7 @@ vector.body196: ; preds = %vector.body196, %ve br i1 %159, label %middle.block188, label %vector.body196, !llvm.loop !380 middle.block188: ; preds = %vector.body196 + %n.mod.vf192 = and i64 %lentry26.sroa.0.0.copyload.i.i174.i.i, 3 %bin.rdx203 = add <2 x i64> %158, %157 %160 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx203) %cmp.n195 = icmp eq i64 %n.mod.vf192, 0 @@ -15115,7 +15115,7 @@ for.body.i.i.i.i.i118.i.i182.i.i.preheader246: ; preds = %middle.block188, %f for.body.i.i.i.i.i118.i.i182.i.i: ; preds = %for.body.i.i.i.i.i118.i.i182.i.i.preheader246, %for.body.i.i.i.i.i118.i.i182.i.i %i.08.i.i.i.i.i119.i.i183.i.i = phi i64 [ %inc.i.i.i.i.i125.i.i189.i.i, %for.body.i.i.i.i.i118.i.i182.i.i ], [ %i.08.i.i.i.i.i119.i.i183.i.i.ph, %for.body.i.i.i.i.i118.i.i182.i.i.preheader246 ] %length.07.i.i.i.i.i120.i.i184.i.i = phi i64 [ %add.i.i.i.i.i124.i.i188.i.i, %for.body.i.i.i.i.i118.i.i182.i.i ], [ %length.07.i.i.i.i.i120.i.i184.i.i.ph, %for.body.i.i.i.i.i118.i.i182.i.i.preheader246 ] - %arrayidx.i.i.i.i.i121.i.i185.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i115.i.i179.i.i, i64 %i.08.i.i.i.i.i119.i.i183.i.i + %arrayidx.i.i.i.i.i121.i.i185.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i115.i.i179.i.i, i64 %i.08.i.i.i.i.i119.i.i183.i.i %161 = load i8, ptr %arrayidx.i.i.i.i.i121.i.i185.i.i, align 1, !tbaa !35, !noalias !365 %cmp.i.i.i.i.i.i122.i.i186.i.i = icmp sgt i8 %161, -65 %conv.i.i.i.i.i123.i.i187.i.i = zext i1 %cmp.i.i.i.i.i.i122.i.i186.i.i to i64 @@ -15197,7 +15197,7 @@ for.body.i.i.i.i.i142.i.i220.i.i.preheader: ; preds = %middle.block205, %i for.body.i.i.i.i.i142.i.i220.i.i: ; preds = %for.body.i.i.i.i.i142.i.i220.i.i.preheader, %for.body.i.i.i.i.i142.i.i220.i.i %i.08.i.i.i.i.i143.i.i221.i.i = phi i64 [ %inc.i.i.i.i.i149.i.i227.i.i, %for.body.i.i.i.i.i142.i.i220.i.i ], [ %i.08.i.i.i.i.i143.i.i221.i.i.ph, %for.body.i.i.i.i.i142.i.i220.i.i.preheader ] %length.07.i.i.i.i.i144.i.i222.i.i = phi i64 [ %add.i.i.i.i.i148.i.i226.i.i, %for.body.i.i.i.i.i142.i.i220.i.i ], [ %length.07.i.i.i.i.i144.i.i222.i.i.ph, %for.body.i.i.i.i.i142.i.i220.i.i.preheader ] - %arrayidx.i.i.i.i.i145.i.i223.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i139.i.i214.i.i, i64 %i.08.i.i.i.i.i143.i.i221.i.i + %arrayidx.i.i.i.i.i145.i.i223.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i139.i.i214.i.i, i64 %i.08.i.i.i.i.i143.i.i221.i.i %175 = load i8, ptr %arrayidx.i.i.i.i.i145.i.i223.i.i, align 1, !tbaa !35, !noalias !365 %cmp.i.i.i.i.i.i146.i.i224.i.i = icmp sgt i8 %175, -65 %conv.i.i.i.i.i147.i.i225.i.i = zext i1 %cmp.i.i.i.i.i.i146.i.i224.i.i to i64 @@ -15418,8 +15418,7 @@ for.body.i.i.i.i.i.i.i307.i.i.preheader: ; preds = %if.end.i.i.i.i.i302 br i1 %min.iters.check122, label %for.body.i.i.i.i.i.i.i307.i.i.preheader259, label %vector.ph123 vector.ph123: ; preds = %for.body.i.i.i.i.i.i.i307.i.i.preheader - %n.mod.vf124 = and i64 %lentry.sroa.0.0.copyload.i.i298.i.i, 3 - %n.vec125 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i305.i.i, %n.mod.vf124 + %n.vec125 = and i64 %lentry.sroa.0.0.copyload.i.i298.i.i, 4294967292 br label %vector.body128 vector.body128: ; preds = %vector.body128, %vector.ph123 @@ -15441,6 +15440,7 @@ vector.body128: ; preds = %vector.body128, %ve br i1 %212, label %middle.block120, label %vector.body128, !llvm.loop !396 middle.block120: ; preds = %vector.body128 + %n.mod.vf124 = and i64 %lentry.sroa.0.0.copyload.i.i298.i.i, 3 %bin.rdx135 = add <2 x i64> %211, %210 %213 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx135) %cmp.n127 = icmp eq i64 %n.mod.vf124, 0 @@ -15454,7 +15454,7 @@ for.body.i.i.i.i.i.i.i307.i.i.preheader259: ; preds = %middle.block120, %f for.body.i.i.i.i.i.i.i307.i.i: ; preds = %for.body.i.i.i.i.i.i.i307.i.i.preheader259, %for.body.i.i.i.i.i.i.i307.i.i %i.08.i.i.i.i.i.i.i308.i.i = phi i64 [ %inc.i.i.i.i.i.i.i314.i.i, %for.body.i.i.i.i.i.i.i307.i.i ], [ %i.08.i.i.i.i.i.i.i308.i.i.ph, %for.body.i.i.i.i.i.i.i307.i.i.preheader259 ] %length.07.i.i.i.i.i.i.i309.i.i = phi i64 [ %add.i.i.i.i.i.i.i313.i.i, %for.body.i.i.i.i.i.i.i307.i.i ], [ %length.07.i.i.i.i.i.i.i309.i.i.ph, %for.body.i.i.i.i.i.i.i307.i.i.preheader259 ] - %arrayidx.i.i.i.i.i.i.i310.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i304.i.i, i64 %i.08.i.i.i.i.i.i.i308.i.i + %arrayidx.i.i.i.i.i.i.i310.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i304.i.i, i64 %i.08.i.i.i.i.i.i.i308.i.i %214 = load i8, ptr %arrayidx.i.i.i.i.i.i.i310.i.i, align 1, !tbaa !35, !noalias !393 %cmp.i.i.i.i.i.i.i.i311.i.i = icmp sgt i8 %214, -65 %conv.i.i.i.i.i.i.i312.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i311.i.i to i64 @@ -15517,8 +15517,7 @@ for.body.i.i.i.i.i129.i.i.i.i.preheader: ; preds = %if.end.i.i.i123.i.i br i1 %min.iters.check139, label %for.body.i.i.i.i.i129.i.i.i.i.preheader260, label %vector.ph140 vector.ph140: ; preds = %for.body.i.i.i.i.i129.i.i.i.i.preheader - %n.mod.vf141 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec142 = sub nuw nsw i64 %conv.i.i.i.i.i.i127.i.i.i.i, %n.mod.vf141 + %n.vec142 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body145 vector.body145: ; preds = %vector.body145, %vector.ph140 @@ -15540,6 +15539,7 @@ vector.body145: ; preds = %vector.body145, %ve br i1 %227, label %middle.block137, label %vector.body145, !llvm.loop !400 middle.block137: ; preds = %vector.body145 + %n.mod.vf141 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx152 = add <2 x i64> %226, %225 %228 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx152) %cmp.n144 = icmp eq i64 %n.mod.vf141, 0 @@ -15553,7 +15553,7 @@ for.body.i.i.i.i.i129.i.i.i.i.preheader260: ; preds = %middle.block137, %f for.body.i.i.i.i.i129.i.i.i.i: ; preds = %for.body.i.i.i.i.i129.i.i.i.i.preheader260, %for.body.i.i.i.i.i129.i.i.i.i %i.08.i.i.i.i.i130.i.i.i.i = phi i64 [ %inc.i.i.i.i.i136.i.i.i.i, %for.body.i.i.i.i.i129.i.i.i.i ], [ %i.08.i.i.i.i.i130.i.i.i.i.ph, %for.body.i.i.i.i.i129.i.i.i.i.preheader260 ] %length.07.i.i.i.i.i131.i.i.i.i = phi i64 [ %add.i.i.i.i.i135.i.i.i.i, %for.body.i.i.i.i.i129.i.i.i.i ], [ %length.07.i.i.i.i.i131.i.i.i.i.ph, %for.body.i.i.i.i.i129.i.i.i.i.preheader260 ] - %arrayidx.i.i.i.i.i132.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i126.i.i.i.i, i64 %i.08.i.i.i.i.i130.i.i.i.i + %arrayidx.i.i.i.i.i132.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i126.i.i.i.i, i64 %i.08.i.i.i.i.i130.i.i.i.i %229 = load i8, ptr %arrayidx.i.i.i.i.i132.i.i.i.i, align 1, !tbaa !35, !noalias !393 %cmp.i.i.i.i.i.i133.i.i.i.i = icmp sgt i8 %229, -65 %conv.i.i.i.i.i134.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i133.i.i.i.i to i64 @@ -15618,8 +15618,7 @@ for.body.i.i.i.i.i153.i.i.i.i.preheader: ; preds = %if.end.i.i.i147.i.i br i1 %min.iters.check156, label %for.body.i.i.i.i.i153.i.i.i.i.preheader255, label %vector.ph157 vector.ph157: ; preds = %for.body.i.i.i.i.i153.i.i.i.i.preheader - %n.mod.vf158 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec159 = sub nuw nsw i64 %conv.i.i.i.i.i.i151.i.i.i.i, %n.mod.vf158 + %n.vec159 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body162 vector.body162: ; preds = %vector.body162, %vector.ph157 @@ -15641,6 +15640,7 @@ vector.body162: ; preds = %vector.body162, %ve br i1 %242, label %middle.block154, label %vector.body162, !llvm.loop !404 middle.block154: ; preds = %vector.body162 + %n.mod.vf158 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx169 = add <2 x i64> %241, %240 %243 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx169) %cmp.n161 = icmp eq i64 %n.mod.vf158, 0 @@ -15654,7 +15654,7 @@ for.body.i.i.i.i.i153.i.i.i.i.preheader255: ; preds = %middle.block154, %f for.body.i.i.i.i.i153.i.i.i.i: ; preds = %for.body.i.i.i.i.i153.i.i.i.i.preheader255, %for.body.i.i.i.i.i153.i.i.i.i %i.08.i.i.i.i.i154.i.i.i.i = phi i64 [ %inc.i.i.i.i.i160.i.i.i.i, %for.body.i.i.i.i.i153.i.i.i.i ], [ %i.08.i.i.i.i.i154.i.i.i.i.ph, %for.body.i.i.i.i.i153.i.i.i.i.preheader255 ] %length.07.i.i.i.i.i155.i.i.i.i = phi i64 [ %add.i.i.i.i.i159.i.i.i.i, %for.body.i.i.i.i.i153.i.i.i.i ], [ %length.07.i.i.i.i.i155.i.i.i.i.ph, %for.body.i.i.i.i.i153.i.i.i.i.preheader255 ] - %arrayidx.i.i.i.i.i156.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i150.i.i.i.i, i64 %i.08.i.i.i.i.i154.i.i.i.i + %arrayidx.i.i.i.i.i156.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i150.i.i.i.i, i64 %i.08.i.i.i.i.i154.i.i.i.i %244 = load i8, ptr %arrayidx.i.i.i.i.i156.i.i.i.i, align 1, !tbaa !35, !noalias !393 %cmp.i.i.i.i.i.i157.i.i.i.i = icmp sgt i8 %244, -65 %conv.i.i.i.i.i158.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i157.i.i.i.i to i64 @@ -15794,8 +15794,7 @@ for.body.i.i.i.i.i105.us.i.i.i.i.preheader: ; preds = %if.end.i.i.i99.us.i br i1 %min.iters.check105, label %for.body.i.i.i.i.i105.us.i.i.i.i.preheader267, label %vector.ph106 vector.ph106: ; preds = %for.body.i.i.i.i.i105.us.i.i.i.i.preheader - %n.mod.vf107 = and i64 %lentry20.sroa.0.0.copyload.us.i.i.i.i, 3 - %n.vec108 = sub nuw nsw i64 %conv.i.i.i.i.i.i103.us.i.i.i.i, %n.mod.vf107 + %n.vec108 = and i64 %lentry20.sroa.0.0.copyload.us.i.i.i.i, 4294967292 br label %vector.body111 vector.body111: ; preds = %vector.body111, %vector.ph106 @@ -15817,6 +15816,7 @@ vector.body111: ; preds = %vector.body111, %ve br i1 %271, label %middle.block103, label %vector.body111, !llvm.loop !423 middle.block103: ; preds = %vector.body111 + %n.mod.vf107 = and i64 %lentry20.sroa.0.0.copyload.us.i.i.i.i, 3 %bin.rdx118 = add <2 x i64> %270, %269 %272 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx118) %cmp.n110 = icmp eq i64 %n.mod.vf107, 0 @@ -15830,7 +15830,7 @@ for.body.i.i.i.i.i105.us.i.i.i.i.preheader267: ; preds = %middle.block103, %f for.body.i.i.i.i.i105.us.i.i.i.i: ; preds = %for.body.i.i.i.i.i105.us.i.i.i.i.preheader267, %for.body.i.i.i.i.i105.us.i.i.i.i %i.08.i.i.i.i.i106.us.i.i.i.i = phi i64 [ %inc.i.i.i.i.i112.us.i.i.i.i, %for.body.i.i.i.i.i105.us.i.i.i.i ], [ %i.08.i.i.i.i.i106.us.i.i.i.i.ph, %for.body.i.i.i.i.i105.us.i.i.i.i.preheader267 ] %length.07.i.i.i.i.i107.us.i.i.i.i = phi i64 [ %add.i.i.i.i.i111.us.i.i.i.i, %for.body.i.i.i.i.i105.us.i.i.i.i ], [ %length.07.i.i.i.i.i107.us.i.i.i.i.ph, %for.body.i.i.i.i.i105.us.i.i.i.i.preheader267 ] - %arrayidx.i.i.i.i.i108.us.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i102.us.i.i.i.i, i64 %i.08.i.i.i.i.i106.us.i.i.i.i + %arrayidx.i.i.i.i.i108.us.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i102.us.i.i.i.i, i64 %i.08.i.i.i.i.i106.us.i.i.i.i %273 = load i8, ptr %arrayidx.i.i.i.i.i108.us.i.i.i.i, align 1, !tbaa !35, !noalias !418 %cmp.i.i.i.i.i.i109.us.i.i.i.i = icmp sgt i8 %273, -65 %conv.i.i.i.i.i110.us.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i109.us.i.i.i.i to i64 @@ -15895,8 +15895,7 @@ for.body.i.i.i.i.i105.us143.i.i.i.i.preheader: ; preds = %if.end.i.i.i99.us13 br i1 %min.iters.check88, label %for.body.i.i.i.i.i105.us143.i.i.i.i.preheader270, label %vector.ph89 vector.ph89: ; preds = %for.body.i.i.i.i.i105.us143.i.i.i.i.preheader - %n.mod.vf90 = and i64 %lentry20.sroa.0.0.copyload.us131.i.i.i.i, 3 - %n.vec91 = sub nuw nsw i64 %conv.i.i.i.i.i.i103.us141.i.i.i.i, %n.mod.vf90 + %n.vec91 = and i64 %lentry20.sroa.0.0.copyload.us131.i.i.i.i, 4294967292 br label %vector.body94 vector.body94: ; preds = %vector.body94, %vector.ph89 @@ -15918,6 +15917,7 @@ vector.body94: ; preds = %vector.body94, %vec br i1 %287, label %middle.block86, label %vector.body94, !llvm.loop !427 middle.block86: ; preds = %vector.body94 + %n.mod.vf90 = and i64 %lentry20.sroa.0.0.copyload.us131.i.i.i.i, 3 %bin.rdx101 = add <2 x i64> %286, %285 %288 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx101) %cmp.n93 = icmp eq i64 %n.mod.vf90, 0 @@ -15931,7 +15931,7 @@ for.body.i.i.i.i.i105.us143.i.i.i.i.preheader270: ; preds = %middle.block86, %fo for.body.i.i.i.i.i105.us143.i.i.i.i: ; preds = %for.body.i.i.i.i.i105.us143.i.i.i.i.preheader270, %for.body.i.i.i.i.i105.us143.i.i.i.i %i.08.i.i.i.i.i106.us144.i.i.i.i = phi i64 [ %inc.i.i.i.i.i112.us150.i.i.i.i, %for.body.i.i.i.i.i105.us143.i.i.i.i ], [ %i.08.i.i.i.i.i106.us144.i.i.i.i.ph, %for.body.i.i.i.i.i105.us143.i.i.i.i.preheader270 ] %length.07.i.i.i.i.i107.us145.i.i.i.i = phi i64 [ %add.i.i.i.i.i111.us149.i.i.i.i, %for.body.i.i.i.i.i105.us143.i.i.i.i ], [ %length.07.i.i.i.i.i107.us145.i.i.i.i.ph, %for.body.i.i.i.i.i105.us143.i.i.i.i.preheader270 ] - %arrayidx.i.i.i.i.i108.us146.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i102.us140.i.i.i.i, i64 %i.08.i.i.i.i.i106.us144.i.i.i.i + %arrayidx.i.i.i.i.i108.us146.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i102.us140.i.i.i.i, i64 %i.08.i.i.i.i.i106.us144.i.i.i.i %289 = load i8, ptr %arrayidx.i.i.i.i.i108.us146.i.i.i.i, align 1, !tbaa !35, !noalias !418 %cmp.i.i.i.i.i.i109.us147.i.i.i.i = icmp sgt i8 %289, -65 %conv.i.i.i.i.i110.us148.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i109.us147.i.i.i.i to i64 @@ -16040,8 +16040,7 @@ for.body.i.i.i.i.i.i.i363.i.i.preheader: ; preds = %if.end.i.i.i.i.i358 br i1 %min.iters.check, label %for.body.i.i.i.i.i.i.i363.i.i.preheader278, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.i.i.i.i363.i.i.preheader - %n.mod.vf = and i64 %lentry.sroa.0.0.copyload.i.i354.i.i, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i361.i.i, %n.mod.vf + %n.vec = and i64 %lentry.sroa.0.0.copyload.i.i354.i.i, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -16063,6 +16062,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %308, label %middle.block, label %vector.body, !llvm.loop !429 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %lentry.sroa.0.0.copyload.i.i354.i.i, 3 %bin.rdx = add <2 x i64> %307, %306 %309 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -16076,7 +16076,7 @@ for.body.i.i.i.i.i.i.i363.i.i.preheader278: ; preds = %middle.block, %for. for.body.i.i.i.i.i.i.i363.i.i: ; preds = %for.body.i.i.i.i.i.i.i363.i.i.preheader278, %for.body.i.i.i.i.i.i.i363.i.i %i.08.i.i.i.i.i.i.i364.i.i = phi i64 [ %inc.i.i.i.i.i.i.i370.i.i, %for.body.i.i.i.i.i.i.i363.i.i ], [ %i.08.i.i.i.i.i.i.i364.i.i.ph, %for.body.i.i.i.i.i.i.i363.i.i.preheader278 ] %length.07.i.i.i.i.i.i.i365.i.i = phi i64 [ %add.i.i.i.i.i.i.i369.i.i, %for.body.i.i.i.i.i.i.i363.i.i ], [ %length.07.i.i.i.i.i.i.i365.i.i.ph, %for.body.i.i.i.i.i.i.i363.i.i.preheader278 ] - %arrayidx.i.i.i.i.i.i.i366.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i360.i.i, i64 %i.08.i.i.i.i.i.i.i364.i.i + %arrayidx.i.i.i.i.i.i.i366.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i360.i.i, i64 %i.08.i.i.i.i.i.i.i364.i.i %310 = load i8, ptr %arrayidx.i.i.i.i.i.i.i366.i.i, align 1, !tbaa !35, !noalias !418 %cmp.i.i.i.i.i.i.i.i367.i.i = icmp sgt i8 %310, -65 %conv.i.i.i.i.i.i.i368.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i367.i.i to i64 @@ -16170,8 +16170,7 @@ for.body.i.i.i.i.i105.i.i.i.i.preheader: ; preds = %if.end.i.i.i99.i.i. br i1 %min.iters.check71, label %for.body.i.i.i.i.i105.i.i.i.i.preheader274, label %vector.ph72 vector.ph72: ; preds = %for.body.i.i.i.i.i105.i.i.i.i.preheader - %n.mod.vf73 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec74 = sub nuw nsw i64 %conv.i.i.i.i.i.i103.i.i.i.i, %n.mod.vf73 + %n.vec74 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body77 vector.body77: ; preds = %vector.body77, %vector.ph72 @@ -16193,6 +16192,7 @@ vector.body77: ; preds = %vector.body77, %vec br i1 %329, label %middle.block69, label %vector.body77, !llvm.loop !432 middle.block69: ; preds = %vector.body77 + %n.mod.vf73 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx84 = add <2 x i64> %328, %327 %330 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx84) %cmp.n76 = icmp eq i64 %n.mod.vf73, 0 @@ -16206,7 +16206,7 @@ for.body.i.i.i.i.i105.i.i.i.i.preheader274: ; preds = %middle.block69, %fo for.body.i.i.i.i.i105.i.i.i.i: ; preds = %for.body.i.i.i.i.i105.i.i.i.i.preheader274, %for.body.i.i.i.i.i105.i.i.i.i %i.08.i.i.i.i.i106.i.i.i.i = phi i64 [ %inc.i.i.i.i.i112.i.i.i.i, %for.body.i.i.i.i.i105.i.i.i.i ], [ %i.08.i.i.i.i.i106.i.i.i.i.ph, %for.body.i.i.i.i.i105.i.i.i.i.preheader274 ] %length.07.i.i.i.i.i107.i.i.i.i = phi i64 [ %add.i.i.i.i.i111.i.i.i.i, %for.body.i.i.i.i.i105.i.i.i.i ], [ %length.07.i.i.i.i.i107.i.i.i.i.ph, %for.body.i.i.i.i.i105.i.i.i.i.preheader274 ] - %arrayidx.i.i.i.i.i108.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i102.i.i.i.i, i64 %i.08.i.i.i.i.i106.i.i.i.i + %arrayidx.i.i.i.i.i108.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i102.i.i.i.i, i64 %i.08.i.i.i.i.i106.i.i.i.i %331 = load i8, ptr %arrayidx.i.i.i.i.i108.i.i.i.i, align 1, !tbaa !35, !noalias !418 %cmp.i.i.i.i.i.i109.i.i.i.i = icmp sgt i8 %331, -65 %conv.i.i.i.i.i110.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i109.i.i.i.i to i64 @@ -18905,8 +18905,7 @@ for.body.i.i.i.i.i.i.i.i.preheader: ; preds = %if.end.i.i.i br i1 %min.iters.check263, label %for.body.i.i.i.i.i.i.i.i.preheader208, label %vector.ph264 vector.ph264: ; preds = %for.body.i.i.i.i.i.i.i.i.preheader - %n.mod.vf265 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 3 - %n.vec266 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i, %n.mod.vf265 + %n.vec266 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 4294967292 br label %vector.body269 vector.body269: ; preds = %vector.body269, %vector.ph264 @@ -18928,6 +18927,7 @@ vector.body269: ; preds = %vector.body269, %ve br i1 %21, label %middle.block261, label %vector.body269, !llvm.loop !499 middle.block261: ; preds = %vector.body269 + %n.mod.vf265 = and i64 %agg.tmp5.sroa.0.0.copyload.i.i.i, 3 %bin.rdx276 = add <2 x i64> %20, %19 %22 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx276) %cmp.n268 = icmp eq i64 %n.mod.vf265, 0 @@ -18941,7 +18941,7 @@ for.body.i.i.i.i.i.i.i.i.preheader208: ; preds = %middle.block261, %f for.body.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.preheader208, %for.body.i.i.i.i.i.i.i.i %i.08.i.i.i.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %i.08.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader208 ] %length.07.i.i.i.i.i.i.i.i = phi i64 [ %add.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i ], [ %length.07.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.preheader208 ] - %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i + %arrayidx.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i %23 = load i8, ptr %arrayidx.i.i.i.i.i.i.i.i, align 1, !tbaa !35 %cmp.i.i.i.i.i.i.i.i.i = icmp sgt i8 %23, -65 %conv.i.i.i.i.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i.i to i64 @@ -19147,8 +19147,7 @@ for.body.i.i.i.i.i147.us.i.i.i.i.preheader: ; preds = %for.body52.us.i.i.i br i1 %min.iters.check246, label %for.body.i.i.i.i.i147.us.i.i.i.i.preheader210, label %vector.ph247 vector.ph247: ; preds = %for.body.i.i.i.i.i147.us.i.i.i.i.preheader - %n.mod.vf248 = and i64 %lentry53.sroa.0.0.copyload.us.i.i.i.i, 3 - %n.vec249 = sub nuw nsw i64 %conv.i.i.i.i.i.i145.us.i.i.i.i, %n.mod.vf248 + %n.vec249 = and i64 %lentry53.sroa.0.0.copyload.us.i.i.i.i, 4294967292 br label %vector.body252 vector.body252: ; preds = %vector.body252, %vector.ph247 @@ -19170,6 +19169,7 @@ vector.body252: ; preds = %vector.body252, %ve br i1 %58, label %middle.block244, label %vector.body252, !llvm.loop !511 middle.block244: ; preds = %vector.body252 + %n.mod.vf248 = and i64 %lentry53.sroa.0.0.copyload.us.i.i.i.i, 3 %bin.rdx259 = add <2 x i64> %57, %56 %59 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx259) %cmp.n251 = icmp eq i64 %n.mod.vf248, 0 @@ -19183,7 +19183,7 @@ for.body.i.i.i.i.i147.us.i.i.i.i.preheader210: ; preds = %middle.block244, %f for.body.i.i.i.i.i147.us.i.i.i.i: ; preds = %for.body.i.i.i.i.i147.us.i.i.i.i.preheader210, %for.body.i.i.i.i.i147.us.i.i.i.i %i.08.i.i.i.i.i148.us.i.i.i.i = phi i64 [ %inc.i.i.i.i.i154.us.i.i.i.i, %for.body.i.i.i.i.i147.us.i.i.i.i ], [ %i.08.i.i.i.i.i148.us.i.i.i.i.ph, %for.body.i.i.i.i.i147.us.i.i.i.i.preheader210 ] %length.07.i.i.i.i.i149.us.i.i.i.i = phi i64 [ %add.i.i.i.i.i153.us.i.i.i.i, %for.body.i.i.i.i.i147.us.i.i.i.i ], [ %length.07.i.i.i.i.i149.us.i.i.i.i.ph, %for.body.i.i.i.i.i147.us.i.i.i.i.preheader210 ] - %arrayidx.i.i.i.i.i150.us.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i144.us.i.i.i.i, i64 %i.08.i.i.i.i.i148.us.i.i.i.i + %arrayidx.i.i.i.i.i150.us.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i144.us.i.i.i.i, i64 %i.08.i.i.i.i.i148.us.i.i.i.i %60 = load i8, ptr %arrayidx.i.i.i.i.i150.us.i.i.i.i, align 1, !tbaa !35, !noalias !501 %cmp.i.i.i.i.i.i151.us.i.i.i.i = icmp sgt i8 %60, -65 %conv.i.i.i.i.i152.us.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i151.us.i.i.i.i to i64 @@ -19234,8 +19234,7 @@ for.body.i.i.i.i.i147.us196.i.i.i.i.preheader: ; preds = %for.body52.us186.i. br i1 %min.iters.check229, label %for.body.i.i.i.i.i147.us196.i.i.i.i.preheader213, label %vector.ph230 vector.ph230: ; preds = %for.body.i.i.i.i.i147.us196.i.i.i.i.preheader - %n.mod.vf231 = and i64 %lentry53.sroa.0.0.copyload.us189.i.i.i.i, 3 - %n.vec232 = sub nuw nsw i64 %conv.i.i.i.i.i.i145.us194.i.i.i.i, %n.mod.vf231 + %n.vec232 = and i64 %lentry53.sroa.0.0.copyload.us189.i.i.i.i, 4294967292 br label %vector.body235 vector.body235: ; preds = %vector.body235, %vector.ph230 @@ -19257,6 +19256,7 @@ vector.body235: ; preds = %vector.body235, %ve br i1 %72, label %middle.block227, label %vector.body235, !llvm.loop !515 middle.block227: ; preds = %vector.body235 + %n.mod.vf231 = and i64 %lentry53.sroa.0.0.copyload.us189.i.i.i.i, 3 %bin.rdx242 = add <2 x i64> %71, %70 %73 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx242) %cmp.n234 = icmp eq i64 %n.mod.vf231, 0 @@ -19270,7 +19270,7 @@ for.body.i.i.i.i.i147.us196.i.i.i.i.preheader213: ; preds = %middle.block227, %f for.body.i.i.i.i.i147.us196.i.i.i.i: ; preds = %for.body.i.i.i.i.i147.us196.i.i.i.i.preheader213, %for.body.i.i.i.i.i147.us196.i.i.i.i %i.08.i.i.i.i.i148.us197.i.i.i.i = phi i64 [ %inc.i.i.i.i.i154.us203.i.i.i.i, %for.body.i.i.i.i.i147.us196.i.i.i.i ], [ %i.08.i.i.i.i.i148.us197.i.i.i.i.ph, %for.body.i.i.i.i.i147.us196.i.i.i.i.preheader213 ] %length.07.i.i.i.i.i149.us198.i.i.i.i = phi i64 [ %add.i.i.i.i.i153.us202.i.i.i.i, %for.body.i.i.i.i.i147.us196.i.i.i.i ], [ %length.07.i.i.i.i.i149.us198.i.i.i.i.ph, %for.body.i.i.i.i.i147.us196.i.i.i.i.preheader213 ] - %arrayidx.i.i.i.i.i150.us199.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i144.us193.i.i.i.i, i64 %i.08.i.i.i.i.i148.us197.i.i.i.i + %arrayidx.i.i.i.i.i150.us199.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i144.us193.i.i.i.i, i64 %i.08.i.i.i.i.i148.us197.i.i.i.i %74 = load i8, ptr %arrayidx.i.i.i.i.i150.us199.i.i.i.i, align 1, !tbaa !35, !noalias !501 %cmp.i.i.i.i.i.i151.us200.i.i.i.i = icmp sgt i8 %74, -65 %conv.i.i.i.i.i152.us201.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i151.us200.i.i.i.i to i64 @@ -19366,8 +19366,7 @@ for.body.i.i.i.i.i.i.i.i.i.preheader: ; preds = %for.body9.i.i.i.i br i1 %min.iters.check178, label %for.body.i.i.i.i.i.i.i.i.i.preheader221, label %vector.ph179 vector.ph179: ; preds = %for.body.i.i.i.i.i.i.i.i.i.preheader - %n.mod.vf180 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec181 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i.i.i, %n.mod.vf180 + %n.vec181 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body184 vector.body184: ; preds = %vector.body184, %vector.ph179 @@ -19389,6 +19388,7 @@ vector.body184: ; preds = %vector.body184, %ve br i1 %91, label %middle.block176, label %vector.body184, !llvm.loop !517 middle.block176: ; preds = %vector.body184 + %n.mod.vf180 = and i64 %lentry.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx191 = add <2 x i64> %90, %89 %92 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx191) %cmp.n183 = icmp eq i64 %n.mod.vf180, 0 @@ -19402,7 +19402,7 @@ for.body.i.i.i.i.i.i.i.i.i.preheader221: ; preds = %middle.block176, %f for.body.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.i.i.i.i.preheader221, %for.body.i.i.i.i.i.i.i.i.i %i.08.i.i.i.i.i.i.i.i.i = phi i64 [ %inc.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i ], [ %i.08.i.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.i.preheader221 ] %length.07.i.i.i.i.i.i.i.i.i = phi i64 [ %add.i.i.i.i.i.i.i.i.i, %for.body.i.i.i.i.i.i.i.i.i ], [ %length.07.i.i.i.i.i.i.i.i.i.ph, %for.body.i.i.i.i.i.i.i.i.i.preheader221 ] - %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i.i + %arrayidx.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i.i.i, i64 %i.08.i.i.i.i.i.i.i.i.i %93 = load i8, ptr %arrayidx.i.i.i.i.i.i.i.i.i, align 1, !tbaa !35, !noalias !501 %cmp.i.i.i.i.i.i.i.i64.i.i = icmp sgt i8 %93, -65 %conv.i.i.i.i.i.i.i65.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i64.i.i to i64 @@ -19472,8 +19472,7 @@ for.body.i.i.i.i.i116.i.i.i.i.preheader: ; preds = %if.then25.i.i.i.i br i1 %min.iters.check195, label %for.body.i.i.i.i.i116.i.i.i.i.preheader222, label %vector.ph196 vector.ph196: ; preds = %for.body.i.i.i.i.i116.i.i.i.i.preheader - %n.mod.vf197 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec198 = sub nuw nsw i64 %conv.i.i.i.i.i.i114.i.i.i.i, %n.mod.vf197 + %n.vec198 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body201 vector.body201: ; preds = %vector.body201, %vector.ph196 @@ -19495,6 +19494,7 @@ vector.body201: ; preds = %vector.body201, %ve br i1 %106, label %middle.block193, label %vector.body201, !llvm.loop !520 middle.block193: ; preds = %vector.body201 + %n.mod.vf197 = and i64 %lentry26.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx208 = add <2 x i64> %105, %104 %107 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx208) %cmp.n200 = icmp eq i64 %n.mod.vf197, 0 @@ -19508,7 +19508,7 @@ for.body.i.i.i.i.i116.i.i.i.i.preheader222: ; preds = %middle.block193, %f for.body.i.i.i.i.i116.i.i.i.i: ; preds = %for.body.i.i.i.i.i116.i.i.i.i.preheader222, %for.body.i.i.i.i.i116.i.i.i.i %i.08.i.i.i.i.i117.i.i.i.i = phi i64 [ %inc.i.i.i.i.i123.i.i.i.i, %for.body.i.i.i.i.i116.i.i.i.i ], [ %i.08.i.i.i.i.i117.i.i.i.i.ph, %for.body.i.i.i.i.i116.i.i.i.i.preheader222 ] %length.07.i.i.i.i.i118.i.i.i.i = phi i64 [ %add.i.i.i.i.i122.i.i.i.i, %for.body.i.i.i.i.i116.i.i.i.i ], [ %length.07.i.i.i.i.i118.i.i.i.i.ph, %for.body.i.i.i.i.i116.i.i.i.i.preheader222 ] - %arrayidx.i.i.i.i.i119.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i113.i.i.i.i, i64 %i.08.i.i.i.i.i117.i.i.i.i + %arrayidx.i.i.i.i.i119.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i113.i.i.i.i, i64 %i.08.i.i.i.i.i117.i.i.i.i %108 = load i8, ptr %arrayidx.i.i.i.i.i119.i.i.i.i, align 1, !tbaa !35, !noalias !501 %cmp.i.i.i.i.i.i120.i.i.i.i = icmp sgt i8 %108, -65 %conv.i.i.i.i.i121.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i120.i.i.i.i to i64 @@ -19582,8 +19582,7 @@ for.body.i.i.i.i.i147.i.i.i.i.preheader: ; preds = %for.body52.i.i.i.i br i1 %min.iters.check212, label %for.body.i.i.i.i.i147.i.i.i.i.preheader217, label %vector.ph213 vector.ph213: ; preds = %for.body.i.i.i.i.i147.i.i.i.i.preheader - %n.mod.vf214 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec215 = sub nuw nsw i64 %conv.i.i.i.i.i.i145.i.i.i.i, %n.mod.vf214 + %n.vec215 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body218 vector.body218: ; preds = %vector.body218, %vector.ph213 @@ -19605,6 +19604,7 @@ vector.body218: ; preds = %vector.body218, %ve br i1 %120, label %middle.block210, label %vector.body218, !llvm.loop !524 middle.block210: ; preds = %vector.body218 + %n.mod.vf214 = and i64 %lentry53.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx225 = add <2 x i64> %119, %118 %121 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx225) %cmp.n217 = icmp eq i64 %n.mod.vf214, 0 @@ -19618,7 +19618,7 @@ for.body.i.i.i.i.i147.i.i.i.i.preheader217: ; preds = %middle.block210, %f for.body.i.i.i.i.i147.i.i.i.i: ; preds = %for.body.i.i.i.i.i147.i.i.i.i.preheader217, %for.body.i.i.i.i.i147.i.i.i.i %i.08.i.i.i.i.i148.i.i.i.i = phi i64 [ %inc.i.i.i.i.i154.i.i.i.i, %for.body.i.i.i.i.i147.i.i.i.i ], [ %i.08.i.i.i.i.i148.i.i.i.i.ph, %for.body.i.i.i.i.i147.i.i.i.i.preheader217 ] %length.07.i.i.i.i.i149.i.i.i.i = phi i64 [ %add.i.i.i.i.i153.i.i.i.i, %for.body.i.i.i.i.i147.i.i.i.i ], [ %length.07.i.i.i.i.i149.i.i.i.i.ph, %for.body.i.i.i.i.i147.i.i.i.i.preheader217 ] - %arrayidx.i.i.i.i.i150.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i144.i.i.i.i, i64 %i.08.i.i.i.i.i148.i.i.i.i + %arrayidx.i.i.i.i.i150.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i144.i.i.i.i, i64 %i.08.i.i.i.i.i148.i.i.i.i %122 = load i8, ptr %arrayidx.i.i.i.i.i150.i.i.i.i, align 1, !tbaa !35, !noalias !501 %cmp.i.i.i.i.i.i151.i.i.i.i = icmp sgt i8 %122, -65 %conv.i.i.i.i.i152.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i151.i.i.i.i to i64 @@ -19797,7 +19797,7 @@ for.body52.lr.ph.i.i214.i.i: ; preds = %for.cond49.preheade for.body52.i.i223.i.i.preheader: ; preds = %for.body52.lr.ph.i.i214.i.i %min.iters.check161 = icmp samesign ult i64 %conv.i.i.i.i.i.i145.i.i221.i.i, 4 %n.mod.vf163 = and i64 %lentry53.sroa.0.0.copyload.i.i215.i.i, 3 - %n.vec164 = sub nsw i64 %conv.i.i.i.i.i.i145.i.i221.i.i, %n.mod.vf163 + %n.vec164 = and i64 %lentry53.sroa.0.0.copyload.i.i215.i.i, 4294967292 %cmp.n166 = icmp eq i64 %n.mod.vf163, 0 br label %for.body52.i.i223.i.i @@ -19865,7 +19865,7 @@ for.body9.lr.ph.i.i129.i.i: ; preds = %for.cond7.preheader %cmp6.not.i.i.i.i.i.i.i135.i.i = icmp eq i32 %154, 0 %min.iters.check127 = icmp samesign ult i64 %conv.i.i.i.i.i.i.i.i134.i.i, 4 %n.mod.vf129 = and i64 %lentry.sroa.0.0.copyload.i.i130.i.i, 3 - %n.vec130 = sub nsw i64 %conv.i.i.i.i.i.i.i.i134.i.i, %n.mod.vf129 + %n.vec130 = and i64 %lentry.sroa.0.0.copyload.i.i130.i.i, 4294967292 %cmp.n132 = icmp eq i64 %n.mod.vf129, 0 br label %for.body9.i.i136.i.i @@ -19916,7 +19916,7 @@ for.body.i.i.i.i.i.i.i138.i.i.preheader234: ; preds = %middle.block125, %f for.body.i.i.i.i.i.i.i138.i.i: ; preds = %for.body.i.i.i.i.i.i.i138.i.i.preheader234, %for.body.i.i.i.i.i.i.i138.i.i %i.08.i.i.i.i.i.i.i139.i.i = phi i64 [ %inc.i.i.i.i.i.i.i145.i.i, %for.body.i.i.i.i.i.i.i138.i.i ], [ %i.08.i.i.i.i.i.i.i139.i.i.ph, %for.body.i.i.i.i.i.i.i138.i.i.preheader234 ] %length.07.i.i.i.i.i.i.i140.i.i = phi i64 [ %add.i.i.i.i.i.i.i144.i.i, %for.body.i.i.i.i.i.i.i138.i.i ], [ %length.07.i.i.i.i.i.i.i140.i.i.ph, %for.body.i.i.i.i.i.i.i138.i.i.preheader234 ] - %arrayidx.i.i.i.i.i.i.i141.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i133.i.i, i64 %i.08.i.i.i.i.i.i.i139.i.i + %arrayidx.i.i.i.i.i.i.i141.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i133.i.i, i64 %i.08.i.i.i.i.i.i.i139.i.i %166 = load i8, ptr %arrayidx.i.i.i.i.i.i.i141.i.i, align 1, !tbaa !35, !noalias !526 %cmp.i.i.i.i.i.i.i.i142.i.i = icmp sgt i8 %166, -65 %conv.i.i.i.i.i.i.i143.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i142.i.i to i64 @@ -19988,8 +19988,7 @@ for.body.i.i.i.i.i116.i.i182.i.i.preheader: ; preds = %if.then25.i.i175.i. br i1 %min.iters.check144, label %for.body.i.i.i.i.i116.i.i182.i.i.preheader235, label %vector.ph145 vector.ph145: ; preds = %for.body.i.i.i.i.i116.i.i182.i.i.preheader - %n.mod.vf146 = and i64 %lentry26.sroa.0.0.copyload.i.i176.i.i, 3 - %n.vec147 = sub nuw nsw i64 %conv.i.i.i.i.i.i114.i.i180.i.i, %n.mod.vf146 + %n.vec147 = and i64 %lentry26.sroa.0.0.copyload.i.i176.i.i, 4294967292 br label %vector.body150 vector.body150: ; preds = %vector.body150, %vector.ph145 @@ -20011,6 +20010,7 @@ vector.body150: ; preds = %vector.body150, %ve br i1 %179, label %middle.block142, label %vector.body150, !llvm.loop !541 middle.block142: ; preds = %vector.body150 + %n.mod.vf146 = and i64 %lentry26.sroa.0.0.copyload.i.i176.i.i, 3 %bin.rdx157 = add <2 x i64> %178, %177 %180 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx157) %cmp.n149 = icmp eq i64 %n.mod.vf146, 0 @@ -20024,7 +20024,7 @@ for.body.i.i.i.i.i116.i.i182.i.i.preheader235: ; preds = %middle.block142, %f for.body.i.i.i.i.i116.i.i182.i.i: ; preds = %for.body.i.i.i.i.i116.i.i182.i.i.preheader235, %for.body.i.i.i.i.i116.i.i182.i.i %i.08.i.i.i.i.i117.i.i183.i.i = phi i64 [ %inc.i.i.i.i.i123.i.i189.i.i, %for.body.i.i.i.i.i116.i.i182.i.i ], [ %i.08.i.i.i.i.i117.i.i183.i.i.ph, %for.body.i.i.i.i.i116.i.i182.i.i.preheader235 ] %length.07.i.i.i.i.i118.i.i184.i.i = phi i64 [ %add.i.i.i.i.i122.i.i188.i.i, %for.body.i.i.i.i.i116.i.i182.i.i ], [ %length.07.i.i.i.i.i118.i.i184.i.i.ph, %for.body.i.i.i.i.i116.i.i182.i.i.preheader235 ] - %arrayidx.i.i.i.i.i119.i.i185.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i113.i.i179.i.i, i64 %i.08.i.i.i.i.i117.i.i183.i.i + %arrayidx.i.i.i.i.i119.i.i185.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i113.i.i179.i.i, i64 %i.08.i.i.i.i.i117.i.i183.i.i %181 = load i8, ptr %arrayidx.i.i.i.i.i119.i.i185.i.i, align 1, !tbaa !35, !noalias !526 %cmp.i.i.i.i.i.i120.i.i186.i.i = icmp sgt i8 %181, -65 %conv.i.i.i.i.i121.i.i187.i.i = zext i1 %cmp.i.i.i.i.i.i120.i.i186.i.i to i64 @@ -20117,7 +20117,7 @@ for.body.i.i.i.i.i147.i.i225.i.i.preheader: ; preds = %middle.block159, %f for.body.i.i.i.i.i147.i.i225.i.i: ; preds = %for.body.i.i.i.i.i147.i.i225.i.i.preheader, %for.body.i.i.i.i.i147.i.i225.i.i %i.08.i.i.i.i.i148.i.i226.i.i = phi i64 [ %inc.i.i.i.i.i154.i.i232.i.i, %for.body.i.i.i.i.i147.i.i225.i.i ], [ %i.08.i.i.i.i.i148.i.i226.i.i.ph, %for.body.i.i.i.i.i147.i.i225.i.i.preheader ] %length.07.i.i.i.i.i149.i.i227.i.i = phi i64 [ %add.i.i.i.i.i153.i.i231.i.i, %for.body.i.i.i.i.i147.i.i225.i.i ], [ %length.07.i.i.i.i.i149.i.i227.i.i.ph, %for.body.i.i.i.i.i147.i.i225.i.i.preheader ] - %arrayidx.i.i.i.i.i150.i.i228.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i144.i.i220.i.i, i64 %i.08.i.i.i.i.i148.i.i226.i.i + %arrayidx.i.i.i.i.i150.i.i228.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i144.i.i220.i.i, i64 %i.08.i.i.i.i.i148.i.i226.i.i %195 = load i8, ptr %arrayidx.i.i.i.i.i150.i.i228.i.i, align 1, !tbaa !35, !noalias !526 %cmp.i.i.i.i.i.i151.i.i229.i.i = icmp sgt i8 %195, -65 %conv.i.i.i.i.i152.i.i230.i.i = zext i1 %cmp.i.i.i.i.i.i151.i.i229.i.i to i64 @@ -20349,8 +20349,7 @@ for.body.i.i.i.i.i.i.i313.i.i.preheader: ; preds = %for.body11.i.i.i.i br i1 %min.iters.check76, label %for.body.i.i.i.i.i.i.i313.i.i.preheader246, label %vector.ph77 vector.ph77: ; preds = %for.body.i.i.i.i.i.i.i313.i.i.preheader - %n.mod.vf78 = and i64 %lentry.sroa.0.0.copyload.i.i306.i.i, 3 - %n.vec79 = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i311.i.i, %n.mod.vf78 + %n.vec79 = and i64 %lentry.sroa.0.0.copyload.i.i306.i.i, 4294967292 br label %vector.body82 vector.body82: ; preds = %vector.body82, %vector.ph77 @@ -20372,6 +20371,7 @@ vector.body82: ; preds = %vector.body82, %vec br i1 %232, label %middle.block74, label %vector.body82, !llvm.loop !557 middle.block74: ; preds = %vector.body82 + %n.mod.vf78 = and i64 %lentry.sroa.0.0.copyload.i.i306.i.i, 3 %bin.rdx89 = add <2 x i64> %231, %230 %233 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx89) %cmp.n81 = icmp eq i64 %n.mod.vf78, 0 @@ -20385,7 +20385,7 @@ for.body.i.i.i.i.i.i.i313.i.i.preheader246: ; preds = %middle.block74, %fo for.body.i.i.i.i.i.i.i313.i.i: ; preds = %for.body.i.i.i.i.i.i.i313.i.i.preheader246, %for.body.i.i.i.i.i.i.i313.i.i %i.08.i.i.i.i.i.i.i314.i.i = phi i64 [ %inc.i.i.i.i.i.i.i320.i.i, %for.body.i.i.i.i.i.i.i313.i.i ], [ %i.08.i.i.i.i.i.i.i314.i.i.ph, %for.body.i.i.i.i.i.i.i313.i.i.preheader246 ] %length.07.i.i.i.i.i.i.i315.i.i = phi i64 [ %add.i.i.i.i.i.i.i319.i.i, %for.body.i.i.i.i.i.i.i313.i.i ], [ %length.07.i.i.i.i.i.i.i315.i.i.ph, %for.body.i.i.i.i.i.i.i313.i.i.preheader246 ] - %arrayidx.i.i.i.i.i.i.i316.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i310.i.i, i64 %i.08.i.i.i.i.i.i.i314.i.i + %arrayidx.i.i.i.i.i.i.i316.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i310.i.i, i64 %i.08.i.i.i.i.i.i.i314.i.i %234 = load i8, ptr %arrayidx.i.i.i.i.i.i.i316.i.i, align 1, !tbaa !35, !noalias !554 %cmp.i.i.i.i.i.i.i.i317.i.i = icmp sgt i8 %234, -65 %conv.i.i.i.i.i.i.i318.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i317.i.i to i64 @@ -20459,8 +20459,7 @@ for.body.i.i.i.i.i127.i.i.i.i.preheader: ; preds = %if.then27.i.i.i.i br i1 %min.iters.check93, label %for.body.i.i.i.i.i127.i.i.i.i.preheader247, label %vector.ph94 vector.ph94: ; preds = %for.body.i.i.i.i.i127.i.i.i.i.preheader - %n.mod.vf95 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec96 = sub nuw nsw i64 %conv.i.i.i.i.i.i125.i.i.i.i, %n.mod.vf95 + %n.vec96 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body99 vector.body99: ; preds = %vector.body99, %vector.ph94 @@ -20482,6 +20481,7 @@ vector.body99: ; preds = %vector.body99, %vec br i1 %247, label %middle.block91, label %vector.body99, !llvm.loop !561 middle.block91: ; preds = %vector.body99 + %n.mod.vf95 = and i64 %lentry28.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx106 = add <2 x i64> %246, %245 %248 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx106) %cmp.n98 = icmp eq i64 %n.mod.vf95, 0 @@ -20495,7 +20495,7 @@ for.body.i.i.i.i.i127.i.i.i.i.preheader247: ; preds = %middle.block91, %fo for.body.i.i.i.i.i127.i.i.i.i: ; preds = %for.body.i.i.i.i.i127.i.i.i.i.preheader247, %for.body.i.i.i.i.i127.i.i.i.i %i.08.i.i.i.i.i128.i.i.i.i = phi i64 [ %inc.i.i.i.i.i134.i.i.i.i, %for.body.i.i.i.i.i127.i.i.i.i ], [ %i.08.i.i.i.i.i128.i.i.i.i.ph, %for.body.i.i.i.i.i127.i.i.i.i.preheader247 ] %length.07.i.i.i.i.i129.i.i.i.i = phi i64 [ %add.i.i.i.i.i133.i.i.i.i, %for.body.i.i.i.i.i127.i.i.i.i ], [ %length.07.i.i.i.i.i129.i.i.i.i.ph, %for.body.i.i.i.i.i127.i.i.i.i.preheader247 ] - %arrayidx.i.i.i.i.i130.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i124.i.i.i.i, i64 %i.08.i.i.i.i.i128.i.i.i.i + %arrayidx.i.i.i.i.i130.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i124.i.i.i.i, i64 %i.08.i.i.i.i.i128.i.i.i.i %249 = load i8, ptr %arrayidx.i.i.i.i.i130.i.i.i.i, align 1, !tbaa !35, !noalias !554 %cmp.i.i.i.i.i.i131.i.i.i.i = icmp sgt i8 %249, -65 %conv.i.i.i.i.i132.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i131.i.i.i.i to i64 @@ -20571,8 +20571,7 @@ for.body.i.i.i.i.i158.i.i.i.i.preheader: ; preds = %for.body54.i.i.i.i br i1 %min.iters.check110, label %for.body.i.i.i.i.i158.i.i.i.i.preheader242, label %vector.ph111 vector.ph111: ; preds = %for.body.i.i.i.i.i158.i.i.i.i.preheader - %n.mod.vf112 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec113 = sub nuw nsw i64 %conv.i.i.i.i.i.i156.i.i.i.i, %n.mod.vf112 + %n.vec113 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body116 vector.body116: ; preds = %vector.body116, %vector.ph111 @@ -20594,6 +20593,7 @@ vector.body116: ; preds = %vector.body116, %ve br i1 %262, label %middle.block108, label %vector.body116, !llvm.loop !565 middle.block108: ; preds = %vector.body116 + %n.mod.vf112 = and i64 %lentry55.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx123 = add <2 x i64> %261, %260 %263 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx123) %cmp.n115 = icmp eq i64 %n.mod.vf112, 0 @@ -20607,7 +20607,7 @@ for.body.i.i.i.i.i158.i.i.i.i.preheader242: ; preds = %middle.block108, %f for.body.i.i.i.i.i158.i.i.i.i: ; preds = %for.body.i.i.i.i.i158.i.i.i.i.preheader242, %for.body.i.i.i.i.i158.i.i.i.i %i.08.i.i.i.i.i159.i.i.i.i = phi i64 [ %inc.i.i.i.i.i165.i.i.i.i, %for.body.i.i.i.i.i158.i.i.i.i ], [ %i.08.i.i.i.i.i159.i.i.i.i.ph, %for.body.i.i.i.i.i158.i.i.i.i.preheader242 ] %length.07.i.i.i.i.i160.i.i.i.i = phi i64 [ %add.i.i.i.i.i164.i.i.i.i, %for.body.i.i.i.i.i158.i.i.i.i ], [ %length.07.i.i.i.i.i160.i.i.i.i.ph, %for.body.i.i.i.i.i158.i.i.i.i.preheader242 ] - %arrayidx.i.i.i.i.i161.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i155.i.i.i.i, i64 %i.08.i.i.i.i.i159.i.i.i.i + %arrayidx.i.i.i.i.i161.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i155.i.i.i.i, i64 %i.08.i.i.i.i.i159.i.i.i.i %264 = load i8, ptr %arrayidx.i.i.i.i.i161.i.i.i.i, align 1, !tbaa !35, !noalias !554 %cmp.i.i.i.i.i.i162.i.i.i.i = icmp sgt i8 %264, -65 %conv.i.i.i.i.i163.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i162.i.i.i.i to i64 @@ -20798,8 +20798,7 @@ for.body.i.i.i.i.i.i.i376.i.i.preheader: ; preds = %if.then6.i.i.i.i br i1 %min.iters.check, label %for.body.i.i.i.i.i.i.i376.i.i.preheader257, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.i.i.i.i376.i.i.preheader - %n.mod.vf = and i64 %lentry.sroa.0.0.copyload.i.i369.i.i, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i.i.i.i.i374.i.i, %n.mod.vf + %n.vec = and i64 %lentry.sroa.0.0.copyload.i.i369.i.i, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -20821,6 +20820,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %296, label %middle.block, label %vector.body, !llvm.loop !584 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %lentry.sroa.0.0.copyload.i.i369.i.i, 3 %bin.rdx = add <2 x i64> %295, %294 %297 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -20834,7 +20834,7 @@ for.body.i.i.i.i.i.i.i376.i.i.preheader257: ; preds = %middle.block, %for. for.body.i.i.i.i.i.i.i376.i.i: ; preds = %for.body.i.i.i.i.i.i.i376.i.i.preheader257, %for.body.i.i.i.i.i.i.i376.i.i %i.08.i.i.i.i.i.i.i377.i.i = phi i64 [ %inc.i.i.i.i.i.i.i383.i.i, %for.body.i.i.i.i.i.i.i376.i.i ], [ %i.08.i.i.i.i.i.i.i377.i.i.ph, %for.body.i.i.i.i.i.i.i376.i.i.preheader257 ] %length.07.i.i.i.i.i.i.i378.i.i = phi i64 [ %add.i.i.i.i.i.i.i382.i.i, %for.body.i.i.i.i.i.i.i376.i.i ], [ %length.07.i.i.i.i.i.i.i378.i.i.ph, %for.body.i.i.i.i.i.i.i376.i.i.preheader257 ] - %arrayidx.i.i.i.i.i.i.i379.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i373.i.i, i64 %i.08.i.i.i.i.i.i.i377.i.i + %arrayidx.i.i.i.i.i.i.i379.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i.i.i373.i.i, i64 %i.08.i.i.i.i.i.i.i377.i.i %298 = load i8, ptr %arrayidx.i.i.i.i.i.i.i379.i.i, align 1, !tbaa !35, !noalias !579 %cmp.i.i.i.i.i.i.i.i380.i.i = icmp sgt i8 %298, -65 %conv.i.i.i.i.i.i.i381.i.i = zext i1 %cmp.i.i.i.i.i.i.i.i380.i.i to i64 @@ -20953,8 +20953,7 @@ for.body.i.i.i.i.i103.i.i.i.i.preheader: ; preds = %_ZNK6duckdb15Select br i1 %min.iters.check59, label %for.body.i.i.i.i.i103.i.i.i.i.preheader254, label %vector.ph60 vector.ph60: ; preds = %for.body.i.i.i.i.i103.i.i.i.i.preheader - %n.mod.vf61 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 3 - %n.vec62 = sub nuw nsw i64 %conv.i.i.i.i.i.i101.i.i.i.i, %n.mod.vf61 + %n.vec62 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 4294967292 br label %vector.body65 vector.body65: ; preds = %vector.body65, %vector.ph60 @@ -20976,6 +20975,7 @@ vector.body65: ; preds = %vector.body65, %vec br i1 %317, label %middle.block57, label %vector.body65, !llvm.loop !588 middle.block57: ; preds = %vector.body65 + %n.mod.vf61 = and i64 %lentry20.sroa.0.0.copyload.i.i.i.i, 3 %bin.rdx72 = add <2 x i64> %316, %315 %318 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx72) %cmp.n64 = icmp eq i64 %n.mod.vf61, 0 @@ -20989,7 +20989,7 @@ for.body.i.i.i.i.i103.i.i.i.i.preheader254: ; preds = %middle.block57, %fo for.body.i.i.i.i.i103.i.i.i.i: ; preds = %for.body.i.i.i.i.i103.i.i.i.i.preheader254, %for.body.i.i.i.i.i103.i.i.i.i %i.08.i.i.i.i.i104.i.i.i.i = phi i64 [ %inc.i.i.i.i.i110.i.i.i.i, %for.body.i.i.i.i.i103.i.i.i.i ], [ %i.08.i.i.i.i.i104.i.i.i.i.ph, %for.body.i.i.i.i.i103.i.i.i.i.preheader254 ] %length.07.i.i.i.i.i105.i.i.i.i = phi i64 [ %add.i.i.i.i.i109.i.i.i.i, %for.body.i.i.i.i.i103.i.i.i.i ], [ %length.07.i.i.i.i.i105.i.i.i.i.ph, %for.body.i.i.i.i.i103.i.i.i.i.preheader254 ] - %arrayidx.i.i.i.i.i106.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i100.i.i.i.i, i64 %i.08.i.i.i.i.i104.i.i.i.i + %arrayidx.i.i.i.i.i106.i.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i.i100.i.i.i.i, i64 %i.08.i.i.i.i.i104.i.i.i.i %319 = load i8, ptr %arrayidx.i.i.i.i.i106.i.i.i.i, align 1, !tbaa !35, !noalias !579 %cmp.i.i.i.i.i.i107.i.i.i.i = icmp sgt i8 %319, -65 %conv.i.i.i.i.i108.i.i.i.i = zext i1 %cmp.i.i.i.i.i.i107.i.i.i.i to i64 @@ -50983,8 +50983,7 @@ if.end26.i.i: ; preds = %if.end.i.i br i1 %min.iters.check, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %if.end26.i.i - %n.mod.vf = and i64 %left.coerce0, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i, %n.mod.vf + %n.vec = and i64 %left.coerce0, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -51010,6 +51009,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %24, label %middle.block, label %vector.body, !llvm.loop !1340 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %left.coerce0, 3 %bin.rdx = add <2 x i64> %23, %22 %25 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -51023,9 +51023,9 @@ for.body.i.i.preheader: ; preds = %middle.block, %if.e for.body.i.i: ; preds = %for.body.i.i.preheader, %for.body.i.i %idx.08.i.i = phi i64 [ %inc35.i.i, %for.body.i.i ], [ %idx.08.i.i.ph, %for.body.i.i.preheader ] %mismatches.07.i.i = phi i64 [ %spec.select.i.i, %for.body.i.i ], [ %mismatches.07.i.i.ph, %for.body.i.i.preheader ] - %arrayidx.i.i = getelementptr inbounds i8, ptr %cond.i.i.i, i64 %idx.08.i.i + %arrayidx.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i, i64 %idx.08.i.i %26 = load i8, ptr %arrayidx.i.i, align 1, !tbaa !35 - %arrayidx30.i.i = getelementptr inbounds i8, ptr %cond.i59.i.i, i64 %idx.08.i.i + %arrayidx30.i.i = getelementptr inbounds nuw i8, ptr %cond.i59.i.i, i64 %idx.08.i.i %27 = load i8, ptr %arrayidx30.i.i, align 1, !tbaa !35 %cmp32.not.i.i = icmp ne i8 %26, %27 %inc.i.i = zext i1 %cmp32.not.i.i to i64 @@ -55973,7 +55973,7 @@ if.end.i.i.i: ; preds = %lor.lhs.false.i.i.i br i1 %9, label %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.unr-lcssa, label %if.end.i.i.i.new if.end.i.i.i.new: ; preds = %if.end.i.i.i - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %left.coerce0, 4294967294 br label %for.body.i.i.i.i for.body.i.i.i.i: ; preds = %for.body.i.i.i.i, %if.end.i.i.i.new @@ -56009,7 +56009,7 @@ _ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.unr-lcssa: ; preds = %for.body.i.i br i1 %lcmp.mod.not, label %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i, label %for.body.i.i.i.i.epil for.body.i.i.i.i.epil: ; preds = %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.unr-lcssa - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %pos.07.i.i.i.i.unr + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %pos.07.i.i.i.i.unr %14 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !35, !noalias !1374 %conv.i22.i.i.i.epil = zext i8 %14 to i64 %rem.i.i8.i.i.i.i.i.i.epil = and i64 %conv.i22.i.i.i.epil, 63 @@ -56035,7 +56035,7 @@ _ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i: ; preds = %for.body.i.i.i.i.ep br i1 %17, label %"_ZZN6duckdbL15JaccardFunctionERNS_9DataChunkERNS_15ExpressionStateERNS_6VectorEENK3$_0clENS_8string_tES7_.exit.unr-lcssa", label %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.new _ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.new: ; preds = %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i - %unroll_iter3 = sub nsw i64 %conv.i20.i.i.i, %xtraiter1 + %unroll_iter3 = and i64 %right.coerce0, 4294967294 br label %for.body.i29.i.i.i for.body.i29.i.i.i: ; preds = %for.body.i29.i.i.i, %_ZN6duckdbL6GetSetERKNS_8string_tE.exit.i.i.i.new @@ -56078,7 +56078,7 @@ unreachable.i.i.i: ; preds = %invoke.cont5.i.i.i br i1 %lcmp.mod2.not, label %"_ZZN6duckdbL15JaccardFunctionERNS_9DataChunkERNS_15ExpressionStateERNS_6VectorEENK3$_0clENS_8string_tES7_.exit", label %for.body.i29.i.i.i.epil for.body.i29.i.i.i.epil: ; preds = %"_ZZN6duckdbL15JaccardFunctionERNS_9DataChunkERNS_15ExpressionStateERNS_6VectorEENK3$_0clENS_8string_tES7_.exit.unr-lcssa" - %arrayidx.i31.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i27.i.i.i, i64 %pos.07.i30.i.i.i.unr + %arrayidx.i31.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i27.i.i.i, i64 %pos.07.i30.i.i.i.unr %22 = load i8, ptr %arrayidx.i31.i.i.i.epil, align 1, !tbaa !35, !noalias !1378 %conv.i32.i.i.i.epil = zext i8 %22 to i64 %rem.i.i8.i.i.i33.i.i.i.epil = and i64 %conv.i32.i.i.i.epil, 63 @@ -73999,7 +73999,7 @@ for.body.preheader.i.i.i: ; preds = %if.else br i1 %11, label %for.cond.cleanup.loopexit.i.i.i.unr-lcssa, label %for.body.preheader.i.i.i.new for.body.preheader.i.i.i.new: ; preds = %for.body.preheader.i.i.i - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %for.body.preheader.i.i.i @@ -74009,7 +74009,7 @@ for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %fo br i1 %lcmp.mod.not, label %for.cond.cleanup.loopexit.i.i.i, label %for.body.i.i.i.epil for.body.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.unr-lcssa - %arrayidx.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr + %arrayidx.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr %12 = load i8, ptr %arrayidx.i.i.i.epil, align 1, !tbaa !35 %13 = lshr i8 %12, 4 %idxprom.i.i.i.epil = zext nneg i8 %13 to i64 @@ -74455,7 +74455,7 @@ for.body.preheader.i.i.i: ; preds = %for.body10 br i1 %25, label %for.cond.cleanup.loopexit.i.i.i.unr-lcssa, label %for.body.preheader.i.i.i.new for.body.preheader.i.i.i.new: ; preds = %for.body.preheader.i.i.i - %unroll_iter228 = sub nsw i64 %conv.i.i.i.i, %xtraiter226 + %unroll_iter228 = and i64 %agg.tmp.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %for.body.preheader.i.i.i @@ -74465,7 +74465,7 @@ for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %fo br i1 %lcmp.mod227.not, label %for.cond.cleanup.loopexit.i.i.i, label %for.body.i.i.i.epil for.body.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.unr-lcssa - %arrayidx.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr + %arrayidx.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr %26 = load i8, ptr %arrayidx.i.i.i.epil, align 1, !tbaa !35 %27 = lshr i8 %26, 4 %idxprom.i.i.i.epil = zext nneg i8 %27 to i64 @@ -74598,7 +74598,7 @@ for.body.preheader.i.i.i119: ; preds = %if.then23 br i1 %52, label %for.cond.cleanup.loopexit.i.i.i134.unr-lcssa, label %for.body.preheader.i.i.i119.new for.body.preheader.i.i.i119.new: ; preds = %for.body.preheader.i.i.i119 - %unroll_iter = sub nsw i64 %conv.i.i.i.i114, %xtraiter + %unroll_iter = and i64 %agg.tmp25.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i122 for.cond.cleanup.loopexit.i.i.i134.unr-lcssa: ; preds = %for.body.i.i.i122, %for.body.preheader.i.i.i119 @@ -74608,7 +74608,7 @@ for.cond.cleanup.loopexit.i.i.i134.unr-lcssa: ; preds = %for.body.i.i.i122, br i1 %lcmp.mod.not, label %for.cond.cleanup.loopexit.i.i.i134, label %for.body.i.i.i122.epil for.body.i.i.i122.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i134.unr-lcssa - %arrayidx.i.i.i125.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i113, i64 %i.028.i.i.i123.unr + %arrayidx.i.i.i125.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i113, i64 %i.028.i.i.i123.unr %53 = load i8, ptr %arrayidx.i.i.i125.epil, align 1, !tbaa !35 %54 = lshr i8 %53, 4 %idxprom.i.i.i126.epil = zext nneg i8 %54 to i64 @@ -74766,7 +74766,7 @@ for.body.preheader.i.i.i162: ; preds = %for.body49 br i1 %83, label %for.cond.cleanup.loopexit.i.i.i177.unr-lcssa, label %for.body.preheader.i.i.i162.new for.body.preheader.i.i.i162.new: ; preds = %for.body.preheader.i.i.i162 - %unroll_iter232 = sub nsw i64 %conv.i.i.i.i157, %xtraiter230 + %unroll_iter232 = and i64 %agg.tmp51.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i165 for.cond.cleanup.loopexit.i.i.i177.unr-lcssa: ; preds = %for.body.i.i.i165, %for.body.preheader.i.i.i162 @@ -74776,7 +74776,7 @@ for.cond.cleanup.loopexit.i.i.i177.unr-lcssa: ; preds = %for.body.i.i.i165, br i1 %lcmp.mod231.not, label %for.cond.cleanup.loopexit.i.i.i177, label %for.body.i.i.i165.epil for.body.i.i.i165.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i177.unr-lcssa - %arrayidx.i.i.i168.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i156, i64 %i.028.i.i.i166.unr + %arrayidx.i.i.i168.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i156, i64 %i.028.i.i.i166.unr %84 = load i8, ptr %arrayidx.i.i.i168.epil, align 1, !tbaa !35 %85 = lshr i8 %84, 4 %idxprom.i.i.i169.epil = zext nneg i8 %85 to i64 @@ -74971,7 +74971,7 @@ for.body.preheader.i.i.i: ; preds = %if.then3 br i1 %13, label %for.cond.cleanup.loopexit.i.i.i.unr-lcssa, label %for.body.preheader.i.i.i.new for.body.preheader.i.i.i.new: ; preds = %for.body.preheader.i.i.i - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %for.body.preheader.i.i.i @@ -74981,7 +74981,7 @@ for.cond.cleanup.loopexit.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i, %fo br i1 %lcmp.mod.not, label %for.cond.cleanup.loopexit.i.i.i, label %for.body.i.i.i.epil for.body.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.unr-lcssa - %arrayidx.i.i.i50.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr + %arrayidx.i.i.i50.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.028.i.i.i.unr %14 = load i8, ptr %arrayidx.i.i.i50.epil, align 1, !tbaa !35 %15 = lshr i8 %14, 4 %idxprom.i.i.i.epil = zext nneg i8 %15 to i64 @@ -75166,7 +75166,7 @@ for.body.preheader.i.i.i74: ; preds = %_ZNK6duckdb15Select br i1 %49, label %for.cond.cleanup.loopexit.i.i.i89.unr-lcssa, label %for.body.preheader.i.i.i74.new for.body.preheader.i.i.i74.new: ; preds = %for.body.preheader.i.i.i74 - %unroll_iter119 = sub nsw i64 %conv.i.i.i.i69, %xtraiter117 + %unroll_iter119 = and i64 %agg.tmp18.sroa.0.0.copyload, 4294967294 br label %for.body.i.i.i77 for.cond.cleanup.loopexit.i.i.i89.unr-lcssa: ; preds = %for.body.i.i.i77, %for.body.preheader.i.i.i74 @@ -75176,7 +75176,7 @@ for.cond.cleanup.loopexit.i.i.i89.unr-lcssa: ; preds = %for.body.i.i.i77, % br i1 %lcmp.mod118.not, label %for.cond.cleanup.loopexit.i.i.i89, label %for.body.i.i.i77.epil for.body.i.i.i77.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i89.unr-lcssa - %arrayidx.i.i.i80.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i68, i64 %i.028.i.i.i78.unr + %arrayidx.i.i.i80.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i68, i64 %i.028.i.i.i78.unr %50 = load i8, ptr %arrayidx.i.i.i80.epil, align 1, !tbaa !35 %51 = lshr i8 %50, 4 %idxprom.i.i.i81.epil = zext nneg i8 %51 to i64 diff --git a/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll b/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll index cdceffd482..62cca61511 100644 --- a/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll +++ b/bench/duckdb/optimized/ub_duckdb_func_string_main.cpp.ll @@ -68577,7 +68577,7 @@ for.body.i.i.i.i.preheader: ; preds = %if.else br i1 %12, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -68588,12 +68588,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %13 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %13 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %14 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %14, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -69029,7 +69029,7 @@ for.body.i.i.i.i.preheader: ; preds = %for.body10 br i1 %26, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter217 = sub nsw i64 %conv.i.i.i.i, %xtraiter214 + %unroll_iter217 = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -69040,12 +69040,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter215 = phi i64 [ %epil.iter215.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %27 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %27 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %28 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %28, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter215.next = add nuw nsw i64 %epil.iter215, 1 @@ -69168,7 +69168,7 @@ for.body.i.i.i.i120.preheader: ; preds = %if.then23 br i1 %46, label %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa, label %for.body.i.i.i.i120.preheader.new for.body.i.i.i.i120.preheader.new: ; preds = %for.body.i.i.i.i120.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i114, %xtraiter + %unroll_iter = and i64 %agg.tmp25.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i120 for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa: ; preds = %for.body.i.i.i.i120, %for.body.i.i.i.i120.preheader @@ -69179,12 +69179,12 @@ for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa: ; preds = %for.body.i.i.i.i120 for.body.i.i.i.i120.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa, %for.body.i.i.i.i120.epil %i.012.i.i.i.i121.epil = phi i64 [ %inc.i.i.i.i126.epil, %for.body.i.i.i.i120.epil ], [ %i.012.i.i.i.i121.unr, %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i120.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa ] - %arrayidx.i.i.i.i122.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i113, i64 %i.012.i.i.i.i121.epil + %arrayidx.i.i.i.i122.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i113, i64 %i.012.i.i.i.i121.epil %47 = load i8, ptr %arrayidx.i.i.i.i122.epil, align 1, !tbaa !3 %idxprom.i.i.i.i123.epil = zext i8 %47 to i64 %arrayidx3.i.i.i.i124.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i123.epil %48 = load i8, ptr %arrayidx3.i.i.i.i124.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i125.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i118, i64 %i.012.i.i.i.i121.epil + %arrayidx4.i.i.i.i125.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i118, i64 %i.012.i.i.i.i121.epil store i8 %48, ptr %arrayidx4.i.i.i.i125.epil, align 1, !tbaa !3 %inc.i.i.i.i126.epil = add nuw nsw i64 %i.012.i.i.i.i121.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -69332,7 +69332,7 @@ for.body.i.i.i.i157.preheader: ; preds = %for.body49 br i1 %70, label %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa, label %for.body.i.i.i.i157.preheader.new for.body.i.i.i.i157.preheader.new: ; preds = %for.body.i.i.i.i157.preheader - %unroll_iter222 = sub nsw i64 %conv.i.i.i.i151, %xtraiter219 + %unroll_iter222 = and i64 %agg.tmp51.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i157 for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa: ; preds = %for.body.i.i.i.i157, %for.body.i.i.i.i157.preheader @@ -69343,12 +69343,12 @@ for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa: ; preds = %for.body.i.i.i.i157 for.body.i.i.i.i157.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa, %for.body.i.i.i.i157.epil %i.012.i.i.i.i158.epil = phi i64 [ %inc.i.i.i.i163.epil, %for.body.i.i.i.i157.epil ], [ %i.012.i.i.i.i158.unr, %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa ] %epil.iter220 = phi i64 [ %epil.iter220.next, %for.body.i.i.i.i157.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa ] - %arrayidx.i.i.i.i159.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i150, i64 %i.012.i.i.i.i158.epil + %arrayidx.i.i.i.i159.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i150, i64 %i.012.i.i.i.i158.epil %71 = load i8, ptr %arrayidx.i.i.i.i159.epil, align 1, !tbaa !3 %idxprom.i.i.i.i160.epil = zext i8 %71 to i64 %arrayidx3.i.i.i.i161.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i160.epil %72 = load i8, ptr %arrayidx3.i.i.i.i161.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i162.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i155, i64 %i.012.i.i.i.i158.epil + %arrayidx4.i.i.i.i162.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i155, i64 %i.012.i.i.i.i158.epil store i8 %72, ptr %arrayidx4.i.i.i.i162.epil, align 1, !tbaa !3 %inc.i.i.i.i163.epil = add nuw nsw i64 %i.012.i.i.i.i158.epil, 1 %epil.iter220.next = add nuw nsw i64 %epil.iter220, 1 @@ -69533,7 +69533,7 @@ for.body.i.i.i.i.preheader: ; preds = %if.then3 br i1 %14, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -69544,12 +69544,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %15 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %15 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %16 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %16, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -69724,7 +69724,7 @@ for.body.i.i.i.i74.preheader: ; preds = %_ZNK6duckdb15Select br i1 %43, label %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa, label %for.body.i.i.i.i74.preheader.new for.body.i.i.i.i74.preheader.new: ; preds = %for.body.i.i.i.i74.preheader - %unroll_iter113 = sub nsw i64 %conv.i.i.i.i68, %xtraiter110 + %unroll_iter113 = and i64 %agg.tmp18.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i74 for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa: ; preds = %for.body.i.i.i.i74, %for.body.i.i.i.i74.preheader @@ -69735,12 +69735,12 @@ for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa: ; preds = %for.body.i.i.i.i74, for.body.i.i.i.i74.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa, %for.body.i.i.i.i74.epil %i.012.i.i.i.i75.epil = phi i64 [ %inc.i.i.i.i80.epil, %for.body.i.i.i.i74.epil ], [ %i.012.i.i.i.i75.unr, %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa ] %epil.iter111 = phi i64 [ %epil.iter111.next, %for.body.i.i.i.i74.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa ] - %arrayidx.i.i.i.i76.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i67, i64 %i.012.i.i.i.i75.epil + %arrayidx.i.i.i.i76.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i67, i64 %i.012.i.i.i.i75.epil %44 = load i8, ptr %arrayidx.i.i.i.i76.epil, align 1, !tbaa !3 %idxprom.i.i.i.i77.epil = zext i8 %44 to i64 %arrayidx3.i.i.i.i78.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8LowerFun18ascii_to_lower_mapE, i64 0, i64 %idxprom.i.i.i.i77.epil %45 = load i8, ptr %arrayidx3.i.i.i.i78.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i79.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i72, i64 %i.012.i.i.i.i75.epil + %arrayidx4.i.i.i.i79.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i72, i64 %i.012.i.i.i.i75.epil store i8 %45, ptr %arrayidx4.i.i.i.i79.epil, align 1, !tbaa !3 %inc.i.i.i.i80.epil = add nuw nsw i64 %i.012.i.i.i.i75.epil, 1 %epil.iter111.next = add nuw nsw i64 %epil.iter111, 1 @@ -70708,7 +70708,7 @@ for.body.i.i.i.i.preheader: ; preds = %if.else br i1 %12, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -70719,12 +70719,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %13 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %13 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %14 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %14, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -71160,7 +71160,7 @@ for.body.i.i.i.i.preheader: ; preds = %for.body10 br i1 %26, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter217 = sub nsw i64 %conv.i.i.i.i, %xtraiter214 + %unroll_iter217 = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -71171,12 +71171,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter215 = phi i64 [ %epil.iter215.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %27 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %27 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %28 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %28, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter215.next = add nuw nsw i64 %epil.iter215, 1 @@ -71299,7 +71299,7 @@ for.body.i.i.i.i120.preheader: ; preds = %if.then23 br i1 %46, label %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa, label %for.body.i.i.i.i120.preheader.new for.body.i.i.i.i120.preheader.new: ; preds = %for.body.i.i.i.i120.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i114, %xtraiter + %unroll_iter = and i64 %agg.tmp25.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i120 for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa: ; preds = %for.body.i.i.i.i120, %for.body.i.i.i.i120.preheader @@ -71310,12 +71310,12 @@ for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa: ; preds = %for.body.i.i.i.i120 for.body.i.i.i.i120.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa, %for.body.i.i.i.i120.epil %i.012.i.i.i.i121.epil = phi i64 [ %inc.i.i.i.i126.epil, %for.body.i.i.i.i120.epil ], [ %i.012.i.i.i.i121.unr, %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i120.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i128.unr-lcssa ] - %arrayidx.i.i.i.i122.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i113, i64 %i.012.i.i.i.i121.epil + %arrayidx.i.i.i.i122.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i113, i64 %i.012.i.i.i.i121.epil %47 = load i8, ptr %arrayidx.i.i.i.i122.epil, align 1, !tbaa !3 %idxprom.i.i.i.i123.epil = zext i8 %47 to i64 %arrayidx3.i.i.i.i124.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i123.epil %48 = load i8, ptr %arrayidx3.i.i.i.i124.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i125.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i118, i64 %i.012.i.i.i.i121.epil + %arrayidx4.i.i.i.i125.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i118, i64 %i.012.i.i.i.i121.epil store i8 %48, ptr %arrayidx4.i.i.i.i125.epil, align 1, !tbaa !3 %inc.i.i.i.i126.epil = add nuw nsw i64 %i.012.i.i.i.i121.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -71463,7 +71463,7 @@ for.body.i.i.i.i157.preheader: ; preds = %for.body49 br i1 %70, label %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa, label %for.body.i.i.i.i157.preheader.new for.body.i.i.i.i157.preheader.new: ; preds = %for.body.i.i.i.i157.preheader - %unroll_iter222 = sub nsw i64 %conv.i.i.i.i151, %xtraiter219 + %unroll_iter222 = and i64 %agg.tmp51.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i157 for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa: ; preds = %for.body.i.i.i.i157, %for.body.i.i.i.i157.preheader @@ -71474,12 +71474,12 @@ for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa: ; preds = %for.body.i.i.i.i157 for.body.i.i.i.i157.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa, %for.body.i.i.i.i157.epil %i.012.i.i.i.i158.epil = phi i64 [ %inc.i.i.i.i163.epil, %for.body.i.i.i.i157.epil ], [ %i.012.i.i.i.i158.unr, %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa ] %epil.iter220 = phi i64 [ %epil.iter220.next, %for.body.i.i.i.i157.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i165.unr-lcssa ] - %arrayidx.i.i.i.i159.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i150, i64 %i.012.i.i.i.i158.epil + %arrayidx.i.i.i.i159.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i150, i64 %i.012.i.i.i.i158.epil %71 = load i8, ptr %arrayidx.i.i.i.i159.epil, align 1, !tbaa !3 %idxprom.i.i.i.i160.epil = zext i8 %71 to i64 %arrayidx3.i.i.i.i161.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i160.epil %72 = load i8, ptr %arrayidx3.i.i.i.i161.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i162.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i155, i64 %i.012.i.i.i.i158.epil + %arrayidx4.i.i.i.i162.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i155, i64 %i.012.i.i.i.i158.epil store i8 %72, ptr %arrayidx4.i.i.i.i162.epil, align 1, !tbaa !3 %inc.i.i.i.i163.epil = add nuw nsw i64 %i.012.i.i.i.i158.epil, 1 %epil.iter220.next = add nuw nsw i64 %epil.iter220, 1 @@ -71664,7 +71664,7 @@ for.body.i.i.i.i.preheader: ; preds = %if.then3 br i1 %14, label %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, label %for.body.i.i.i.i.preheader.new for.body.i.i.i.i.preheader.new: ; preds = %for.body.i.i.i.i.preheader - %unroll_iter = sub nsw i64 %conv.i.i.i.i, %xtraiter + %unroll_iter = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, %for.body.i.i.i.i.preheader @@ -71675,12 +71675,12 @@ for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa: ; preds = %for.body.i.i.i.i, % for.body.i.i.i.i.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa, %for.body.i.i.i.i.epil %i.012.i.i.i.i.epil = phi i64 [ %inc.i.i.i.i.epil, %for.body.i.i.i.i.epil ], [ %i.012.i.i.i.i.unr, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i.i.i.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i.unr-lcssa ] - %arrayidx.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.012.i.i.i.i.epil %15 = load i8, ptr %arrayidx.i.i.i.i.epil, align 1, !tbaa !3 %idxprom.i.i.i.i.epil = zext i8 %15 to i64 %arrayidx3.i.i.i.i.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i.epil %16 = load i8, ptr %arrayidx3.i.i.i.i.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil + %arrayidx4.i.i.i.i.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i, i64 %i.012.i.i.i.i.epil store i8 %16, ptr %arrayidx4.i.i.i.i.epil, align 1, !tbaa !3 %inc.i.i.i.i.epil = add nuw nsw i64 %i.012.i.i.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -71855,7 +71855,7 @@ for.body.i.i.i.i74.preheader: ; preds = %_ZNK6duckdb15Select br i1 %43, label %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa, label %for.body.i.i.i.i74.preheader.new for.body.i.i.i.i74.preheader.new: ; preds = %for.body.i.i.i.i74.preheader - %unroll_iter113 = sub nsw i64 %conv.i.i.i.i68, %xtraiter110 + %unroll_iter113 = and i64 %agg.tmp18.sroa.0.0.copyload, 4294967292 br label %for.body.i.i.i.i74 for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa: ; preds = %for.body.i.i.i.i74, %for.body.i.i.i.i74.preheader @@ -71866,12 +71866,12 @@ for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa: ; preds = %for.body.i.i.i.i74, for.body.i.i.i.i74.epil: ; preds = %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa, %for.body.i.i.i.i74.epil %i.012.i.i.i.i75.epil = phi i64 [ %inc.i.i.i.i80.epil, %for.body.i.i.i.i74.epil ], [ %i.012.i.i.i.i75.unr, %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa ] %epil.iter111 = phi i64 [ %epil.iter111.next, %for.body.i.i.i.i74.epil ], [ 0, %for.cond.cleanup.loopexit.i.i.i.i82.unr-lcssa ] - %arrayidx.i.i.i.i76.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i67, i64 %i.012.i.i.i.i75.epil + %arrayidx.i.i.i.i76.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i67, i64 %i.012.i.i.i.i75.epil %44 = load i8, ptr %arrayidx.i.i.i.i76.epil, align 1, !tbaa !3 %idxprom.i.i.i.i77.epil = zext i8 %44 to i64 %arrayidx3.i.i.i.i78.epil = getelementptr inbounds nuw [256 x i8], ptr @_ZN6duckdb8UpperFun18ascii_to_upper_mapE, i64 0, i64 %idxprom.i.i.i.i77.epil %45 = load i8, ptr %arrayidx3.i.i.i.i78.epil, align 1, !tbaa !3 - %arrayidx4.i.i.i.i79.epil = getelementptr inbounds i8, ptr %cond.i.i.i.i.i72, i64 %i.012.i.i.i.i75.epil + %arrayidx4.i.i.i.i79.epil = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i.i72, i64 %i.012.i.i.i.i75.epil store i8 %45, ptr %arrayidx4.i.i.i.i79.epil, align 1, !tbaa !3 %inc.i.i.i.i80.epil = add nuw nsw i64 %i.012.i.i.i.i75.epil, 1 %epil.iter111.next = add nuw nsw i64 %epil.iter111, 1 @@ -73149,8 +73149,7 @@ for.body.i.i.i.preheader: ; preds = %if.else br i1 %min.iters.check, label %for.body.i.i.i.preheader7, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.preheader - %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i, %n.mod.vf + %n.vec = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -73172,6 +73171,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %15, label %middle.block, label %vector.body, !llvm.loop !1341 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 %bin.rdx = add <2 x i64> %14, %13 %16 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -73185,7 +73185,7 @@ for.body.i.i.i.preheader7: ; preds = %middle.block, %for. for.body.i.i.i: ; preds = %for.body.i.i.i.preheader7, %for.body.i.i.i %i.08.i.i.i = phi i64 [ %inc.i.i.i, %for.body.i.i.i ], [ %i.08.i.i.i.ph, %for.body.i.i.i.preheader7 ] %length.07.i.i.i = phi i64 [ %add.i.i.i, %for.body.i.i.i ], [ %length.07.i.i.i.ph, %for.body.i.i.i.preheader7 ] - %arrayidx.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i + %arrayidx.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i %17 = load i8, ptr %arrayidx.i.i.i, align 1, !tbaa !3 %cmp.i.i.i.i = icmp sgt i8 %17, -65 %conv.i.i.i = zext i1 %cmp.i.i.i.i to i64 @@ -73536,8 +73536,7 @@ for.body.i.i.i.preheader: ; preds = %for.body10 br i1 %min.iters.check, label %for.body.i.i.i.preheader35, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.preheader - %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i, %n.mod.vf + %n.vec = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -73559,6 +73558,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %28, label %middle.block, label %vector.body, !llvm.loop !1343 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 %bin.rdx = add <2 x i64> %27, %26 %29 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -73572,7 +73572,7 @@ for.body.i.i.i.preheader35: ; preds = %middle.block, %for. for.body.i.i.i: ; preds = %for.body.i.i.i.preheader35, %for.body.i.i.i %i.08.i.i.i = phi i64 [ %inc.i.i.i, %for.body.i.i.i ], [ %i.08.i.i.i.ph, %for.body.i.i.i.preheader35 ] %length.07.i.i.i = phi i64 [ %add.i.i.i, %for.body.i.i.i ], [ %length.07.i.i.i.ph, %for.body.i.i.i.preheader35 ] - %arrayidx.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i + %arrayidx.i.i.i = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i %30 = load i8, ptr %arrayidx.i.i.i, align 1, !tbaa !3 %cmp.i.i.i.i = icmp sgt i8 %30, -65 %conv.i.i.i = zext i1 %cmp.i.i.i.i to i64 @@ -73618,8 +73618,7 @@ for.body.i.i.i107.preheader: ; preds = %if.then21 br i1 %min.iters.check168, label %for.body.i.i.i107.preheader36, label %vector.ph169 vector.ph169: ; preds = %for.body.i.i.i107.preheader - %n.mod.vf170 = and i64 %agg.tmp22.sroa.0.0.copyload, 3 - %n.vec171 = sub nuw nsw i64 %conv.i.i.i.i105, %n.mod.vf170 + %n.vec171 = and i64 %agg.tmp22.sroa.0.0.copyload, 4294967292 br label %vector.body174 vector.body174: ; preds = %vector.body174, %vector.ph169 @@ -73641,6 +73640,7 @@ vector.body174: ; preds = %vector.body174, %ve br i1 %40, label %middle.block166, label %vector.body174, !llvm.loop !1346 middle.block166: ; preds = %vector.body174 + %n.mod.vf170 = and i64 %agg.tmp22.sroa.0.0.copyload, 3 %bin.rdx181 = add <2 x i64> %39, %38 %41 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx181) %cmp.n173 = icmp eq i64 %n.mod.vf170, 0 @@ -73654,7 +73654,7 @@ for.body.i.i.i107.preheader36: ; preds = %middle.block166, %f for.body.i.i.i107: ; preds = %for.body.i.i.i107.preheader36, %for.body.i.i.i107 %i.08.i.i.i108 = phi i64 [ %inc.i.i.i114, %for.body.i.i.i107 ], [ %i.08.i.i.i108.ph, %for.body.i.i.i107.preheader36 ] %length.07.i.i.i109 = phi i64 [ %add.i.i.i113, %for.body.i.i.i107 ], [ %length.07.i.i.i109.ph, %for.body.i.i.i107.preheader36 ] - %arrayidx.i.i.i110 = getelementptr inbounds i8, ptr %cond.i.i.i.i104, i64 %i.08.i.i.i108 + %arrayidx.i.i.i110 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i104, i64 %i.08.i.i.i108 %42 = load i8, ptr %arrayidx.i.i.i110, align 1, !tbaa !3 %cmp.i.i.i.i111 = icmp sgt i8 %42, -65 %conv.i.i.i112 = zext i1 %cmp.i.i.i.i111 to i64 @@ -73723,8 +73723,7 @@ for.body.i.i.i126.preheader: ; preds = %for.body44 br i1 %min.iters.check185, label %for.body.i.i.i126.preheader33, label %vector.ph186 vector.ph186: ; preds = %for.body.i.i.i126.preheader - %n.mod.vf187 = and i64 %agg.tmp45.sroa.0.0.copyload, 3 - %n.vec188 = sub nuw nsw i64 %conv.i.i.i.i124, %n.mod.vf187 + %n.vec188 = and i64 %agg.tmp45.sroa.0.0.copyload, 4294967292 br label %vector.body191 vector.body191: ; preds = %vector.body191, %vector.ph186 @@ -73746,6 +73745,7 @@ vector.body191: ; preds = %vector.body191, %ve br i1 %55, label %middle.block183, label %vector.body191, !llvm.loop !1350 middle.block183: ; preds = %vector.body191 + %n.mod.vf187 = and i64 %agg.tmp45.sroa.0.0.copyload, 3 %bin.rdx198 = add <2 x i64> %54, %53 %56 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx198) %cmp.n190 = icmp eq i64 %n.mod.vf187, 0 @@ -73759,7 +73759,7 @@ for.body.i.i.i126.preheader33: ; preds = %middle.block183, %f for.body.i.i.i126: ; preds = %for.body.i.i.i126.preheader33, %for.body.i.i.i126 %i.08.i.i.i127 = phi i64 [ %inc.i.i.i133, %for.body.i.i.i126 ], [ %i.08.i.i.i127.ph, %for.body.i.i.i126.preheader33 ] %length.07.i.i.i128 = phi i64 [ %add.i.i.i132, %for.body.i.i.i126 ], [ %length.07.i.i.i128.ph, %for.body.i.i.i126.preheader33 ] - %arrayidx.i.i.i129 = getelementptr inbounds i8, ptr %cond.i.i.i.i123, i64 %i.08.i.i.i127 + %arrayidx.i.i.i129 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i123, i64 %i.08.i.i.i127 %57 = load i8, ptr %arrayidx.i.i.i129, align 1, !tbaa !3 %cmp.i.i.i.i130 = icmp sgt i8 %57, -65 %conv.i.i.i131 = zext i1 %cmp.i.i.i.i130 to i64 @@ -73863,8 +73863,7 @@ for.body.i.i.i.preheader: ; preds = %if.then3 br i1 %min.iters.check, label %for.body.i.i.i.preheader37, label %vector.ph vector.ph: ; preds = %for.body.i.i.i.preheader - %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 - %n.vec = sub nuw nsw i64 %conv.i.i.i.i, %n.mod.vf + %n.vec = and i64 %agg.tmp.sroa.0.0.copyload, 4294967292 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -73886,6 +73885,7 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !1353 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %agg.tmp.sroa.0.0.copyload, 3 %bin.rdx = add <2 x i64> %16, %15 %18 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx) %cmp.n = icmp eq i64 %n.mod.vf, 0 @@ -73899,7 +73899,7 @@ for.body.i.i.i.preheader37: ; preds = %middle.block, %for. for.body.i.i.i: ; preds = %for.body.i.i.i.preheader37, %for.body.i.i.i %i.08.i.i.i = phi i64 [ %inc.i.i.i, %for.body.i.i.i ], [ %i.08.i.i.i.ph, %for.body.i.i.i.preheader37 ] %length.07.i.i.i = phi i64 [ %add.i.i.i, %for.body.i.i.i ], [ %length.07.i.i.i.ph, %for.body.i.i.i.preheader37 ] - %arrayidx.i.i.i46 = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i + %arrayidx.i.i.i46 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i, i64 %i.08.i.i.i %19 = load i8, ptr %arrayidx.i.i.i46, align 1, !tbaa !3 %cmp.i.i.i.i = icmp sgt i8 %19, -65 %conv.i.i.i = zext i1 %cmp.i.i.i.i to i64 @@ -73985,8 +73985,7 @@ for.body.i.i.i66.us.preheader: ; preds = %for.body13.us br i1 %min.iters.check111, label %for.body.i.i.i66.us.preheader31, label %vector.ph112 vector.ph112: ; preds = %for.body.i.i.i66.us.preheader - %n.mod.vf113 = and i64 %agg.tmp16.sroa.0.0.copyload.us, 3 - %n.vec114 = sub nuw nsw i64 %conv.i.i.i.i64.us, %n.mod.vf113 + %n.vec114 = and i64 %agg.tmp16.sroa.0.0.copyload.us, 4294967292 br label %vector.body117 vector.body117: ; preds = %vector.body117, %vector.ph112 @@ -74008,6 +74007,7 @@ vector.body117: ; preds = %vector.body117, %ve br i1 %36, label %middle.block109, label %vector.body117, !llvm.loop !1356 middle.block109: ; preds = %vector.body117 + %n.mod.vf113 = and i64 %agg.tmp16.sroa.0.0.copyload.us, 3 %bin.rdx124 = add <2 x i64> %35, %34 %37 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx124) %cmp.n116 = icmp eq i64 %n.mod.vf113, 0 @@ -74021,7 +74021,7 @@ for.body.i.i.i66.us.preheader31: ; preds = %middle.block109, %f for.body.i.i.i66.us: ; preds = %for.body.i.i.i66.us.preheader31, %for.body.i.i.i66.us %i.08.i.i.i67.us = phi i64 [ %inc.i.i.i73.us, %for.body.i.i.i66.us ], [ %i.08.i.i.i67.us.ph, %for.body.i.i.i66.us.preheader31 ] %length.07.i.i.i68.us = phi i64 [ %add.i.i.i72.us, %for.body.i.i.i66.us ], [ %length.07.i.i.i68.us.ph, %for.body.i.i.i66.us.preheader31 ] - %arrayidx.i.i.i69.us = getelementptr inbounds i8, ptr %cond.i.i.i.i63.us, i64 %i.08.i.i.i67.us + %arrayidx.i.i.i69.us = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i63.us, i64 %i.08.i.i.i67.us %38 = load i8, ptr %arrayidx.i.i.i69.us, align 1, !tbaa !3 %cmp.i.i.i.i70.us = icmp sgt i8 %38, -65 %conv.i.i.i71.us = zext i1 %cmp.i.i.i.i70.us to i64 @@ -74063,8 +74063,7 @@ for.body.i.i.i66.preheader: ; preds = %for.body13 br i1 %min.iters.check94, label %for.body.i.i.i66.preheader33, label %vector.ph95 vector.ph95: ; preds = %for.body.i.i.i66.preheader - %n.mod.vf96 = and i64 %agg.tmp16.sroa.0.0.copyload, 3 - %n.vec97 = sub nuw nsw i64 %conv.i.i.i.i64, %n.mod.vf96 + %n.vec97 = and i64 %agg.tmp16.sroa.0.0.copyload, 4294967292 br label %vector.body100 vector.body100: ; preds = %vector.body100, %vector.ph95 @@ -74086,6 +74085,7 @@ vector.body100: ; preds = %vector.body100, %ve br i1 %49, label %middle.block92, label %vector.body100, !llvm.loop !1359 middle.block92: ; preds = %vector.body100 + %n.mod.vf96 = and i64 %agg.tmp16.sroa.0.0.copyload, 3 %bin.rdx107 = add <2 x i64> %48, %47 %50 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx107) %cmp.n99 = icmp eq i64 %n.mod.vf96, 0 @@ -74099,7 +74099,7 @@ for.body.i.i.i66.preheader33: ; preds = %middle.block92, %fo for.body.i.i.i66: ; preds = %for.body.i.i.i66.preheader33, %for.body.i.i.i66 %i.08.i.i.i67 = phi i64 [ %inc.i.i.i73, %for.body.i.i.i66 ], [ %i.08.i.i.i67.ph, %for.body.i.i.i66.preheader33 ] %length.07.i.i.i68 = phi i64 [ %add.i.i.i72, %for.body.i.i.i66 ], [ %length.07.i.i.i68.ph, %for.body.i.i.i66.preheader33 ] - %arrayidx.i.i.i69 = getelementptr inbounds i8, ptr %cond.i.i.i.i63, i64 %i.08.i.i.i67 + %arrayidx.i.i.i69 = getelementptr inbounds nuw i8, ptr %cond.i.i.i.i63, i64 %i.08.i.i.i67 %51 = load i8, ptr %arrayidx.i.i.i69, align 1, !tbaa !3 %cmp.i.i.i.i70 = icmp sgt i8 %51, -65 %conv.i.i.i71 = zext i1 %cmp.i.i.i.i70 to i64 diff --git a/bench/folly/optimized/File.cpp.ll b/bench/folly/optimized/File.cpp.ll index f43fa5c628..a4461097ba 100644 --- a/bench/folly/optimized/File.cpp.ll +++ b/bench/folly/optimized/File.cpp.ll @@ -4855,7 +4855,7 @@ for.body.preheader: ; preds = %while.end br i1 %21, label %for.cond.cleanup.loopexit.unr-lcssa, label %for.body.preheader.new for.body.preheader.new: ; preds = %for.body.preheader - %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter + %unroll_iter = and i64 %digits.coerce1, 2147483646 br label %for.body for.cond.cleanup.loopexit.unr-lcssa.loopexit: ; preds = %if.end22.1 @@ -4888,7 +4888,7 @@ if.then19.epil: ; preds = %for.body.epil if.end22.epil: ; preds = %if.then19.epil, %for.body.epil %out.addr.1.epil = phi ptr [ %incdec.ptr.epil, %if.then19.epil ], [ %out.addr.092.unr, %for.body.epil ] - %arrayidx.i68.epil = getelementptr inbounds i8, ptr %digits.coerce0, i64 %indvars.iv.unr + %arrayidx.i68.epil = getelementptr inbounds nuw i8, ptr %digits.coerce0, i64 %indvars.iv.unr %26 = load i8, ptr %arrayidx.i68.epil, align 1, !tbaa !31 %incdec.ptr26.epil = getelementptr inbounds nuw i8, ptr %out.addr.1.epil, i64 1 store i8 %26, ptr %out.addr.1.epil, align 1, !tbaa !31 diff --git a/bench/hyperscan/optimized/engine_hyperscan.cpp.ll b/bench/hyperscan/optimized/engine_hyperscan.cpp.ll index cea2496909..cb361f228a 100644 --- a/bench/hyperscan/optimized/engine_hyperscan.cpp.ll +++ b/bench/hyperscan/optimized/engine_hyperscan.cpp.ll @@ -2407,8 +2407,7 @@ for.body87.preheader106: ; preds = %middle.block760, %f br label %for.body87 vector.ph763: ; preds = %for.body87.preheader - %n.mod.vf764 = and i64 %0, 3 - %n.vec765 = sub nuw nsw i64 %conv59, %n.mod.vf764 + %n.vec765 = and i64 %0, 4294967292 br label %vector.body767 vector.body767: ; preds = %vector.body767, %vector.ph763 @@ -2427,6 +2426,7 @@ vector.body767: ; preds = %vector.body767, %ve br i1 %82, label %middle.block760, label %vector.body767, !llvm.loop !33 middle.block760: ; preds = %vector.body767 + %n.mod.vf764 = and i64 %0, 3 %cmp.n = icmp eq i64 %n.mod.vf764, 0 br i1 %cmp.n, label %invoke.cont97, label %for.body87.preheader106 @@ -2437,8 +2437,8 @@ lpad79: ; preds = %if.then.i.i.i.i.i45 for.body87: ; preds = %for.body87.preheader106, %for.body87 %indvars.iv706 = phi i64 [ %indvars.iv.next707, %for.body87 ], [ %indvars.iv706.ph, %for.body87.preheader106 ] - %add.ptr.i469 = getelementptr inbounds %struct.hs_expr_ext, ptr %ext.sroa.0.0.lcssa, i64 %indvars.iv706 - %add.ptr.i470 = getelementptr inbounds ptr, ptr %ext_ptr.sroa.0.0, i64 %indvars.iv706 + %add.ptr.i469 = getelementptr inbounds nuw %struct.hs_expr_ext, ptr %ext.sroa.0.0.lcssa, i64 %indvars.iv706 + %add.ptr.i470 = getelementptr inbounds nuw ptr, ptr %ext_ptr.sroa.0.0, i64 %indvars.iv706 store ptr %add.ptr.i469, ptr %add.ptr.i470, align 8 %indvars.iv.next707 = add nuw nsw i64 %indvars.iv706, 1 %exitcond710.not = icmp eq i64 %indvars.iv.next707, %conv59 diff --git a/bench/linux/optimized/sky2.ll b/bench/linux/optimized/sky2.ll index 249f9d5bd2..7a6c2572f2 100644 --- a/bench/linux/optimized/sky2.ll +++ b/bench/linux/optimized/sky2.ll @@ -10438,57 +10438,56 @@ define internal fastcc noundef range(i32 -12, 1) i32 @sky2_alloc_rx_skbs(ptr noc unreachable 14: ; preds = %1 - %15 = and i32 %7, -8 - %16 = sub i32 %15, %11 - %17 = load i32, ptr @copybreak, align 4 - %18 = tail call i32 @llvm.umax.i32(i32 %16, i32 %17) - %19 = tail call i32 @llvm.umax.i32(i32 %18, i32 14) - %20 = trunc i32 %19 to i16 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 166 - store i16 %20, ptr %21, align 2 - %22 = getelementptr inbounds nuw i8, ptr %0, i64 164 - %23 = load i16, ptr %22, align 4 - %24 = icmp eq i16 %23, 0 - br i1 %24, label %.loopexit, label %25 - -25: ; preds = %14 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 128 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 8 - br label %33 + %15 = and i32 %7, -268431368 + %16 = load i32, ptr @copybreak, align 4 + %17 = tail call i32 @llvm.umax.i32(i32 %15, i32 %16) + %18 = tail call i32 @llvm.umax.i32(i32 %17, i32 14) + %19 = trunc i32 %18 to i16 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 166 + store i16 %19, ptr %20, align 2 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 164 + %22 = load i16, ptr %21, align 4 + %23 = icmp eq i16 %22, 0 + br i1 %23, label %.loopexit, label %24 + +24: ; preds = %14 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 128 + %26 = getelementptr inbounds nuw i8, ptr %2, i64 8 + br label %32 -28: ; preds = %39 - %29 = add nuw nsw i64 %34, 1 - %30 = load i16, ptr %22, align 4 - %31 = zext i16 %30 to i64 - %32 = icmp samesign ult i64 %29, %31 - br i1 %32, label %33, label %.loopexit, !llvm.loop !63 - -33: ; preds = %28, %25 - %34 = phi i64 [ 0, %25 ], [ %29, %28 ] - %35 = load ptr, ptr %26, align 64 - %36 = getelementptr %struct.rx_ring_info, ptr %35, i64 %34 - %37 = tail call fastcc ptr @sky2_rx_alloc(ptr noundef %0, i32 noundef 3264) - store ptr %37, ptr %36, align 8 - %38 = icmp eq ptr %37, null - br i1 %38, label %.loopexit, label %39 - -39: ; preds = %33 - %40 = load ptr, ptr %27, align 8 - %41 = load i16, ptr %21, align 2 - %42 = zext i16 %41 to i32 - %43 = tail call fastcc i32 @sky2_rx_map_skb(ptr noundef %40, ptr noundef %36, i32 noundef %42) - %44 = icmp eq i32 %43, 0 - br i1 %44, label %28, label %45 - -45: ; preds = %39 - %46 = load ptr, ptr %36, align 8 - tail call void @consume_skb(ptr noundef %46) #23 - store ptr null, ptr %36, align 8 +27: ; preds = %38 + %28 = add nuw nsw i64 %33, 1 + %29 = load i16, ptr %21, align 4 + %30 = zext i16 %29 to i64 + %31 = icmp samesign ult i64 %28, %30 + br i1 %31, label %32, label %.loopexit, !llvm.loop !63 + +32: ; preds = %27, %24 + %33 = phi i64 [ 0, %24 ], [ %28, %27 ] + %34 = load ptr, ptr %25, align 64 + %35 = getelementptr %struct.rx_ring_info, ptr %34, i64 %33 + %36 = tail call fastcc ptr @sky2_rx_alloc(ptr noundef %0, i32 noundef 3264) + store ptr %36, ptr %35, align 8 + %37 = icmp eq ptr %36, null + br i1 %37, label %.loopexit, label %38 + +38: ; preds = %32 + %39 = load ptr, ptr %26, align 8 + %40 = load i16, ptr %20, align 2 + %41 = zext i16 %40 to i32 + %42 = tail call fastcc i32 @sky2_rx_map_skb(ptr noundef %39, ptr noundef %35, i32 noundef %41) + %43 = icmp eq i32 %42, 0 + br i1 %43, label %27, label %44 + +44: ; preds = %38 + %45 = load ptr, ptr %35, align 8 + tail call void @consume_skb(ptr noundef %45) #23 + store ptr null, ptr %35, align 8 br label %.loopexit -.loopexit: ; preds = %33, %28, %45, %14 - %47 = phi i32 [ -12, %45 ], [ 0, %14 ], [ 0, %28 ], [ -12, %33 ] - ret i32 %47 +.loopexit: ; preds = %32, %27, %44, %14 + %46 = phi i32 [ -12, %44 ], [ 0, %14 ], [ 0, %27 ], [ -12, %32 ] + ret i32 %46 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid diff --git a/bench/minetest/optimized/CAttributes.cpp.ll b/bench/minetest/optimized/CAttributes.cpp.ll index e91b257dcc..5f1e792295 100644 --- a/bench/minetest/optimized/CAttributes.cpp.ll +++ b/bench/minetest/optimized/CAttributes.cpp.ll @@ -771,7 +771,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %5, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -811,10 +811,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %14 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !36 %15 = load ptr, ptr %Name.i, align 8, !tbaa !27 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %15, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %15, i64 %indvars.iv.i.epil store i8 %14, ptr %arrayidx.i.i.epil, align 1, !tbaa !36 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -1052,7 +1052,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %5, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -1092,10 +1092,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %14 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !36 %15 = load ptr, ptr %Name.i, align 8, !tbaa !27 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %15, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %15, i64 %indvars.iv.i.epil store i8 %14, ptr %arrayidx.i.i.epil, align 1, !tbaa !36 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -1333,7 +1333,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %5, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -1373,10 +1373,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %14 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !36 %15 = load ptr, ptr %Name.i, align 8, !tbaa !27 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %15, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %15, i64 %indvars.iv.i.epil store i8 %14, ptr %arrayidx.i.i.epil, align 1, !tbaa !36 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CFileList.cpp.ll b/bench/minetest/optimized/CFileList.cpp.ll index 70c42a087d..71bf184274 100644 --- a/bench/minetest/optimized/CFileList.cpp.ll +++ b/bench/minetest/optimized/CFileList.cpp.ll @@ -2129,7 +2129,7 @@ for.body.i.i51.preheader: ; preds = %if.then.i50 br i1 %114, label %_ZN3irr4core22deletePathFromFilenameERNS0_6stringIcEE.exit.loopexit.unr-lcssa, label %for.body.i.i51.preheader.new for.body.i.i51.preheader.new: ; preds = %for.body.i.i51.preheader - %unroll_iter = sub nuw nsw i64 %conv.i19.i, %xtraiter + %unroll_iter = and i64 %call.i.i.i, 4294967292 br label %for.body.i.i51 for.body.i.i51: ; preds = %for.body.i.i51, %for.body.i.i51.preheader.new @@ -2169,10 +2169,10 @@ _ZN3irr4core22deletePathFromFilenameERNS0_6stringIcEE.exit.loopexit.unr-lcssa: ; for.body.i.i51.epil: ; preds = %_ZN3irr4core22deletePathFromFilenameERNS0_6stringIcEE.exit.loopexit.unr-lcssa, %for.body.i.i51.epil %indvars.iv.i.i.epil = phi i64 [ %indvars.iv.next.i.i.epil, %for.body.i.i51.epil ], [ %indvars.iv.i.i.unr, %_ZN3irr4core22deletePathFromFilenameERNS0_6stringIcEE.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i51.epil ], [ 0, %_ZN3irr4core22deletePathFromFilenameERNS0_6stringIcEE.exit.loopexit.unr-lcssa ] - %arrayidx.i.i52.epil = getelementptr inbounds i8, ptr %incdec.ptr6.i, i64 %indvars.iv.i.i.epil + %arrayidx.i.i52.epil = getelementptr inbounds nuw i8, ptr %incdec.ptr6.i, i64 %indvars.iv.i.i.epil %123 = load i8, ptr %arrayidx.i.i52.epil, align 1, !tbaa !25 %124 = load ptr, ptr %entry2, align 8, !tbaa !3 - %arrayidx.i.i.i53.epil = getelementptr inbounds i8, ptr %124, i64 %indvars.iv.i.i.epil + %arrayidx.i.i.i53.epil = getelementptr inbounds nuw i8, ptr %124, i64 %indvars.iv.i.i.epil store i8 %123, ptr %arrayidx.i.i.i53.epil, align 1, !tbaa !25 %indvars.iv.next.i.i.epil = add nuw nsw i64 %indvars.iv.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -3065,7 +3065,7 @@ for.body.i.i38.preheader: ; preds = %if.then.i37 br i1 %113, label %if.end24.loopexit.unr-lcssa, label %for.body.i.i38.preheader.new for.body.i.i38.preheader.new: ; preds = %for.body.i.i38.preheader - %unroll_iter = sub nuw nsw i64 %conv.i19.i, %xtraiter + %unroll_iter = and i64 %call.i.i.i, 4294967292 br label %for.body.i.i38 for.body.i.i38: ; preds = %for.body.i.i38, %for.body.i.i38.preheader.new @@ -3105,10 +3105,10 @@ if.end24.loopexit.unr-lcssa: ; preds = %for.body.i.i38, %fo for.body.i.i38.epil: ; preds = %if.end24.loopexit.unr-lcssa, %for.body.i.i38.epil %indvars.iv.i.i.epil = phi i64 [ %indvars.iv.next.i.i.epil, %for.body.i.i38.epil ], [ %indvars.iv.i.i.unr, %if.end24.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i38.epil ], [ 0, %if.end24.loopexit.unr-lcssa ] - %arrayidx.i.i39.epil = getelementptr inbounds i8, ptr %incdec.ptr6.i, i64 %indvars.iv.i.i.epil + %arrayidx.i.i39.epil = getelementptr inbounds nuw i8, ptr %incdec.ptr6.i, i64 %indvars.iv.i.i.epil %122 = load i8, ptr %arrayidx.i.i39.epil, align 1, !tbaa !25 %123 = load ptr, ptr %FullName.i, align 8, !tbaa !3 - %arrayidx.i.i.i40.epil = getelementptr inbounds i8, ptr %123, i64 %indvars.iv.i.i.epil + %arrayidx.i.i.i40.epil = getelementptr inbounds nuw i8, ptr %123, i64 %indvars.iv.i.i.epil store i8 %122, ptr %arrayidx.i.i.i40.epil, align 1, !tbaa !25 %indvars.iv.next.i.i.epil = add nuw nsw i64 %indvars.iv.i.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CFileSystem.cpp.ll b/bench/minetest/optimized/CFileSystem.cpp.ll index 2cd2d6a689..8a767f846d 100644 --- a/bench/minetest/optimized/CFileSystem.cpp.ll +++ b/bench/minetest/optimized/CFileSystem.cpp.ll @@ -1878,7 +1878,7 @@ for.body.i.preheader: ; preds = %if.then8 br i1 %1, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -1918,10 +1918,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %tmpPath.0.lcssa, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %tmpPath.0.lcssa, i64 %indvars.iv.i.epil %10 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !13 %11 = load ptr, ptr %WorkingDirectory, align 8, !tbaa !44 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %11, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %11, i64 %indvars.iv.i.epil store i8 %10, ptr %arrayidx.i.i.epil, align 1, !tbaa !13 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -2162,7 +2162,7 @@ for.body.i.i47.preheader: ; preds = %if.else br i1 %14, label %cleanup.loopexit.unr-lcssa, label %for.body.i.i47.preheader.new for.body.i.i47.preheader.new: ; preds = %for.body.i.i47.preheader - %unroll_iter113 = sub nuw nsw i64 %conv.i.i45, %xtraiter110 + %unroll_iter113 = and i64 %call.i.i.i44, 4294967292 br label %for.body.i.i47 for.body.i.i47: ; preds = %for.body.i.i47, %for.body.i.i47.preheader.new @@ -2223,7 +2223,7 @@ for.body.i.i61.preheader: ; preds = %if.end.i.i57 br i1 %27, label %_ZN3irr4core6stringIcEC2IcEEPKT_.exit67.loopexit.unr-lcssa, label %for.body.i.i61.preheader.new for.body.i.i61.preheader.new: ; preds = %for.body.i.i61.preheader - %unroll_iter108 = sub nuw nsw i64 %conv.i.i59, %xtraiter105 + %unroll_iter108 = and i64 %call.i.i.i58, 4294967292 br label %for.body.i.i61 for.body.i.i61: ; preds = %for.body.i.i61, %for.body.i.i61.preheader.new @@ -2263,10 +2263,10 @@ _ZN3irr4core6stringIcEC2IcEEPKT_.exit67.loopexit.unr-lcssa: ; preds = %for.body. for.body.i.i61.epil: ; preds = %_ZN3irr4core6stringIcEC2IcEEPKT_.exit67.loopexit.unr-lcssa, %for.body.i.i61.epil %indvars.iv.i.i62.epil = phi i64 [ %indvars.iv.next.i.i65.epil, %for.body.i.i61.epil ], [ %indvars.iv.i.i62.unr, %_ZN3irr4core6stringIcEC2IcEEPKT_.exit67.loopexit.unr-lcssa ] %epil.iter106 = phi i64 [ %epil.iter106.next, %for.body.i.i61.epil ], [ 0, %_ZN3irr4core6stringIcEC2IcEEPKT_.exit67.loopexit.unr-lcssa ] - %arrayidx.i.i63.epil = getelementptr inbounds i8, ptr %call3, i64 %indvars.iv.i.i62.epil + %arrayidx.i.i63.epil = getelementptr inbounds nuw i8, ptr %call3, i64 %indvars.iv.i.i62.epil %36 = load i8, ptr %arrayidx.i.i63.epil, align 1, !tbaa !13 %37 = load ptr, ptr %ref.tmp14, align 8, !tbaa !44 - %arrayidx.i.i.i64.epil = getelementptr inbounds i8, ptr %37, i64 %indvars.iv.i.i62.epil + %arrayidx.i.i.i64.epil = getelementptr inbounds nuw i8, ptr %37, i64 %indvars.iv.i.i62.epil store i8 %36, ptr %arrayidx.i.i.i64.epil, align 1, !tbaa !13 %indvars.iv.next.i.i65.epil = add nuw nsw i64 %indvars.iv.i.i62.epil, 1 %epil.iter106.next = add nuw nsw i64 %epil.iter106, 1 @@ -2330,7 +2330,7 @@ for.body.i.i85.preheader: ; preds = %if.end.i.i81 br i1 %43, label %cleanup.loopexit104.unr-lcssa, label %for.body.i.i85.preheader.new for.body.i.i85.preheader.new: ; preds = %for.body.i.i85.preheader - %unroll_iter = sub nuw nsw i64 %conv.i.i83, %xtraiter + %unroll_iter = and i64 %call.i.i.i82, 4294967292 br label %for.body.i.i85 for.body.i.i85: ; preds = %for.body.i.i85, %for.body.i.i85.preheader.new @@ -2370,10 +2370,10 @@ cleanup.loopexit.unr-lcssa: ; preds = %for.body.i.i47, %fo for.body.i.i47.epil: ; preds = %cleanup.loopexit.unr-lcssa, %for.body.i.i47.epil %indvars.iv.i.i48.epil = phi i64 [ %indvars.iv.next.i.i51.epil, %for.body.i.i47.epil ], [ %indvars.iv.i.i48.unr, %cleanup.loopexit.unr-lcssa ] %epil.iter111 = phi i64 [ %epil.iter111.next, %for.body.i.i47.epil ], [ 0, %cleanup.loopexit.unr-lcssa ] - %arrayidx.i.i49.epil = getelementptr inbounds i8, ptr %fpath, i64 %indvars.iv.i.i48.epil + %arrayidx.i.i49.epil = getelementptr inbounds nuw i8, ptr %fpath, i64 %indvars.iv.i.i48.epil %52 = load i8, ptr %arrayidx.i.i49.epil, align 1, !tbaa !13 %53 = load ptr, ptr %agg.result, align 8, !tbaa !44 - %arrayidx.i.i.i50.epil = getelementptr inbounds i8, ptr %53, i64 %indvars.iv.i.i48.epil + %arrayidx.i.i.i50.epil = getelementptr inbounds nuw i8, ptr %53, i64 %indvars.iv.i.i48.epil store i8 %52, ptr %arrayidx.i.i.i50.epil, align 1, !tbaa !13 %indvars.iv.next.i.i51.epil = add nuw nsw i64 %indvars.iv.i.i48.epil, 1 %epil.iter111.next = add nuw nsw i64 %epil.iter111, 1 @@ -2388,10 +2388,10 @@ cleanup.loopexit104.unr-lcssa: ; preds = %for.body.i.i85, %fo for.body.i.i85.epil: ; preds = %cleanup.loopexit104.unr-lcssa, %for.body.i.i85.epil %indvars.iv.i.i86.epil = phi i64 [ %indvars.iv.next.i.i89.epil, %for.body.i.i85.epil ], [ %indvars.iv.i.i86.unr, %cleanup.loopexit104.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.i85.epil ], [ 0, %cleanup.loopexit104.unr-lcssa ] - %arrayidx.i.i87.epil = getelementptr inbounds i8, ptr %call3, i64 %indvars.iv.i.i86.epil + %arrayidx.i.i87.epil = getelementptr inbounds nuw i8, ptr %call3, i64 %indvars.iv.i.i86.epil %54 = load i8, ptr %arrayidx.i.i87.epil, align 1, !tbaa !13 %55 = load ptr, ptr %agg.result, align 8, !tbaa !44 - %arrayidx.i.i.i88.epil = getelementptr inbounds i8, ptr %55, i64 %indvars.iv.i.i86.epil + %arrayidx.i.i.i88.epil = getelementptr inbounds nuw i8, ptr %55, i64 %indvars.iv.i.i86.epil store i8 %54, ptr %arrayidx.i.i.i88.epil, align 1, !tbaa !13 %indvars.iv.next.i.i89.epil = add nuw nsw i64 %indvars.iv.i.i86.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUIButton.cpp.ll b/bench/minetest/optimized/CGUIButton.cpp.ll index 80ff151e5e..9ddc5e1b3c 100644 --- a/bench/minetest/optimized/CGUIButton.cpp.ll +++ b/bench/minetest/optimized/CGUIButton.cpp.ll @@ -2069,8 +2069,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -2088,23 +2087,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %142, label %middle.block, label %vector.body, !llvm.loop !93 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %143 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %143, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.i.i.prol - %144 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %135, i64 %indvars.iv.i.i.prol - store i32 %144, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !91 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %129, i64 %indvars.iv.i.i.prol + %143 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %135, i64 %indvars.iv.i.i.prol + store i32 %143, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !91 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -2112,31 +2111,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %145 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %146 = icmp ugt i64 %145, -4 - br i1 %146, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i + %144 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %145 = icmp ugt i64 %144, -4 + br i1 %145, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.i.i - %147 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !91 + %146 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !91 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %135, i64 %indvars.iv.i.i - store i32 %147, ptr %arrayidx.i.i.i, align 4, !tbaa !91 + store i32 %146, ptr %arrayidx.i.i.i, align 4, !tbaa !91 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i - %148 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !91 + %147 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !91 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %135, i64 %indvars.iv.next.i.i - store i32 %148, ptr %arrayidx.i.i.i.1, align 4, !tbaa !91 + store i32 %147, ptr %arrayidx.i.i.i.1, align 4, !tbaa !91 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i.1 - %149 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !91 + %148 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !91 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %135, i64 %indvars.iv.next.i.i.1 - store i32 %149, ptr %arrayidx.i.i.i.2, align 4, !tbaa !91 + store i32 %148, ptr %arrayidx.i.i.i.2, align 4, !tbaa !91 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i.2 - %150 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !91 + %149 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !91 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %135, i64 %indvars.iv.next.i.i.2 - store i32 %150, ptr %arrayidx.i.i.i.3, align 4, !tbaa !91 + store i32 %149, ptr %arrayidx.i.i.i.3, align 4, !tbaa !91 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i, !llvm.loop !98 @@ -2144,24 +2143,24 @@ for.body.i.i: ; preds = %for.body.i.i.prol.l _ZN3irr4core6stringIwEC2IwEEPKT_.exit: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %if.end.i.i, %_ZN3irr4core6stringIwE5clearEb.exit.i.i %vtable145 = load ptr, ptr %this, align 8, !tbaa !3 %vfn146 = getelementptr inbounds nuw i8, ptr %vtable145, i64 328 - %151 = load ptr, ptr %vfn146, align 8 - %call147 = call i32 %151(ptr noundef nonnull align 8 dereferenceable(651) %this) #17 + %150 = load ptr, ptr %vfn146, align 8 + %call147 = call i32 %150(ptr noundef nonnull align 8 dereferenceable(651) %this) #17 %AbsoluteClippingRect148 = getelementptr inbounds nuw i8, ptr %this, i64 80 %vtable150 = load ptr, ptr %call123, align 8, !tbaa !3 - %152 = load ptr, ptr %vtable150, align 8 - call void %152(ptr noundef nonnull align 8 dereferenceable(8) %call123, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp142, ptr noundef nonnull align 4 dereferenceable(16) %rect, i32 %call147, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %AbsoluteClippingRect148) #17 - %153 = load ptr, ptr %ref.tmp142, align 8, !tbaa !89 - %cmp.i.i.i.i = icmp eq ptr %153, %131 + %151 = load ptr, ptr %vtable150, align 8 + call void %151(ptr noundef nonnull align 8 dereferenceable(8) %call123, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp142, ptr noundef nonnull align 4 dereferenceable(16) %rect, i32 %call147, i1 noundef zeroext true, i1 noundef zeroext true, ptr noundef nonnull %AbsoluteClippingRect148) #17 + %152 = load ptr, ptr %ref.tmp142, align 8, !tbaa !89 + %cmp.i.i.i.i = icmp eq ptr %152, %131 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - %154 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !88 - %cmp3.i.i.i.i = icmp ult i64 %154, 4 + %153 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !88 + %cmp3.i.i.i.i = icmp ult i64 %153, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - call void @_ZdlPv(ptr noundef %153) #18 + call void @_ZdlPv(ptr noundef %152) #18 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i @@ -2175,8 +2174,8 @@ if.end152: ; preds = %_ZN3irr4core6string if.end153: ; preds = %if.end152, %if.end117 %vtable.i337 = load ptr, ptr %this, align 8, !tbaa !3 %vfn.i338 = getelementptr inbounds nuw i8, ptr %vtable.i337, i64 104 - %155 = load ptr, ptr %vfn.i338, align 8 - %call.i339 = call noundef zeroext i1 %155(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 + %154 = load ptr, ptr %vfn.i338, align 8 + %call.i339 = call noundef zeroext i1 %154(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 br i1 %call.i339, label %if.then.i340, label %return if.then.i340: ; preds = %if.end153 @@ -2188,11 +2187,11 @@ if.then.i340: ; preds = %if.end153 for.body.i: ; preds = %if.then.i340, %for.body.i %__begin3.sroa.0.015.i = phi ptr [ %__begin3.sroa.0.0.i, %for.body.i ], [ %__begin3.sroa.0.013.i, %if.then.i340 ] %_M_storage.i.i.i = getelementptr inbounds nuw i8, ptr %__begin3.sroa.0.015.i, i64 16 - %156 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !53 - %vtable7.i = load ptr, ptr %156, align 8, !tbaa !3 + %155 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !53 + %vtable7.i = load ptr, ptr %155, align 8, !tbaa !3 %vfn8.i = getelementptr inbounds nuw i8, ptr %vtable7.i, i64 80 - %157 = load ptr, ptr %vfn8.i, align 8 - call void %157(ptr noundef nonnull align 8 dereferenceable(308) %156) #17 + %156 = load ptr, ptr %vfn8.i, align 8 + call void %156(ptr noundef nonnull align 8 dereferenceable(308) %155) #17 %__begin3.sroa.0.0.i = load ptr, ptr %__begin3.sroa.0.015.i, align 8, !tbaa !57 %cmp.i.not.i = icmp eq ptr %__begin3.sroa.0.0.i, %Children.i br i1 %cmp.i.not.i, label %return, label %for.body.i @@ -3235,8 +3234,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3254,23 +3252,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !118 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !91 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !91 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3278,31 +3276,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !91 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !91 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !91 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !91 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !91 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !91 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !91 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !91 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !91 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !91 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !91 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !91 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !91 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !91 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !91 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !91 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !120 @@ -3371,8 +3369,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3390,23 +3387,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !121 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !91 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !91 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !91 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3414,31 +3411,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !91 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !91 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !91 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !91 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !91 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !91 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !91 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !91 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !91 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !91 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !91 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !91 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !91 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !91 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !91 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !91 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !123 @@ -3683,7 +3680,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -3723,10 +3720,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !66 %13 = load ptr, ptr %Name, align 8, !tbaa !126 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !66 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUICheckBox.cpp.ll b/bench/minetest/optimized/CGUICheckBox.cpp.ll index 4df283753b..e8ec972f44 100644 --- a/bench/minetest/optimized/CGUICheckBox.cpp.ll +++ b/bench/minetest/optimized/CGUICheckBox.cpp.ll @@ -877,8 +877,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -896,23 +895,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %47, label %middle.block, label %vector.body, !llvm.loop !72 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %48 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %48, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.i.i.prol - %49 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.i.i.prol - store i32 %49, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !70 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %34, i64 %indvars.iv.i.i.prol + %48 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %40, i64 %indvars.iv.i.i.prol + store i32 %48, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !70 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -920,31 +919,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %50 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %51 = icmp ugt i64 %50, -4 - br i1 %51, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i + %49 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %50 = icmp ugt i64 %49, -4 + br i1 %50, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.i.i - %52 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !70 + %51 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !70 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.i.i - store i32 %52, ptr %arrayidx.i.i.i, align 4, !tbaa !70 + store i32 %51, ptr %arrayidx.i.i.i, align 4, !tbaa !70 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next.i.i - %53 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !70 + %52 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !70 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next.i.i - store i32 %53, ptr %arrayidx.i.i.i.1, align 4, !tbaa !70 + store i32 %52, ptr %arrayidx.i.i.i.1, align 4, !tbaa !70 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next.i.i.1 - %54 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !70 + %53 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !70 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next.i.i.1 - store i32 %54, ptr %arrayidx.i.i.i.2, align 4, !tbaa !70 + store i32 %53, ptr %arrayidx.i.i.i.2, align 4, !tbaa !70 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next.i.i.2 - %55 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !70 + %54 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !70 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next.i.i.2 - store i32 %55, ptr %arrayidx.i.i.i.3, align 4, !tbaa !70 + store i32 %54, ptr %arrayidx.i.i.i.3, align 4, !tbaa !70 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i, !llvm.loop !77 @@ -952,27 +951,27 @@ for.body.i.i: ; preds = %for.body.i.i.prol.l _ZN3irr4core6stringIwEC2IwEEPKT_.exit: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %if.end.i.i, %_ZN3irr4core6stringIwE5clearEb.exit.i.i %vtable90 = load ptr, ptr %this, align 8, !tbaa !3 %vfn91 = getelementptr inbounds nuw i8, ptr %vtable90, i64 144 - %56 = load ptr, ptr %vfn91, align 8 - %call92 = call noundef zeroext i1 %56(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 + %55 = load ptr, ptr %vfn91, align 8 + %call92 = call noundef zeroext i1 %55(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 %cond93 = select i1 %call92, i32 8, i32 9 %vtable94 = load ptr, ptr %call, align 8, !tbaa !3 - %57 = load ptr, ptr %vtable94, align 8 - %call96 = call i32 %57(ptr noundef nonnull align 8 dereferenceable(8) %call, i32 noundef %cond93) #17 + %56 = load ptr, ptr %vtable94, align 8 + %call96 = call i32 %56(ptr noundef nonnull align 8 dereferenceable(8) %call, i32 noundef %cond93) #17 %vtable100 = load ptr, ptr %call84, align 8, !tbaa !3 - %58 = load ptr, ptr %vtable100, align 8 - call void %58(ptr noundef nonnull align 8 dereferenceable(8) %call84, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(16) %checkRect, i32 %call96, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %AbsoluteClippingRect62) #17 - %59 = load ptr, ptr %ref.tmp, align 8, !tbaa !68 - %cmp.i.i.i.i = icmp eq ptr %59, %36 + %57 = load ptr, ptr %vtable100, align 8 + call void %57(ptr noundef nonnull align 8 dereferenceable(8) %call84, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(16) %checkRect, i32 %call96, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %AbsoluteClippingRect62) #17 + %58 = load ptr, ptr %ref.tmp, align 8, !tbaa !68 + %cmp.i.i.i.i = icmp eq ptr %58, %36 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - %60 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !67 - %cmp3.i.i.i.i = icmp ult i64 %60, 4 + %59 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !67 + %cmp3.i.i.i.i = icmp ult i64 %59, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - call void @_ZdlPv(ptr noundef %59) #18 + call void @_ZdlPv(ptr noundef %58) #18 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i @@ -987,8 +986,8 @@ if.end103: ; preds = %_ZN3irr4core6string if.end104: ; preds = %if.end103, %if.end %vtable.i = load ptr, ptr %this, align 8, !tbaa !3 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 104 - %61 = load ptr, ptr %vfn.i, align 8 - %call.i = call noundef zeroext i1 %61(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 + %60 = load ptr, ptr %vfn.i, align 8 + %call.i = call noundef zeroext i1 %60(ptr noundef nonnull align 8 dereferenceable(308) %this) #17 br i1 %call.i, label %if.then.i, label %return if.then.i: ; preds = %if.end104 @@ -1000,11 +999,11 @@ if.then.i: ; preds = %if.end104 for.body.i: ; preds = %if.then.i, %for.body.i %__begin3.sroa.0.015.i = phi ptr [ %__begin3.sroa.0.0.i, %for.body.i ], [ %__begin3.sroa.0.013.i, %if.then.i ] %_M_storage.i.i.i = getelementptr inbounds nuw i8, ptr %__begin3.sroa.0.015.i, i64 16 - %62 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !49 - %vtable7.i = load ptr, ptr %62, align 8, !tbaa !3 + %61 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !49 + %vtable7.i = load ptr, ptr %61, align 8, !tbaa !3 %vfn8.i = getelementptr inbounds nuw i8, ptr %vtable7.i, i64 80 - %63 = load ptr, ptr %vfn8.i, align 8 - call void %63(ptr noundef nonnull align 8 dereferenceable(308) %62) #17 + %62 = load ptr, ptr %vfn8.i, align 8 + call void %62(ptr noundef nonnull align 8 dereferenceable(308) %61) #17 %__begin3.sroa.0.0.i = load ptr, ptr %__begin3.sroa.0.015.i, align 8, !tbaa !78 %cmp.i.not.i = icmp eq ptr %__begin3.sroa.0.0.i, %Children.i br i1 %cmp.i.not.i, label %return, label %for.body.i @@ -1643,8 +1642,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1662,23 +1660,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !98 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !70 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !70 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1686,31 +1684,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !70 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !70 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !70 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !70 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !70 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !70 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !70 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !70 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !70 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !70 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !70 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !70 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !70 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !70 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !70 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !70 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !100 @@ -1779,8 +1777,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1798,23 +1795,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !101 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !70 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !70 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !70 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1822,31 +1819,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !70 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !70 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !70 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !70 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !70 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !70 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !70 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !70 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !70 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !70 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !70 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !70 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !70 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !70 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !70 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !70 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !103 @@ -2091,7 +2088,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -2131,10 +2128,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !56 %13 = load ptr, ptr %Name, align 8, !tbaa !106 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !56 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUIComboBox.cpp.ll b/bench/minetest/optimized/CGUIComboBox.cpp.ll index 2e2b58a6eb..9b943ba531 100644 --- a/bench/minetest/optimized/CGUIComboBox.cpp.ll +++ b/bench/minetest/optimized/CGUIComboBox.cpp.ll @@ -1560,8 +1560,7 @@ for.body.lr.ph.i.i.i: ; preds = %if.end.i.i.i br i1 %or.cond, label %for.body.i.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i.i - %n.mod.vf = and i64 %call.i.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1579,23 +1578,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !97 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit, label %for.body.i.i.i.preheader for.body.i.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i.i %indvars.iv.i.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i.i.i, %indvars.iv.i.i.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.i.prol.loopexit, label %for.body.i.i.i.prol for.body.i.i.i.prol: ; preds = %for.body.i.i.i.preheader, %for.body.i.i.i.prol %indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %for.body.i.i.i.prol ], [ %indvars.iv.i.i.i.ph, %for.body.i.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.i.prol ], [ 0, %for.body.i.i.i.preheader ] - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i.i.prol - %13 = load i32, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !95 - %arrayidx.i.i.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.i.i.prol - store i32 %13, ptr %arrayidx.i.i.i.i.prol, align 4, !tbaa !95 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.i.i.prol + %12 = load i32, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !95 + %arrayidx.i.i.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.i.i.prol + store i32 %12, ptr %arrayidx.i.i.i.i.prol, align 4, !tbaa !95 %indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1603,31 +1602,31 @@ for.body.i.i.i.prol: ; preds = %for.body.i.i.i.preh for.body.i.i.i.prol.loopexit: ; preds = %for.body.i.i.i.prol, %for.body.i.i.i.preheader %indvars.iv.i.i.i.unr = phi i64 [ %indvars.iv.i.i.i.ph, %for.body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %for.body.i.i.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.i.i.ph, %conv.i.i.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit, label %for.body.i.i.i + %13 = sub nsw i64 %indvars.iv.i.i.i.ph, %conv.i.i.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit, label %for.body.i.i.i for.body.i.i.i: ; preds = %for.body.i.i.i.prol.loopexit, %for.body.i.i.i %indvars.iv.i.i.i = phi i64 [ %indvars.iv.next.i.i.i.3, %for.body.i.i.i ], [ %indvars.iv.i.i.i.unr, %for.body.i.i.i.prol.loopexit ] %arrayidx.i.i.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i.i - %16 = load i32, ptr %arrayidx.i.i.i, align 4, !tbaa !95 + %15 = load i32, ptr %arrayidx.i.i.i, align 4, !tbaa !95 %arrayidx.i.i.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.i.i - store i32 %16, ptr %arrayidx.i.i.i.i, align 4, !tbaa !95 + store i32 %15, ptr %arrayidx.i.i.i.i, align 4, !tbaa !95 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.i - %17 = load i32, ptr %arrayidx.i.i.i.1, align 4, !tbaa !95 + %16 = load i32, ptr %arrayidx.i.i.i.1, align 4, !tbaa !95 %arrayidx.i.i.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.i.i - store i32 %17, ptr %arrayidx.i.i.i.i.1, align 4, !tbaa !95 + store i32 %16, ptr %arrayidx.i.i.i.i.1, align 4, !tbaa !95 %indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.i.i.i, 2 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.i.1 - %18 = load i32, ptr %arrayidx.i.i.i.2, align 4, !tbaa !95 + %17 = load i32, ptr %arrayidx.i.i.i.2, align 4, !tbaa !95 %arrayidx.i.i.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.i.i.1 - store i32 %18, ptr %arrayidx.i.i.i.i.2, align 4, !tbaa !95 + store i32 %17, ptr %arrayidx.i.i.i.i.2, align 4, !tbaa !95 %indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.i.i.i, 3 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.i.2 - %19 = load i32, ptr %arrayidx.i.i.i.3, align 4, !tbaa !95 + %18 = load i32, ptr %arrayidx.i.i.i.3, align 4, !tbaa !95 %arrayidx.i.i.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.i.i.2 - store i32 %19, ptr %arrayidx.i.i.i.i.3, align 4, !tbaa !95 + store i32 %18, ptr %arrayidx.i.i.i.i.3, align 4, !tbaa !95 %indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.i.i.i, 4 %exitcond.not.i.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.i.3, %conv.i.i.i br i1 %exitcond.not.i.i.i.3, label %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit, label %for.body.i.i.i, !llvm.loop !102 @@ -1636,76 +1635,76 @@ _ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit: ; preds = %for.body.i.i.i, %f %Data.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 32 store i32 %data, ptr %Data.i, align 8, !tbaa !89 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 352 - %20 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !58 + %19 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !58 %_M_end_of_storage.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 360 - %21 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !103 - %cmp.not.i.i.i = icmp eq ptr %20, %21 + %20 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !103 + %cmp.not.i.i.i = icmp eq ptr %19, %20 br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %if.then.i.i.i3 if.then.i.i.i3: ; preds = %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit - %22 = getelementptr inbounds nuw i8, ptr %20, i64 16 - store ptr %22, ptr %20, align 8, !tbaa !94 - %_M_string_length.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %19, i64 16 + store ptr %21, ptr %19, align 8, !tbaa !94 + %_M_string_length.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 8 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i.i, align 8, !tbaa !93 - store i32 0, ptr %22, align 4, !tbaa !95 - %cmp.i.i.i.i.i.i.i.i = icmp eq ptr %20, %ref.tmp + store i32 0, ptr %21, align 4, !tbaa !95 + %cmp.i.i.i.i.i.i.i.i = icmp eq ptr %19, %ref.tmp br i1 %cmp.i.i.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaIN3irr3gui12CGUIComboBox10SComboDataEEE9constructIS3_JS3_EEEvRS4_PT_DpOT0_.exit.i.i.i, label %if.end.i.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i3 - call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 + call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #18 %.pre.i.i.i = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !83 %.pre = load i32, ptr %Data.i, align 8, !tbaa !89 br label %_ZNSt16allocator_traitsISaIN3irr3gui12CGUIComboBox10SComboDataEEE9constructIS3_JS3_EEEvRS4_PT_DpOT0_.exit.i.i.i _ZNSt16allocator_traitsISaIN3irr3gui12CGUIComboBox10SComboDataEEE9constructIS3_JS3_EEEvRS4_PT_DpOT0_.exit.i.i.i: ; preds = %if.end.i.i.i.i.i.i.i.i, %if.then.i.i.i3 - %23 = phi i32 [ %data, %if.then.i.i.i3 ], [ %.pre, %if.end.i.i.i.i.i.i.i.i ] - %24 = phi ptr [ %ref.tmp, %if.then.i.i.i3 ], [ %.pre.i.i.i, %if.end.i.i.i.i.i.i.i.i ] - %Data.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 32 - store i32 %23, ptr %Data.i.i.i.i.i.i, align 8, !tbaa !89 - %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %24, i64 40 + %22 = phi i32 [ %data, %if.then.i.i.i3 ], [ %.pre, %if.end.i.i.i.i.i.i.i.i ] + %23 = phi ptr [ %ref.tmp, %if.then.i.i.i3 ], [ %.pre.i.i.i, %if.end.i.i.i.i.i.i.i.i ] + %Data.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 32 + store i32 %22, ptr %Data.i.i.i.i.i.i, align 8, !tbaa !89 + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %23, i64 40 store ptr %incdec.ptr.i.i.i, ptr %_M_finish.i.i.i, align 8, !tbaa !83 br label %_ZN3irr4core5arrayINS_3gui12CGUIComboBox10SComboDataEE9push_backEOS4_.exit if.else.i.i.i: ; preds = %_ZN3irr3gui12CGUIComboBox10SComboDataC2EPKwj.exit - call void @_ZNSt6vectorIN3irr3gui12CGUIComboBox10SComboDataESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %Items, ptr %20, ptr noundef nonnull align 8 dereferenceable(36) %ref.tmp) + call void @_ZNSt6vectorIN3irr3gui12CGUIComboBox10SComboDataESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %Items, ptr %19, ptr noundef nonnull align 8 dereferenceable(36) %ref.tmp) br label %_ZN3irr4core5arrayINS_3gui12CGUIComboBox10SComboDataEE9push_backEOS4_.exit _ZN3irr4core5arrayINS_3gui12CGUIComboBox10SComboDataEE9push_backEOS4_.exit: ; preds = %if.else.i.i.i, %_ZNSt16allocator_traitsISaIN3irr3gui12CGUIComboBox10SComboDataEEE9constructIS3_JS3_EEEvRS4_PT_DpOT0_.exit.i.i.i %is_sorted.i = getelementptr inbounds nuw i8, ptr %this, i64 368 store i8 0, ptr %is_sorted.i, align 8, !tbaa !6 - %25 = load ptr, ptr %ref.tmp, align 8, !tbaa !87 - %cmp.i.i.i.i.i = icmp eq ptr %25, %0 + %24 = load ptr, ptr %ref.tmp, align 8, !tbaa !87 + %cmp.i.i.i.i.i = icmp eq ptr %24, %0 br i1 %cmp.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i, label %if.then.i.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i: ; preds = %_ZN3irr4core5arrayINS_3gui12CGUIComboBox10SComboDataEE9push_backEOS4_.exit - %26 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !93 - %cmp3.i.i.i.i.i = icmp ult i64 %26, 4 + %25 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !93 + %cmp3.i.i.i.i.i = icmp ult i64 %25, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) br label %_ZN3irr3gui12CGUIComboBox10SComboDataD2Ev.exit if.then.i.i.i.i: ; preds = %_ZN3irr4core5arrayINS_3gui12CGUIComboBox10SComboDataEE9push_backEOS4_.exit - call void @_ZdlPv(ptr noundef %25) #20 + call void @_ZdlPv(ptr noundef %24) #20 br label %_ZN3irr3gui12CGUIComboBox10SComboDataD2Ev.exit _ZN3irr3gui12CGUIComboBox10SComboDataD2Ev.exit: ; preds = %if.then.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %ref.tmp) #18 %Selected = getelementptr inbounds nuw i8, ptr %this, i64 376 - %27 = load i32, ptr %Selected, align 8, !tbaa !86 - %cmp = icmp eq i32 %27, -1 + %26 = load i32, ptr %Selected, align 8, !tbaa !86 + %cmp = icmp eq i32 %26, -1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %_ZN3irr3gui12CGUIComboBox10SComboDataD2Ev.exit %vtable = load ptr, ptr %this, align 8, !tbaa !3 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 352 - %28 = load ptr, ptr %vfn, align 8 - call void %28(ptr noundef nonnull align 8 dereferenceable(408) %this, i32 noundef 0) #18 + %27 = load ptr, ptr %vfn, align 8 + call void %27(ptr noundef nonnull align 8 dereferenceable(408) %this, i32 noundef 0) #18 br label %if.end if.end: ; preds = %if.then, %_ZN3irr3gui12CGUIComboBox10SComboDataD2Ev.exit - %29 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !83 - %30 = load ptr, ptr %Items, align 8, !tbaa !84 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %29 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %30 to i64 + %28 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !83 + %29 = load ptr, ptr %Items, align 8, !tbaa !84 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %28 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %29 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 40 %conv.i = trunc i64 %sub.ptr.div.i.i to i32 @@ -3253,8 +3252,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3272,23 +3270,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !121 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !95 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !95 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !95 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !95 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3296,31 +3294,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !95 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !95 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !95 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !95 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !95 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !95 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !95 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !95 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !95 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !95 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !95 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !95 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !95 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !95 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !95 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !95 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !123 @@ -3389,8 +3387,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3408,23 +3405,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !124 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !95 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !95 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !95 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !95 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3432,31 +3429,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !95 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !95 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !95 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !95 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !95 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !95 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !95 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !95 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !95 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !95 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !95 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !95 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !95 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !95 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !95 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !95 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !126 @@ -3701,7 +3698,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -3741,10 +3738,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !15 %13 = load ptr, ptr %Name, align 8, !tbaa !129 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !15 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUIEnvironment.cpp.ll b/bench/minetest/optimized/CGUIEnvironment.cpp.ll index 5a366322ab..c5e25a0f96 100644 --- a/bench/minetest/optimized/CGUIEnvironment.cpp.ll +++ b/bench/minetest/optimized/CGUIEnvironment.cpp.ll @@ -6534,8 +6534,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6553,23 +6552,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !169 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !27 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !27 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !27 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !27 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6577,31 +6576,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !27 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !27 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !27 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !27 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !27 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !27 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !27 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !27 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !27 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !27 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !27 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !27 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !27 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !27 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !27 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !27 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !172 @@ -6670,8 +6669,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6689,23 +6687,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !173 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !27 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !27 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !27 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !27 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6713,31 +6711,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !27 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !27 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !27 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !27 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !27 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !27 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !27 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !27 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !27 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !27 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !27 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !27 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !27 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !27 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !27 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !27 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !175 @@ -6982,7 +6980,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -7022,10 +7020,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !30 %13 = load ptr, ptr %Name, align 8, !tbaa !3 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !30 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUIFont.cpp.ll b/bench/minetest/optimized/CGUIFont.cpp.ll index 0e3d6cef8f..663330490e 100644 --- a/bench/minetest/optimized/CGUIFont.cpp.ll +++ b/bench/minetest/optimized/CGUIFont.cpp.ll @@ -471,15 +471,13 @@ if.end: ; preds = %entry br i1 %cmp16.not, label %return, label %for.body.preheader for.body.preheader: ; preds = %if.end - %sub.ptr.div.i.i = lshr i64 %sub.ptr.sub.i.i, 4 %MaxHeight.promoted = load i32, ptr %MaxHeight, align 4, !tbaa !47 - %wide.trip.count = and i64 %sub.ptr.div.i.i, 4294967295 - %xtraiter = and i64 %sub.ptr.div.i.i, 1 - %5 = icmp eq i64 %wide.trip.count, 1 + %5 = icmp eq i64 %4, 16 br i1 %5, label %return.loopexit.unr-lcssa, label %for.body.preheader.new for.body.preheader.new: ; preds = %for.body.preheader - %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter + %sub.ptr.div.i.i = lshr i64 %sub.ptr.sub.i.i, 4 + %unroll_iter = and i64 %sub.ptr.div.i.i, 4294967294 br label %for.body for.body: ; preds = %if.end10.1, %for.body.preheader.new @@ -523,16 +521,17 @@ if.end10.1: ; preds = %if.then8.1, %if.end return.loopexit.unr-lcssa: ; preds = %if.end10.1, %for.body.preheader %indvars.iv.unr = phi i64 [ 0, %for.body.preheader ], [ %unroll_iter, %if.end10.1 ] %.unr = phi i32 [ %MaxHeight.promoted, %for.body.preheader ], [ %12, %if.end10.1 ] - %lcmp.mod.not = icmp eq i64 %xtraiter, 0 + %13 = and i64 %sub.ptr.sub.i.i, 16 + %lcmp.mod.not = icmp eq i64 %13, 0 br i1 %lcmp.mod.not, label %return, label %for.body.epil for.body.epil: ; preds = %return.loopexit.unr-lcssa - %add.ptr.i.i.epil = getelementptr inbounds %"class.irr::core::rect", ptr %3, i64 %indvars.iv.unr + %add.ptr.i.i.epil = getelementptr inbounds nuw %"class.irr::core::rect", ptr %3, i64 %indvars.iv.unr %Y.i.epil = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.epil, i64 12 - %13 = load i32, ptr %Y.i.epil, align 4, !tbaa !51 + %14 = load i32, ptr %Y.i.epil, align 4, !tbaa !51 %Y2.i.epil = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.epil, i64 4 - %14 = load i32, ptr %Y2.i.epil, align 4, !tbaa !54 - %sub.i.epil = sub nsw i32 %13, %14 + %15 = load i32, ptr %Y2.i.epil, align 4, !tbaa !54 + %sub.i.epil = sub nsw i32 %14, %15 %cmp7.epil = icmp sgt i32 %sub.i.epil, %.unr br i1 %cmp7.epil, label %if.then8.epil, label %return @@ -943,15 +942,13 @@ if.end.i: ; preds = %_ZNK3irr17IReferenc br i1 %cmp16.not.i, label %cleanup, label %for.body.preheader.i for.body.preheader.i: ; preds = %if.end.i - %sub.ptr.div.i.i.i = lshr i64 %sub.ptr.sub.i.i.i, 4 %MaxHeight.promoted.i = load i32, ptr %MaxHeight.i, align 4, !tbaa !47 - %wide.trip.count.i = and i64 %sub.ptr.div.i.i.i, 4294967295 - %xtraiter = and i64 %sub.ptr.div.i.i.i, 1 - %57 = icmp eq i64 %wide.trip.count.i, 1 + %57 = icmp eq i64 %56, 16 br i1 %57, label %cleanup.loopexit.unr-lcssa, label %for.body.preheader.i.new for.body.preheader.i.new: ; preds = %for.body.preheader.i - %unroll_iter = sub nsw i64 %wide.trip.count.i, %xtraiter + %sub.ptr.div.i.i.i = lshr i64 %sub.ptr.sub.i.i.i, 4 + %unroll_iter = and i64 %sub.ptr.div.i.i.i, 4294967294 br label %for.body.i for.body.i: ; preds = %if.end10.i.1, %for.body.preheader.i.new @@ -995,16 +992,17 @@ if.end10.i.1: ; preds = %if.then8.i.1, %if.e cleanup.loopexit.unr-lcssa: ; preds = %if.end10.i.1, %for.body.preheader.i %indvars.iv.i.unr = phi i64 [ 0, %for.body.preheader.i ], [ %unroll_iter, %if.end10.i.1 ] %.unr = phi i32 [ %MaxHeight.promoted.i, %for.body.preheader.i ], [ %64, %if.end10.i.1 ] - %lcmp.mod.not = icmp eq i64 %xtraiter, 0 + %65 = and i64 %sub.ptr.sub.i.i.i, 16 + %lcmp.mod.not = icmp eq i64 %65, 0 br i1 %lcmp.mod.not, label %cleanup, label %for.body.i.epil for.body.i.epil: ; preds = %cleanup.loopexit.unr-lcssa - %add.ptr.i.i.i.epil = getelementptr inbounds %"class.irr::core::rect", ptr %55, i64 %indvars.iv.i.unr + %add.ptr.i.i.i.epil = getelementptr inbounds nuw %"class.irr::core::rect", ptr %55, i64 %indvars.iv.i.unr %Y.i.i.epil = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.epil, i64 12 - %65 = load i32, ptr %Y.i.i.epil, align 4, !tbaa !51 + %66 = load i32, ptr %Y.i.i.epil, align 4, !tbaa !51 %Y2.i.i.epil = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i.epil, i64 4 - %66 = load i32, ptr %Y2.i.i.epil, align 4, !tbaa !54 - %sub.i.i.epil = sub nsw i32 %65, %66 + %67 = load i32, ptr %Y2.i.i.epil, align 4, !tbaa !54 + %sub.i.i.epil = sub nsw i32 %66, %67 %cmp7.i.epil = icmp sgt i32 %sub.i.i.epil, %.unr br i1 %cmp7.i.epil, label %if.then8.i.epil, label %cleanup @@ -1899,8 +1897,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1918,23 +1915,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !132 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %s, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !38 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !38 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %s, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !38 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !38 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1942,31 +1939,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %s, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !38 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !38 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !38 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !38 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %s, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !38 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !38 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !38 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !38 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %s, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !38 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !38 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !38 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !38 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %s, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !38 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !38 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !38 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !38 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !135 diff --git a/bench/minetest/optimized/CGUIListBox.cpp.ll b/bench/minetest/optimized/CGUIListBox.cpp.ll index 7fa44e79b2..73fae3a6aa 100644 --- a/bench/minetest/optimized/CGUIListBox.cpp.ll +++ b/bench/minetest/optimized/CGUIListBox.cpp.ll @@ -2520,8 +2520,7 @@ for.body.lr.ph: ; preds = %if.end br i1 %or.cond, label %for.body.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph - %n.mod.vf = and i64 %call.i, 7 - %n.vec = sub nuw nsw i64 %conv, %n.mod.vf + %n.vec = and i64 %call.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -2539,23 +2538,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !106 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %return, label %for.body.preheader for.body.preheader: ; preds = %middle.block, %for.body.lr.ph %indvars.iv.ph = phi i64 [ 0, %for.body.lr.ph ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i, %indvars.iv.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.prol.loopexit, label %for.body.prol for.body.prol: ; preds = %for.body.preheader, %for.body.prol %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %for.body.prol ], [ %indvars.iv.ph, %for.body.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.prol ], [ 0, %for.body.preheader ] - %arrayidx.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.prol - %12 = load i32, ptr %arrayidx.prol, align 4, !tbaa !44 - %arrayidx.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.prol - store i32 %12, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.prol + %11 = load i32, ptr %arrayidx.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.prol + store i32 %11, ptr %arrayidx.i.prol, align 4, !tbaa !44 %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -2563,31 +2562,31 @@ for.body.prol: ; preds = %for.body.preheader, for.body.prol.loopexit: ; preds = %for.body.prol, %for.body.preheader %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %for.body.preheader ], [ %indvars.iv.next.prol, %for.body.prol ] - %13 = sub nsw i64 %indvars.iv.ph, %conv - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %return, label %for.body + %12 = sub nsw i64 %indvars.iv.ph, %conv + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %return, label %for.body for.body: ; preds = %for.body.prol.loopexit, %for.body %indvars.iv = phi i64 [ %indvars.iv.next.3, %for.body ], [ %indvars.iv.unr, %for.body.prol.loopexit ] %arrayidx = getelementptr inbounds i32, ptr %c, i64 %indvars.iv - %15 = load i32, ptr %arrayidx, align 4, !tbaa !44 + %14 = load i32, ptr %arrayidx, align 4, !tbaa !44 %arrayidx.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - store i32 %15, ptr %arrayidx.i, align 4, !tbaa !44 + store i32 %14, ptr %arrayidx.i, align 4, !tbaa !44 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %arrayidx.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next - %16 = load i32, ptr %arrayidx.1, align 4, !tbaa !44 + %15 = load i32, ptr %arrayidx.1, align 4, !tbaa !44 %arrayidx.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next - store i32 %16, ptr %arrayidx.i.1, align 4, !tbaa !44 + store i32 %15, ptr %arrayidx.i.1, align 4, !tbaa !44 %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2 %arrayidx.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.1 - %17 = load i32, ptr %arrayidx.2, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.2, align 4, !tbaa !44 %arrayidx.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.1 - store i32 %17, ptr %arrayidx.i.2, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.2, align 4, !tbaa !44 %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3 %arrayidx.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.2 - %18 = load i32, ptr %arrayidx.3, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.3, align 4, !tbaa !44 %arrayidx.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.2 - store i32 %18, ptr %arrayidx.i.3, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.3, align 4, !tbaa !44 %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4 %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %conv br i1 %exitcond.not.3, label %return, label %for.body, !llvm.loop !111 @@ -3403,8 +3402,8 @@ _ZN3irr3gui11IGUIElement4drawEv.exit: ; preds = %for.body.i, %if.the for.body: ; preds = %if.end240, %for.body.lr.ph %.pre353 = phi i32 [ %.pre353.pre, %for.body.lr.ph ], [ %add244, %if.end240 ] - %62 = phi ptr [ %54, %for.body.lr.ph ], [ %157, %if.end240 ] - %63 = phi ptr [ %53, %for.body.lr.ph ], [ %158, %if.end240 ] + %62 = phi ptr [ %54, %for.body.lr.ph ], [ %155, %if.end240 ] + %63 = phi ptr [ %53, %for.body.lr.ph ], [ %156, %if.end240 ] %64 = phi i32 [ %.pre350, %for.body.lr.ph ], [ %add248, %if.end240 ] %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %if.end240 ] %65 = load i32, ptr %Y50, align 4, !tbaa !95 @@ -3625,8 +3624,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i303 br i1 %or.cond375, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i304, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3644,23 +3642,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %113, label %middle.block, label %vector.body, !llvm.loop !124 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %114 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter378 = and i64 %114, 3 + %xtraiter378 = and i64 %call.i.i.i, 3 %lcmp.mod379.not = icmp eq i64 %xtraiter378, 0 br i1 %lcmp.mod379.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter380 = phi i64 [ %prol.iter380.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %102, i64 %indvars.iv.i.i.prol - %115 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.i.i.prol - store i32 %115, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %102, i64 %indvars.iv.i.i.prol + %114 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %106, i64 %indvars.iv.i.i.prol + store i32 %114, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter380.next = add nuw nsw i64 %prol.iter380, 1 %prol.iter380.cmp.not = icmp eq i64 %prol.iter380.next, %xtraiter378 @@ -3668,31 +3666,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %116 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i304 - %117 = icmp ugt i64 %116, -4 - br i1 %117, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i + %115 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i304 + %116 = icmp ugt i64 %115, -4 + br i1 %116, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %102, i64 %indvars.iv.i.i - %118 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !44 + %117 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !44 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.i.i - store i32 %118, ptr %arrayidx.i.i.i, align 4, !tbaa !44 + store i32 %117, ptr %arrayidx.i.i.i, align 4, !tbaa !44 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %102, i64 %indvars.iv.next.i.i - %119 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + %118 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.next.i.i - store i32 %119, ptr %arrayidx.i.i.i.1, align 4, !tbaa !44 + store i32 %118, ptr %arrayidx.i.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %102, i64 %indvars.iv.next.i.i.1 - %120 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + %119 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.next.i.i.1 - store i32 %120, ptr %arrayidx.i.i.i.2, align 4, !tbaa !44 + store i32 %119, ptr %arrayidx.i.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %102, i64 %indvars.iv.next.i.i.2 - %121 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + %120 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.next.i.i.2 - store i32 %121, ptr %arrayidx.i.i.i.3, align 4, !tbaa !44 + store i32 %120, ptr %arrayidx.i.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i304 br i1 %exitcond.not.i.i.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i, !llvm.loop !126 @@ -3700,41 +3698,41 @@ for.body.i.i: ; preds = %for.body.i.i.prol.l _ZN3irr4core6stringIwEC2IwEEPKT_.exit: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %if.end.i.i303, %_ZN3irr4core6stringIwE5clearEb.exit.i.i %vtable191 = load ptr, ptr %this, align 8, !tbaa !3 %vfn192 = getelementptr inbounds nuw i8, ptr %vtable191, i64 432 - %122 = load ptr, ptr %vfn192, align 8 - %123 = trunc nuw i64 %indvars.iv to i32 - %call193 = call noundef zeroext i1 %122(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %123, i32 noundef 1) #22 + %121 = load ptr, ptr %vfn192, align 8 + %122 = trunc nuw i64 %indvars.iv to i32 + %call193 = call noundef zeroext i1 %121(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %122, i32 noundef 1) #22 %vtable195 = load ptr, ptr %this, align 8, !tbaa !3 br i1 %call193, label %cond.true194, label %cond.false199 cond.true194: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit %vfn196 = getelementptr inbounds nuw i8, ptr %vtable195, i64 440 - %124 = load ptr, ptr %vfn196, align 8 - %call197 = call i32 %124(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %123, i32 noundef 1) #22 + %123 = load ptr, ptr %vfn196, align 8 + %call197 = call i32 %123(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %122, i32 noundef 1) #22 br label %cond.end204 cond.false199: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit %vfn201 = getelementptr inbounds nuw i8, ptr %vtable195, i64 448 - %125 = load ptr, ptr %vfn201, align 8 - %call202 = call i32 %125(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef 1) #22 + %124 = load ptr, ptr %vfn201, align 8 + %call202 = call i32 %124(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef 1) #22 br label %cond.end204 cond.end204: ; preds = %cond.false199, %cond.true194 %agg.tmp190.sroa.0.0 = phi i32 [ %call197, %cond.true194 ], [ %call202, %cond.false199 ] %vtable206 = load ptr, ptr %96, align 8, !tbaa !3 - %126 = load ptr, ptr %vtable206, align 8 - call void %126(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp186, ptr noundef nonnull align 4 dereferenceable(16) %textRect, i32 %agg.tmp190.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %clientClip) #22 - %127 = load ptr, ptr %ref.tmp186, align 8, !tbaa !81 - %cmp.i.i.i.i = icmp eq ptr %127, %57 + %125 = load ptr, ptr %vtable206, align 8 + call void %125(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp186, ptr noundef nonnull align 4 dereferenceable(16) %textRect, i32 %agg.tmp190.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %clientClip) #22 + %126 = load ptr, ptr %ref.tmp186, align 8, !tbaa !81 + %cmp.i.i.i.i = icmp eq ptr %126, %57 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %cond.end204 - %128 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !43 - %cmp3.i.i.i.i = icmp ult i64 %128, 4 + %127 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !43 + %cmp3.i.i.i.i = icmp ult i64 %127, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i: ; preds = %cond.end204 - call void @_ZdlPv(ptr noundef %127) #24 + call void @_ZdlPv(ptr noundef %126) #24 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i @@ -3743,14 +3741,14 @@ _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN if.else208: ; preds = %if.end174 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp210) #22 - %129 = load ptr, ptr %Items, align 8, !tbaa !82 - %add.ptr.i.i308 = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %129, i64 %indvars.iv - %130 = load ptr, ptr %add.ptr.i.i308, align 8, !tbaa !81 - %131 = ptrtoint ptr %130 to i64 + %128 = load ptr, ptr %Items, align 8, !tbaa !82 + %add.ptr.i.i308 = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %128, i64 %indvars.iv + %129 = load ptr, ptr %add.ptr.i.i308, align 8, !tbaa !81 + %130 = ptrtoint ptr %129 to i64 store ptr %55, ptr %ref.tmp210, align 8, !tbaa !42 store i64 0, ptr %_M_string_length.i.i.i.i310, align 8, !tbaa !43 store i32 0, ptr %55, align 8, !tbaa !44 - %tobool.not.i.i311 = icmp eq ptr %130, null + %tobool.not.i.i311 = icmp eq ptr %129, null br i1 %tobool.not.i.i311, label %if.then.i.i323, label %if.end.i.i312 if.then.i.i323: ; preds = %if.else208 @@ -3759,18 +3757,18 @@ if.then.i.i323: ; preds = %if.else208 store i64 0, ptr %_M_string_length.i.i.i.i.i.i324, align 8, !tbaa !43 store i32 0, ptr %56, align 8, !tbaa !44 call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp210, ptr noundef nonnull align 8 dereferenceable(32) %empty.i.i.i309) #22 - %132 = load ptr, ptr %empty.i.i.i309, align 8, !tbaa !81 - %cmp.i.i.i.i.i.i325 = icmp eq ptr %132, %56 + %131 = load ptr, ptr %empty.i.i.i309, align 8, !tbaa !81 + %cmp.i.i.i.i.i.i325 = icmp eq ptr %131, %56 br i1 %cmp.i.i.i.i.i.i325, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i328, label %if.then.i.i.i.i.i326 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i328: ; preds = %if.then.i.i323 - %133 = load i64, ptr %_M_string_length.i.i.i.i.i.i324, align 8, !tbaa !43 - %cmp3.i.i.i.i.i.i329 = icmp ult i64 %133, 4 + %132 = load i64, ptr %_M_string_length.i.i.i.i.i.i324, align 8, !tbaa !43 + %cmp3.i.i.i.i.i.i329 = icmp ult i64 %132, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i329) br label %_ZN3irr4core6stringIwE5clearEb.exit.i.i327 if.then.i.i.i.i.i326: ; preds = %if.then.i.i323 - call void @_ZdlPv(ptr noundef %132) #24 + call void @_ZdlPv(ptr noundef %131) #24 br label %_ZN3irr4core6stringIwE5clearEb.exit.i.i327 _ZN3irr4core6stringIwE5clearEb.exit.i.i327: ; preds = %if.then.i.i.i.i.i326, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i328 @@ -3778,58 +3776,57 @@ _ZN3irr4core6stringIwE5clearEb.exit.i.i327: ; preds = %if.then.i.i.i.i.i32 br label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330 if.end.i.i312: ; preds = %if.else208 - %call.i.i.i313 = call i64 @wcslen(ptr noundef nonnull %130) #25 + %call.i.i.i313 = call i64 @wcslen(ptr noundef nonnull %129) #25 %conv.i.i314 = and i64 %call.i.i.i313, 4294967295 call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEmw(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp210, i64 noundef %conv.i.i314, i32 noundef signext 0) #22 %cmp11.not.i.i315 = icmp eq i64 %conv.i.i314, 0 br i1 %cmp11.not.i.i315, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330, label %for.body.lr.ph.i.i316 for.body.lr.ph.i.i316: ; preds = %if.end.i.i312 - %134 = load ptr, ptr %ref.tmp210, align 8, !tbaa !81 + %133 = load ptr, ptr %ref.tmp210, align 8, !tbaa !81 %min.iters.check363 = icmp samesign ult i64 %conv.i.i314, 8 - %135 = ptrtoint ptr %134 to i64 - %136 = sub i64 %135, %131 - %diff.check360 = icmp ult i64 %136, 32 + %134 = ptrtoint ptr %133 to i64 + %135 = sub i64 %134, %130 + %diff.check360 = icmp ult i64 %135, 32 %or.cond377 = select i1 %min.iters.check363, i1 true, i1 %diff.check360 br i1 %or.cond377, label %for.body.i.i317.preheader, label %vector.ph364 vector.ph364: ; preds = %for.body.lr.ph.i.i316 - %n.mod.vf365 = and i64 %call.i.i.i313, 7 - %n.vec366 = sub nuw nsw i64 %conv.i.i314, %n.mod.vf365 + %n.vec366 = and i64 %call.i.i.i313, 4294967288 br label %vector.body369 vector.body369: ; preds = %vector.body369, %vector.ph364 %index370 = phi i64 [ 0, %vector.ph364 ], [ %index.next373, %vector.body369 ] - %137 = getelementptr inbounds i32, ptr %130, i64 %index370 - %138 = getelementptr inbounds nuw i8, ptr %137, i64 16 - %wide.load371 = load <4 x i32>, ptr %137, align 4, !tbaa !44 - %wide.load372 = load <4 x i32>, ptr %138, align 4, !tbaa !44 - %139 = getelementptr inbounds i32, ptr %134, i64 %index370 - %140 = getelementptr inbounds nuw i8, ptr %139, i64 16 - store <4 x i32> %wide.load371, ptr %139, align 4, !tbaa !44 - store <4 x i32> %wide.load372, ptr %140, align 4, !tbaa !44 + %136 = getelementptr inbounds i32, ptr %129, i64 %index370 + %137 = getelementptr inbounds nuw i8, ptr %136, i64 16 + %wide.load371 = load <4 x i32>, ptr %136, align 4, !tbaa !44 + %wide.load372 = load <4 x i32>, ptr %137, align 4, !tbaa !44 + %138 = getelementptr inbounds i32, ptr %133, i64 %index370 + %139 = getelementptr inbounds nuw i8, ptr %138, i64 16 + store <4 x i32> %wide.load371, ptr %138, align 4, !tbaa !44 + store <4 x i32> %wide.load372, ptr %139, align 4, !tbaa !44 %index.next373 = add nuw i64 %index370, 8 - %141 = icmp eq i64 %index.next373, %n.vec366 - br i1 %141, label %middle.block361, label %vector.body369, !llvm.loop !127 + %140 = icmp eq i64 %index.next373, %n.vec366 + br i1 %140, label %middle.block361, label %vector.body369, !llvm.loop !127 middle.block361: ; preds = %vector.body369 + %n.mod.vf365 = and i64 %call.i.i.i313, 7 %cmp.n368 = icmp eq i64 %n.mod.vf365, 0 br i1 %cmp.n368, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330, label %for.body.i.i317.preheader for.body.i.i317.preheader: ; preds = %middle.block361, %for.body.lr.ph.i.i316 %indvars.iv.i.i318.ph = phi i64 [ 0, %for.body.lr.ph.i.i316 ], [ %n.vec366, %middle.block361 ] - %142 = sub i64 %call.i.i.i313, %indvars.iv.i.i318.ph - %xtraiter = and i64 %142, 3 + %xtraiter = and i64 %call.i.i.i313, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i317.prol.loopexit, label %for.body.i.i317.prol for.body.i.i317.prol: ; preds = %for.body.i.i317.preheader, %for.body.i.i317.prol %indvars.iv.i.i318.prol = phi i64 [ %indvars.iv.next.i.i321.prol, %for.body.i.i317.prol ], [ %indvars.iv.i.i318.ph, %for.body.i.i317.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i317.prol ], [ 0, %for.body.i.i317.preheader ] - %arrayidx.i.i319.prol = getelementptr inbounds i32, ptr %130, i64 %indvars.iv.i.i318.prol - %143 = load i32, ptr %arrayidx.i.i319.prol, align 4, !tbaa !44 - %arrayidx.i.i.i320.prol = getelementptr inbounds i32, ptr %134, i64 %indvars.iv.i.i318.prol - store i32 %143, ptr %arrayidx.i.i.i320.prol, align 4, !tbaa !44 + %arrayidx.i.i319.prol = getelementptr inbounds nuw i32, ptr %129, i64 %indvars.iv.i.i318.prol + %141 = load i32, ptr %arrayidx.i.i319.prol, align 4, !tbaa !44 + %arrayidx.i.i.i320.prol = getelementptr inbounds nuw i32, ptr %133, i64 %indvars.iv.i.i318.prol + store i32 %141, ptr %arrayidx.i.i.i320.prol, align 4, !tbaa !44 %indvars.iv.next.i.i321.prol = add nuw nsw i64 %indvars.iv.i.i318.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3837,31 +3834,31 @@ for.body.i.i317.prol: ; preds = %for.body.i.i317.pre for.body.i.i317.prol.loopexit: ; preds = %for.body.i.i317.prol, %for.body.i.i317.preheader %indvars.iv.i.i318.unr = phi i64 [ %indvars.iv.i.i318.ph, %for.body.i.i317.preheader ], [ %indvars.iv.next.i.i321.prol, %for.body.i.i317.prol ] - %144 = sub nsw i64 %indvars.iv.i.i318.ph, %conv.i.i314 - %145 = icmp ugt i64 %144, -4 - br i1 %145, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330, label %for.body.i.i317 + %142 = sub nsw i64 %indvars.iv.i.i318.ph, %conv.i.i314 + %143 = icmp ugt i64 %142, -4 + br i1 %143, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330, label %for.body.i.i317 for.body.i.i317: ; preds = %for.body.i.i317.prol.loopexit, %for.body.i.i317 %indvars.iv.i.i318 = phi i64 [ %indvars.iv.next.i.i321.3, %for.body.i.i317 ], [ %indvars.iv.i.i318.unr, %for.body.i.i317.prol.loopexit ] - %arrayidx.i.i319 = getelementptr inbounds i32, ptr %130, i64 %indvars.iv.i.i318 - %146 = load i32, ptr %arrayidx.i.i319, align 4, !tbaa !44 - %arrayidx.i.i.i320 = getelementptr inbounds i32, ptr %134, i64 %indvars.iv.i.i318 - store i32 %146, ptr %arrayidx.i.i.i320, align 4, !tbaa !44 + %arrayidx.i.i319 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.i.i318 + %144 = load i32, ptr %arrayidx.i.i319, align 4, !tbaa !44 + %arrayidx.i.i.i320 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.i.i318 + store i32 %144, ptr %arrayidx.i.i.i320, align 4, !tbaa !44 %indvars.iv.next.i.i321 = add nuw nsw i64 %indvars.iv.i.i318, 1 - %arrayidx.i.i319.1 = getelementptr inbounds i32, ptr %130, i64 %indvars.iv.next.i.i321 - %147 = load i32, ptr %arrayidx.i.i319.1, align 4, !tbaa !44 - %arrayidx.i.i.i320.1 = getelementptr inbounds i32, ptr %134, i64 %indvars.iv.next.i.i321 - store i32 %147, ptr %arrayidx.i.i.i320.1, align 4, !tbaa !44 + %arrayidx.i.i319.1 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i321 + %145 = load i32, ptr %arrayidx.i.i319.1, align 4, !tbaa !44 + %arrayidx.i.i.i320.1 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next.i.i321 + store i32 %145, ptr %arrayidx.i.i.i320.1, align 4, !tbaa !44 %indvars.iv.next.i.i321.1 = add nuw nsw i64 %indvars.iv.i.i318, 2 - %arrayidx.i.i319.2 = getelementptr inbounds i32, ptr %130, i64 %indvars.iv.next.i.i321.1 - %148 = load i32, ptr %arrayidx.i.i319.2, align 4, !tbaa !44 - %arrayidx.i.i.i320.2 = getelementptr inbounds i32, ptr %134, i64 %indvars.iv.next.i.i321.1 - store i32 %148, ptr %arrayidx.i.i.i320.2, align 4, !tbaa !44 + %arrayidx.i.i319.2 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i321.1 + %146 = load i32, ptr %arrayidx.i.i319.2, align 4, !tbaa !44 + %arrayidx.i.i.i320.2 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next.i.i321.1 + store i32 %146, ptr %arrayidx.i.i.i320.2, align 4, !tbaa !44 %indvars.iv.next.i.i321.2 = add nuw nsw i64 %indvars.iv.i.i318, 3 - %arrayidx.i.i319.3 = getelementptr inbounds i32, ptr %130, i64 %indvars.iv.next.i.i321.2 - %149 = load i32, ptr %arrayidx.i.i319.3, align 4, !tbaa !44 - %arrayidx.i.i.i320.3 = getelementptr inbounds i32, ptr %134, i64 %indvars.iv.next.i.i321.2 - store i32 %149, ptr %arrayidx.i.i.i320.3, align 4, !tbaa !44 + %arrayidx.i.i319.3 = getelementptr inbounds i32, ptr %129, i64 %indvars.iv.next.i.i321.2 + %147 = load i32, ptr %arrayidx.i.i319.3, align 4, !tbaa !44 + %arrayidx.i.i.i320.3 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next.i.i321.2 + store i32 %147, ptr %arrayidx.i.i.i320.3, align 4, !tbaa !44 %indvars.iv.next.i.i321.3 = add nuw nsw i64 %indvars.iv.i.i318, 4 %exitcond.not.i.i322.3 = icmp eq i64 %indvars.iv.next.i.i321.3, %conv.i.i314 br i1 %exitcond.not.i.i322.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330, label %for.body.i.i317, !llvm.loop !129 @@ -3869,41 +3866,41 @@ for.body.i.i317: ; preds = %for.body.i.i317.pro _ZN3irr4core6stringIwEC2IwEEPKT_.exit330: ; preds = %for.body.i.i317, %for.body.i.i317.prol.loopexit, %middle.block361, %if.end.i.i312, %_ZN3irr4core6stringIwE5clearEb.exit.i.i327 %vtable216 = load ptr, ptr %this, align 8, !tbaa !3 %vfn217 = getelementptr inbounds nuw i8, ptr %vtable216, i64 432 - %150 = load ptr, ptr %vfn217, align 8 - %151 = trunc i64 %indvars.iv to i32 - %call218 = call noundef zeroext i1 %150(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %151, i32 noundef 0) #22 + %148 = load ptr, ptr %vfn217, align 8 + %149 = trunc i64 %indvars.iv to i32 + %call218 = call noundef zeroext i1 %148(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %149, i32 noundef 0) #22 %vtable220 = load ptr, ptr %this, align 8, !tbaa !3 br i1 %call218, label %cond.true219, label %cond.false224 cond.true219: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330 %vfn221 = getelementptr inbounds nuw i8, ptr %vtable220, i64 440 - %152 = load ptr, ptr %vfn221, align 8 - %call222 = call i32 %152(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %151, i32 noundef 0) #22 + %150 = load ptr, ptr %vfn221, align 8 + %call222 = call i32 %150(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %149, i32 noundef 0) #22 br label %cond.end229 cond.false224: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit330 %vfn226 = getelementptr inbounds nuw i8, ptr %vtable220, i64 448 - %153 = load ptr, ptr %vfn226, align 8 - %call227 = call i32 %153(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef 0) #22 + %151 = load ptr, ptr %vfn226, align 8 + %call227 = call i32 %151(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef 0) #22 br label %cond.end229 cond.end229: ; preds = %cond.false224, %cond.true219 %agg.tmp215.sroa.0.0 = phi i32 [ %call222, %cond.true219 ], [ %call227, %cond.false224 ] %vtable231 = load ptr, ptr %96, align 8, !tbaa !3 - %154 = load ptr, ptr %vtable231, align 8 - call void %154(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp210, ptr noundef nonnull align 4 dereferenceable(16) %textRect, i32 %agg.tmp215.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %clientClip) #22 - %155 = load ptr, ptr %ref.tmp210, align 8, !tbaa !81 - %cmp.i.i.i.i331 = icmp eq ptr %155, %55 + %152 = load ptr, ptr %vtable231, align 8 + call void %152(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp210, ptr noundef nonnull align 4 dereferenceable(16) %textRect, i32 %agg.tmp215.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef nonnull %clientClip) #22 + %153 = load ptr, ptr %ref.tmp210, align 8, !tbaa !81 + %cmp.i.i.i.i331 = icmp eq ptr %153, %55 br i1 %cmp.i.i.i.i331, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i333, label %if.then.i.i.i332 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i333: ; preds = %cond.end229 - %156 = load i64, ptr %_M_string_length.i.i.i.i310, align 8, !tbaa !43 - %cmp3.i.i.i.i335 = icmp ult i64 %156, 4 + %154 = load i64, ptr %_M_string_length.i.i.i.i310, align 8, !tbaa !43 + %cmp3.i.i.i.i335 = icmp ult i64 %154, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i335) br label %_ZN3irr4core6stringIwED2Ev.exit336 if.then.i.i.i332: ; preds = %cond.end229 - call void @_ZdlPv(ptr noundef %155) #24 + call void @_ZdlPv(ptr noundef %153) #24 br label %_ZN3irr4core6stringIwED2Ev.exit336 _ZN3irr4core6stringIwED2Ev.exit336: ; preds = %if.then.i.i.i332, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i333 @@ -3919,23 +3916,23 @@ if.end239: ; preds = %_ZN3irr4core6string br label %if.end240 if.end240: ; preds = %if.end239, %for.body - %157 = phi ptr [ %.pre356, %if.end239 ], [ %62, %for.body ] - %158 = phi ptr [ %.pre355, %if.end239 ], [ %63, %for.body ] - %159 = phi i32 [ %.pre354, %if.end239 ], [ %64, %for.body ] - %160 = phi i32 [ %.pre352, %if.end239 ], [ %.pre353, %for.body ] - %161 = load i32, ptr %ItemHeight, align 4, !tbaa !90 - %add244 = add nsw i32 %161, %160 + %155 = phi ptr [ %.pre356, %if.end239 ], [ %62, %for.body ] + %156 = phi ptr [ %.pre355, %if.end239 ], [ %63, %for.body ] + %157 = phi i32 [ %.pre354, %if.end239 ], [ %64, %for.body ] + %158 = phi i32 [ %.pre352, %if.end239 ], [ %.pre353, %for.body ] + %159 = load i32, ptr %ItemHeight, align 4, !tbaa !90 + %add244 = add nsw i32 %159, %158 store i32 %add244, ptr %Y59, align 4, !tbaa !93 - %add248 = add nsw i32 %161, %159 + %add248 = add nsw i32 %159, %157 store i32 %add248, ptr %Y53, align 4, !tbaa !92 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %158 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %157 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %156 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %155 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 72 %sext = shl i64 %sub.ptr.div.i.i, 32 - %162 = ashr exact i64 %sext, 32 - %cmp = icmp slt i64 %indvars.iv.next, %162 + %160 = ashr exact i64 %sext, 32 + %cmp = icmp slt i64 %indvars.iv.next, %160 br i1 %cmp, label %for.body, label %for.cond.cleanup, !llvm.loop !130 return: ; preds = %_ZN3irr3gui11IGUIElement4drawEv.exit, %entry @@ -4041,8 +4038,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4060,23 +4056,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !134 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4084,31 +4080,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !44 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !44 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !136 @@ -4117,35 +4113,35 @@ _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.bo store i32 %icon, ptr %Icon.i, align 8, !tbaa !85 %Items = getelementptr inbounds nuw i8, ptr %this, i64 312 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 320 - %20 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !75 + %19 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !75 %_M_end_of_storage.i.i = getelementptr inbounds nuw i8, ptr %this, i64 328 - %21 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !137 - %cmp.not.i.i = icmp eq ptr %20, %21 + %20 = load ptr, ptr %_M_end_of_storage.i.i, align 8, !tbaa !137 + %cmp.not.i.i = icmp eq ptr %19, %20 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit - %22 = getelementptr inbounds nuw i8, ptr %20, i64 16 - store ptr %22, ptr %20, align 8, !tbaa !42 - %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = getelementptr inbounds nuw i8, ptr %19, i64 16 + store ptr %21, ptr %19, align 8, !tbaa !42 + %_M_string_length.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 8 store i64 0, ptr %_M_string_length.i.i.i.i.i.i.i.i.i, align 8, !tbaa !43 - store i32 0, ptr %22, align 4, !tbaa !44 - %cmp.i.i.i.i.i.i.i = icmp eq ptr %20, %i + store i32 0, ptr %21, align 4, !tbaa !44 + %cmp.i.i.i.i.i.i.i = icmp eq ptr %19, %i br i1 %cmp.i.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaIN3irr3gui11CGUIListBox8ListItemEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i.i, label %if.end.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i - call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %i) #22 + call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %i) #22 br label %_ZNSt16allocator_traitsISaIN3irr3gui11CGUIListBox8ListItemEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i.i _ZNSt16allocator_traitsISaIN3irr3gui11CGUIListBox8ListItemEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i.i: ; preds = %if.end.i.i.i.i.i.i.i, %if.then.i.i - %Icon.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %20, i64 32 + %Icon.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %19, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(36) %Icon.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(36) %Icon.i, i64 36, i1 false) - %23 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !83 - %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %23, i64 72 + %22 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !83 + %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %22, i64 72 store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i, align 8, !tbaa !83 br label %_ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit if.else.i.i: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit - call void @_ZNSt6vectorIN3irr3gui11CGUIListBox8ListItemESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %Items, ptr %20, ptr noundef nonnull align 8 dereferenceable(68) %i) + call void @_ZNSt6vectorIN3irr3gui11CGUIListBox8ListItemESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %Items, ptr %19, ptr noundef nonnull align 8 dereferenceable(68) %i) br label %_ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit _ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit: ; preds = %if.else.i.i, %_ZNSt16allocator_traitsISaIN3irr3gui11CGUIListBox8ListItemEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i.i @@ -4153,25 +4149,25 @@ _ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit: ; preds store i8 0, ptr %is_sorted.i, align 8, !tbaa !6 call void @_ZN3irr3gui11CGUIListBox21recalculateItemHeightEv(ptr noundef nonnull align 8 dereferenceable(437) %this) call void @_ZN3irr3gui11CGUIListBox20recalculateItemWidthEi(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %icon) - %24 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !83 - %25 = load ptr, ptr %Items, align 8, !tbaa !82 - %26 = load ptr, ptr %i, align 8, !tbaa !81 - %cmp.i.i.i.i.i8 = icmp eq ptr %26, %0 + %23 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !83 + %24 = load ptr, ptr %Items, align 8, !tbaa !82 + %25 = load ptr, ptr %i, align 8, !tbaa !81 + %cmp.i.i.i.i.i8 = icmp eq ptr %25, %0 br i1 %cmp.i.i.i.i.i8, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i10, label %if.then.i.i.i.i9 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i10: ; preds = %_ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit - %27 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !43 - %cmp3.i.i.i.i.i12 = icmp ult i64 %27, 4 + %26 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !43 + %cmp3.i.i.i.i.i12 = icmp ult i64 %26, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i12) br label %_ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit if.then.i.i.i.i9: ; preds = %_ZN3irr4core5arrayINS_3gui11CGUIListBox8ListItemEE9push_backERKS4_.exit - call void @_ZdlPv(ptr noundef %26) #24 + call void @_ZdlPv(ptr noundef %25) #24 br label %_ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit _ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit: ; preds = %if.then.i.i.i.i9, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i10 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %24 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %25 to i64 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %23 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %24 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 72 %conv.i7 = trunc i64 %sub.ptr.div.i.i to i32 @@ -4627,8 +4623,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i11, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4646,23 +4641,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %12, label %middle.block, label %vector.body, !llvm.loop !150 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %13 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %13, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %14 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i.prol - store i32 %14, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %5, i64 %indvars.iv.i.prol + store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4670,38 +4665,38 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %15 = sub nsw i64 %indvars.iv.i.ph, %conv.i11 - %16 = icmp ugt i64 %15, -4 - br i1 %16, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i11 + %15 = icmp ugt i64 %14, -4 + br i1 %15, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %17 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 %arrayidx.i.i = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i - store i32 %17, ptr %arrayidx.i.i, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !44 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %18 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i - store i32 %18, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %19 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 + %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i.1 - store i32 %19, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %20 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 + %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i.2 - store i32 %20, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i11 br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !152 _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %if.end.i, %_ZN3irr4core6stringIwE5clearEb.exit.i - %21 = load ptr, ptr %Items, align 8, !tbaa !82 - %Icon = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %21, i64 %conv.i10, i32 1 + %20 = load ptr, ptr %Items, align 8, !tbaa !82 + %Icon = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %20, i64 %conv.i10, i32 1 store i32 %icon, ptr %Icon, align 8, !tbaa !85 call void @_ZN3irr3gui11CGUIListBox21recalculateItemHeightEv(ptr noundef nonnull align 8 dereferenceable(437) %this) call void @_ZN3irr3gui11CGUIListBox20recalculateItemWidthEi(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %icon) @@ -4779,8 +4774,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4798,23 +4792,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !153 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4822,31 +4816,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !44 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !44 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !155 @@ -4854,26 +4848,26 @@ for.body.i: ; preds = %for.body.i.prol.loo _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %if.end.i, %_ZN3irr4core6stringIwE5clearEb.exit.i store i32 %icon, ptr %Icon.i, align 8, !tbaa !85 %Items = getelementptr inbounds nuw i8, ptr %this, i64 312 - %20 = load ptr, ptr %Items, align 8, !tbaa !75 + %19 = load ptr, ptr %Items, align 8, !tbaa !75 %conv.i5 = zext i32 %index to i64 - %add.ptr.i.i.i.i.i = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %20, i64 %conv.i5 + %add.ptr.i.i.i.i.i = getelementptr inbounds nuw %"struct.irr::gui::CGUIListBox::ListItem", ptr %19, i64 %conv.i5 %call8.i = call ptr @_ZNSt6vectorIN3irr3gui11CGUIListBox8ListItemESaIS3_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EERS8_(ptr noundef nonnull align 8 dereferenceable(24) %Items, ptr %add.ptr.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(68) %i) %is_sorted.i = getelementptr inbounds nuw i8, ptr %this, i64 336 store i8 0, ptr %is_sorted.i, align 8, !tbaa !6 call void @_ZN3irr3gui11CGUIListBox21recalculateItemHeightEv(ptr noundef nonnull align 8 dereferenceable(437) %this) call void @_ZN3irr3gui11CGUIListBox20recalculateItemWidthEi(ptr noundef nonnull align 8 dereferenceable(437) %this, i32 noundef %icon) - %21 = load ptr, ptr %i, align 8, !tbaa !81 - %cmp.i.i.i.i.i6 = icmp eq ptr %21, %0 + %20 = load ptr, ptr %i, align 8, !tbaa !81 + %cmp.i.i.i.i.i6 = icmp eq ptr %20, %0 br i1 %cmp.i.i.i.i.i6, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i8, label %if.then.i.i.i.i7 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i8: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit - %22 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !43 - %cmp3.i.i.i.i.i10 = icmp ult i64 %22, 4 + %21 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !43 + %cmp3.i.i.i.i.i10 = icmp ult i64 %21, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i10) br label %_ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit if.then.i.i.i.i7: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit - call void @_ZdlPv(ptr noundef %21) #24 + call void @_ZdlPv(ptr noundef %20) #24 br label %_ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit _ZN3irr3gui11CGUIListBox8ListItemD2Ev.exit: ; preds = %if.then.i.i.i.i7, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i8 @@ -5703,8 +5697,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -5722,23 +5715,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !166 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -5746,31 +5739,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !44 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !44 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !168 @@ -5839,8 +5832,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -5858,23 +5850,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !169 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !44 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !44 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -5882,31 +5874,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !44 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !44 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !44 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !44 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !44 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !44 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !44 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !44 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !44 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !44 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !44 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !44 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !171 @@ -6151,7 +6143,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -6191,10 +6183,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !101 %13 = load ptr, ptr %Name, align 8, !tbaa !149 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !101 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUISkin.cpp.ll b/bench/minetest/optimized/CGUISkin.cpp.ll index 36edc0f521..c3da28dac4 100644 --- a/bench/minetest/optimized/CGUISkin.cpp.ll +++ b/bench/minetest/optimized/CGUISkin.cpp.ll @@ -1109,8 +1109,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1128,23 +1127,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !30 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %if.end, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %newText, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !18 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !18 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %newText, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !18 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !18 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1152,31 +1151,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %if.end, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %if.end, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %newText, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !18 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !18 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !18 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !18 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %newText, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !18 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !18 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !18 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !18 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %newText, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !18 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !18 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !18 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !18 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %newText, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !18 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !18 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !18 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !18 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %if.end, label %for.body.i, !llvm.loop !36 diff --git a/bench/minetest/optimized/CGUIStaticText.cpp.ll b/bench/minetest/optimized/CGUIStaticText.cpp.ll index c6274132e3..d0525a1558 100644 --- a/bench/minetest/optimized/CGUIStaticText.cpp.ll +++ b/bench/minetest/optimized/CGUIStaticText.cpp.ll @@ -299,8 +299,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -318,23 +317,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %18, label %middle.block, label %vector.body, !llvm.loop !57 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %19 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %19, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %20 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.i.prol - store i32 %20, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %19 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %11, i64 %indvars.iv.i.prol + store i32 %19, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -342,31 +341,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %21 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %22 = icmp ugt i64 %21, -4 - br i1 %22, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %20 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %21 = icmp ugt i64 %20, -4 + br i1 %21, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %23 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 + %22 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 %arrayidx.i.i = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.i - store i32 %23, ptr %arrayidx.i.i, align 4, !tbaa !54 + store i32 %22, ptr %arrayidx.i.i, align 4, !tbaa !54 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %24 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 + %23 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.next.i - store i32 %24, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + store i32 %23, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %25 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 + %24 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.next.i.1 - store i32 %25, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + store i32 %24, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %26 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 + %25 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv.next.i.2 - store i32 %26, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + store i32 %25, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !63 @@ -378,19 +377,19 @@ _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.bo land.lhs.true: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit %vtable8 = load ptr, ptr %environment, align 8, !tbaa !3 %vfn = getelementptr inbounds nuw i8, ptr %vtable8, i64 96 - %27 = load ptr, ptr %vfn, align 8 - %call9 = call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 + %26 = load ptr, ptr %vfn, align 8 + %call9 = call noundef ptr %26(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 %tobool10.not = icmp eq ptr %call9, null br i1 %tobool10.not, label %if.end, label %if.then if.then: ; preds = %land.lhs.true %vtable11 = load ptr, ptr %environment, align 8, !tbaa !3 %vfn12 = getelementptr inbounds nuw i8, ptr %vtable11, i64 96 - %28 = load ptr, ptr %vfn12, align 8 - %call13 = call noundef ptr %28(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 + %27 = load ptr, ptr %vfn12, align 8 + %call13 = call noundef ptr %27(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 %vtable14 = load ptr, ptr %call13, align 8, !tbaa !3 - %29 = load ptr, ptr %vtable14, align 8 - %call16 = call i32 %29(ptr noundef nonnull align 8 dereferenceable(8) %call13, i32 noundef 2) #19 + %28 = load ptr, ptr %vtable14, align 8 + %call16 = call i32 %28(ptr noundef nonnull align 8 dereferenceable(8) %call13, i32 noundef 2) #19 store i32 %call16, ptr %BGColor, align 8, !tbaa !64 br label %if.end @@ -500,8 +499,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -519,23 +517,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !68 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -543,31 +541,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !54 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !54 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !70 @@ -579,19 +577,19 @@ _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.bo land.lhs.true: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit %vtable = load ptr, ptr %environment, align 8, !tbaa !3 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 96 - %20 = load ptr, ptr %vfn, align 8 - %call7 = call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 + %19 = load ptr, ptr %vfn, align 8 + %call7 = call noundef ptr %19(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 %tobool8.not = icmp eq ptr %call7, null br i1 %tobool8.not, label %if.end, label %if.then if.then: ; preds = %land.lhs.true %vtable9 = load ptr, ptr %environment, align 8, !tbaa !3 %vfn10 = getelementptr inbounds nuw i8, ptr %vtable9, i64 96 - %21 = load ptr, ptr %vfn10, align 8 - %call11 = call noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 + %20 = load ptr, ptr %vfn10, align 8 + %call11 = call noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(8) %environment) #19 %vtable12 = load ptr, ptr %call11, align 8, !tbaa !3 - %22 = load ptr, ptr %vtable12, align 8 - %call14 = call i32 %22(ptr noundef nonnull align 8 dereferenceable(8) %call11, i32 noundef 2) #19 + %21 = load ptr, ptr %vtable12, align 8 + %call14 = call i32 %21(ptr noundef nonnull align 8 dereferenceable(8) %call11, i32 noundef 2) #19 store i32 %call14, ptr %BGColor, align 8, !tbaa !64 br label %if.end @@ -1148,8 +1146,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph241 vector.ph241: ; preds = %for.body.lr.ph.i.i - %n.mod.vf242 = and i64 %call.i.i.i, 7 - %n.vec243 = sub nuw nsw i64 %conv.i.i, %n.mod.vf242 + %n.vec243 = and i64 %call.i.i.i, 4294967288 br label %vector.body246 vector.body246: ; preds = %vector.body246, %vector.ph241 @@ -1167,23 +1164,23 @@ vector.body246: ; preds = %vector.body246, %ve br i1 %39, label %middle.block238, label %vector.body246, !llvm.loop !84 middle.block238: ; preds = %vector.body246 + %n.mod.vf242 = and i64 %call.i.i.i, 7 %cmp.n245 = icmp eq i64 %n.mod.vf242, 0 br i1 %cmp.n245, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block238, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec243, %middle.block238 ] - %40 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter254 = and i64 %40, 3 + %xtraiter254 = and i64 %call.i.i.i, 3 %lcmp.mod255.not = icmp eq i64 %xtraiter254, 0 br i1 %lcmp.mod255.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter256 = phi i64 [ %prol.iter256.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.i.i.prol - %41 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.i.i.prol - store i32 %41, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %26, i64 %indvars.iv.i.i.prol + %40 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %32, i64 %indvars.iv.i.i.prol + store i32 %40, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter256.next = add nuw nsw i64 %prol.iter256, 1 %prol.iter256.cmp.not = icmp eq i64 %prol.iter256.next, %xtraiter254 @@ -1191,31 +1188,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %42 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %43 = icmp ugt i64 %42, -4 - br i1 %43, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i + %41 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %42 = icmp ugt i64 %41, -4 + br i1 %42, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.i.i - %44 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !54 + %43 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !54 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.i.i - store i32 %44, ptr %arrayidx.i.i.i, align 4, !tbaa !54 + store i32 %43, ptr %arrayidx.i.i.i, align 4, !tbaa !54 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.next.i.i - %45 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + %44 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next.i.i - store i32 %45, ptr %arrayidx.i.i.i.1, align 4, !tbaa !54 + store i32 %44, ptr %arrayidx.i.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.next.i.i.1 - %46 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + %45 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next.i.i.1 - store i32 %46, ptr %arrayidx.i.i.i.2, align 4, !tbaa !54 + store i32 %45, ptr %arrayidx.i.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.next.i.i.2 - %47 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + %46 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv.next.i.i.2 - store i32 %47, ptr %arrayidx.i.i.i.3, align 4, !tbaa !54 + store i32 %46, ptr %arrayidx.i.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i, !llvm.loop !86 @@ -1223,32 +1220,32 @@ for.body.i.i: ; preds = %for.body.i.i.prol.l _ZN3irr4core6stringIwEC2IwEEPKT_.exit: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block238, %if.end.i.i, %_ZN3irr4core6stringIwE5clearEb.exit.i.i %vtable73 = load ptr, ptr %this, align 8, !tbaa !3 %vfn74 = getelementptr inbounds nuw i8, ptr %vtable73, i64 328 - %48 = load ptr, ptr %vfn74, align 8 - %call75 = call i32 %48(ptr noundef nonnull align 8 dereferenceable(384) %this) #19 - %49 = load i32, ptr %HAlign, align 4, !tbaa !6 - %cmp78 = icmp eq i32 %49, 2 - %50 = load i32, ptr %VAlign, align 8, !tbaa !42 - %cmp80 = icmp eq i32 %50, 2 + %47 = load ptr, ptr %vfn74, align 8 + %call75 = call i32 %47(ptr noundef nonnull align 8 dereferenceable(384) %this) #19 + %48 = load i32, ptr %HAlign, align 4, !tbaa !6 + %cmp78 = icmp eq i32 %48, 2 + %49 = load i32, ptr %VAlign, align 8, !tbaa !42 + %cmp80 = icmp eq i32 %49, 2 %RestrainTextInside = getelementptr inbounds nuw i8, ptr %this, i64 321 - %51 = load i8, ptr %RestrainTextInside, align 1, !tbaa !48, !range !76, !noundef !77 - %tobool81.not = icmp eq i8 %51, 0 + %50 = load i8, ptr %RestrainTextInside, align 1, !tbaa !48, !range !76, !noundef !77 + %tobool81.not = icmp eq i8 %50, 0 %AbsoluteClippingRect82 = getelementptr inbounds nuw i8, ptr %this, i64 80 %cond = select i1 %tobool81.not, ptr null, ptr %AbsoluteClippingRect82 %vtable84 = load ptr, ptr %call38, align 8, !tbaa !3 - %52 = load ptr, ptr %vtable84, align 8 - call void %52(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp69, ptr noundef nonnull align 4 dereferenceable(16) %frameRect, i32 %call75, i1 noundef zeroext %cmp78, i1 noundef zeroext %cmp80, ptr noundef %cond) #19 - %53 = load ptr, ptr %ref.tmp69, align 8, !tbaa !56 - %cmp.i.i.i.i = icmp eq ptr %53, %28 + %51 = load ptr, ptr %vtable84, align 8 + call void %51(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp69, ptr noundef nonnull align 4 dereferenceable(16) %frameRect, i32 %call75, i1 noundef zeroext %cmp78, i1 noundef zeroext %cmp80, ptr noundef %cond) #19 + %52 = load ptr, ptr %ref.tmp69, align 8, !tbaa !56 + %cmp.i.i.i.i = icmp eq ptr %52, %28 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - %54 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !53 - %cmp3.i.i.i.i = icmp ult i64 %54, 4 + %53 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !53 + %cmp3.i.i.i.i = icmp ult i64 %53, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - call void @_ZdlPv(ptr noundef %53) #20 + call void @_ZdlPv(ptr noundef %52) #20 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i @@ -1257,8 +1254,8 @@ _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN if.else: ; preds = %if.then40 %LastBreakFont = getelementptr inbounds nuw i8, ptr %this, i64 344 - %55 = load ptr, ptr %LastBreakFont, align 8, !tbaa !87 - %cmp86.not = icmp eq ptr %call38, %55 + %54 = load ptr, ptr %LastBreakFont, align 8, !tbaa !87 + %cmp86.not = icmp eq ptr %call38, %54 br i1 %cmp86.not, label %if.end88, label %if.then87 if.then87: ; preds = %if.else @@ -1270,38 +1267,38 @@ if.end88: ; preds = %if.then87, %if.else call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %r, ptr noundef nonnull align 4 dereferenceable(16) %frameRect, i64 16, i1 false), !tbaa.struct !79 %vtable90 = load ptr, ptr %call38, align 8, !tbaa !3 %vfn91 = getelementptr inbounds nuw i8, ptr %vtable90, i64 8 - %56 = load ptr, ptr %vfn91, align 8 - %call92 = call i64 %56(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull @.str) #19 + %55 = load ptr, ptr %vfn91, align 8 + %call92 = call i64 %55(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull @.str) #19 %ref.tmp89.sroa.3.0.extract.shift = lshr i64 %call92, 32 %ref.tmp89.sroa.3.0.extract.trunc = trunc nuw i64 %ref.tmp89.sroa.3.0.extract.shift to i32 %vtable94 = load ptr, ptr %call38, align 8, !tbaa !3 %vfn95 = getelementptr inbounds nuw i8, ptr %vtable94, i64 56 - %57 = load ptr, ptr %vfn95, align 8 - %call96 = call noundef i32 %57(ptr noundef nonnull align 8 dereferenceable(8) %call38) #19 + %56 = load ptr, ptr %vfn95, align 8 + %call96 = call noundef i32 %56(ptr noundef nonnull align 8 dereferenceable(8) %call38) #19 %add97 = add i32 %call96, %ref.tmp89.sroa.3.0.extract.trunc %BrokenText = getelementptr inbounds nuw i8, ptr %this, i64 352 %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %this, i64 360 - %58 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !73 - %59 = load ptr, ptr %BrokenText, align 8, !tbaa !72 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %58 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %59 to i64 + %57 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !73 + %58 = load ptr, ptr %BrokenText, align 8, !tbaa !72 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %57 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %58 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = lshr exact i64 %sub.ptr.sub.i.i, 5 %conv.i188 = trunc i64 %sub.ptr.div.i.i to i32 %mul = mul i32 %add97, %conv.i188 %VAlign99 = getelementptr inbounds nuw i8, ptr %this, i64 312 - %60 = load i32, ptr %VAlign99, align 8, !tbaa !42 - switch i32 %60, label %if.end118 [ + %59 = load i32, ptr %VAlign99, align 8, !tbaa !42 + switch i32 %59, label %if.end118 [ i32 2, label %if.then101 i32 1, label %if.then111 ] if.then101: ; preds = %if.end88 %Y.i = getelementptr inbounds nuw i8, ptr %r, i64 4 - %61 = load i32, ptr %Y.i, align 4, !tbaa !82 + %60 = load i32, ptr %Y.i, align 4, !tbaa !82 %Y5.i = getelementptr inbounds nuw i8, ptr %r, i64 12 - %62 = load i32, ptr %Y5.i, align 4, !tbaa !81 - %add6.i = add nsw i32 %62, %61 + %61 = load i32, ptr %Y5.i, align 4, !tbaa !81 + %add6.i = add nsw i32 %61, %60 %div7.i = sdiv i32 %add6.i, 2 %div.neg = sdiv i32 %mul, -2 %sub105 = add nsw i32 %div7.i, %div.neg @@ -1310,23 +1307,23 @@ if.then101: ; preds = %if.end88 if.then111: ; preds = %if.end88 %Y113 = getelementptr inbounds nuw i8, ptr %r, i64 12 - %63 = load i32, ptr %Y113, align 4, !tbaa !81 - %sub114 = sub nsw i32 %63, %mul + %62 = load i32, ptr %Y113, align 4, !tbaa !81 + %sub114 = sub nsw i32 %62, %mul %Y116 = getelementptr inbounds nuw i8, ptr %r, i64 4 store i32 %sub114, ptr %Y116, align 4, !tbaa !82 br label %if.end118 if.end118: ; preds = %if.then111, %if.then101, %if.end88 - %64 = and i64 %sub.ptr.sub.i.i, 137438953440 - %cmp121231.not = icmp eq i64 %64, 0 + %63 = and i64 %sub.ptr.sub.i.i, 137438953440 + %cmp121231.not = icmp eq i64 %63, 0 br i1 %cmp121231.not, label %for.cond.cleanup, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.end118 %HAlign122 = getelementptr inbounds nuw i8, ptr %this, i64 308 %LowerRightCorner125 = getelementptr inbounds nuw i8, ptr %frameRect, i64 8 - %65 = getelementptr inbounds nuw i8, ptr %ref.tmp139, i64 16 + %64 = getelementptr inbounds nuw i8, ptr %ref.tmp139, i64 16 %_M_string_length.i.i.i.i199 = getelementptr inbounds nuw i8, ptr %ref.tmp139, i64 8 - %66 = getelementptr inbounds nuw i8, ptr %empty.i.i.i198, i64 16 + %65 = getelementptr inbounds nuw i8, ptr %empty.i.i.i198, i64 16 %_M_string_length.i.i.i.i.i.i213 = getelementptr inbounds nuw i8, ptr %empty.i.i.i198, i64 8 %RestrainTextInside150 = getelementptr inbounds nuw i8, ptr %this, i64 321 %AbsoluteClippingRect153 = getelementptr inbounds nuw i8, ptr %this, i64 80 @@ -1340,55 +1337,55 @@ for.cond.cleanup: ; preds = %_ZN3irr4core6string for.body: ; preds = %_ZN3irr4core6stringIwED2Ev.exit225, %for.body.lr.ph %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %_ZN3irr4core6stringIwED2Ev.exit225 ] - %67 = phi ptr [ %59, %for.body.lr.ph ], [ %102, %_ZN3irr4core6stringIwED2Ev.exit225 ] - %68 = load i32, ptr %HAlign122, align 4, !tbaa !6 - %cmp123 = icmp eq i32 %68, 1 + %66 = phi ptr [ %58, %for.body.lr.ph ], [ %100, %_ZN3irr4core6stringIwED2Ev.exit225 ] + %67 = load i32, ptr %HAlign122, align 4, !tbaa !6 + %cmp123 = icmp eq i32 %67, 1 br i1 %cmp123, label %if.then124, label %if.end138 if.then124: ; preds = %for.body - %69 = load i32, ptr %LowerRightCorner125, align 4, !tbaa !83 - %add.ptr.i.i = getelementptr inbounds nuw %"class.irr::core::string", ptr %67, i64 %indvars.iv - %70 = load ptr, ptr %add.ptr.i.i, align 8, !tbaa !56 + %68 = load i32, ptr %LowerRightCorner125, align 4, !tbaa !83 + %add.ptr.i.i = getelementptr inbounds nuw %"class.irr::core::string", ptr %66, i64 %indvars.iv + %69 = load ptr, ptr %add.ptr.i.i, align 8, !tbaa !56 %vtable131 = load ptr, ptr %call38, align 8, !tbaa !3 %vfn132 = getelementptr inbounds nuw i8, ptr %vtable131, i64 8 - %71 = load ptr, ptr %vfn132, align 8 - %call133 = call i64 %71(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef %70) #19 + %70 = load ptr, ptr %vfn132, align 8 + %call133 = call i64 %70(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef %69) #19 %ref.tmp127.sroa.0.0.extract.trunc = trunc i64 %call133 to i32 - %sub135 = sub i32 %69, %ref.tmp127.sroa.0.0.extract.trunc + %sub135 = sub i32 %68, %ref.tmp127.sroa.0.0.extract.trunc store i32 %sub135, ptr %r, align 4, !tbaa !80 %.pre = load ptr, ptr %BrokenText, align 8, !tbaa !72 br label %if.end138 if.end138: ; preds = %if.then124, %for.body - %72 = phi ptr [ %.pre, %if.then124 ], [ %67, %for.body ] + %71 = phi ptr [ %.pre, %if.then124 ], [ %66, %for.body ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp139) #19 - %add.ptr.i.i197 = getelementptr inbounds nuw %"class.irr::core::string", ptr %72, i64 %indvars.iv - %73 = load ptr, ptr %add.ptr.i.i197, align 8, !tbaa !56 - %74 = ptrtoint ptr %73 to i64 - store ptr %65, ptr %ref.tmp139, align 8, !tbaa !52 + %add.ptr.i.i197 = getelementptr inbounds nuw %"class.irr::core::string", ptr %71, i64 %indvars.iv + %72 = load ptr, ptr %add.ptr.i.i197, align 8, !tbaa !56 + %73 = ptrtoint ptr %72 to i64 + store ptr %64, ptr %ref.tmp139, align 8, !tbaa !52 store i64 0, ptr %_M_string_length.i.i.i.i199, align 8, !tbaa !53 - store i32 0, ptr %65, align 8, !tbaa !54 - %tobool.not.i.i200 = icmp eq ptr %73, null + store i32 0, ptr %64, align 8, !tbaa !54 + %tobool.not.i.i200 = icmp eq ptr %72, null br i1 %tobool.not.i.i200, label %if.then.i.i212, label %if.end.i.i201 if.then.i.i212: ; preds = %if.end138 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %empty.i.i.i198) #19 - store ptr %66, ptr %empty.i.i.i198, align 8, !tbaa !52 + store ptr %65, ptr %empty.i.i.i198, align 8, !tbaa !52 store i64 0, ptr %_M_string_length.i.i.i.i.i.i213, align 8, !tbaa !53 - store i32 0, ptr %66, align 8, !tbaa !54 + store i32 0, ptr %65, align 8, !tbaa !54 call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp139, ptr noundef nonnull align 8 dereferenceable(32) %empty.i.i.i198) #19 - %75 = load ptr, ptr %empty.i.i.i198, align 8, !tbaa !56 - %cmp.i.i.i.i.i.i214 = icmp eq ptr %75, %66 + %74 = load ptr, ptr %empty.i.i.i198, align 8, !tbaa !56 + %cmp.i.i.i.i.i.i214 = icmp eq ptr %74, %65 br i1 %cmp.i.i.i.i.i.i214, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i217, label %if.then.i.i.i.i.i215 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i217: ; preds = %if.then.i.i212 - %76 = load i64, ptr %_M_string_length.i.i.i.i.i.i213, align 8, !tbaa !53 - %cmp3.i.i.i.i.i.i218 = icmp ult i64 %76, 4 + %75 = load i64, ptr %_M_string_length.i.i.i.i.i.i213, align 8, !tbaa !53 + %cmp3.i.i.i.i.i.i218 = icmp ult i64 %75, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i218) br label %_ZN3irr4core6stringIwE5clearEb.exit.i.i216 if.then.i.i.i.i.i215: ; preds = %if.then.i.i212 - call void @_ZdlPv(ptr noundef %75) #20 + call void @_ZdlPv(ptr noundef %74) #20 br label %_ZN3irr4core6stringIwE5clearEb.exit.i.i216 _ZN3irr4core6stringIwE5clearEb.exit.i.i216: ; preds = %if.then.i.i.i.i.i215, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i217 @@ -1396,58 +1393,57 @@ _ZN3irr4core6stringIwE5clearEb.exit.i.i216: ; preds = %if.then.i.i.i.i.i21 br label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219 if.end.i.i201: ; preds = %if.end138 - %call.i.i.i202 = call i64 @wcslen(ptr noundef nonnull %73) #21 + %call.i.i.i202 = call i64 @wcslen(ptr noundef nonnull %72) #21 %conv.i.i203 = and i64 %call.i.i.i202, 4294967295 call void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEmw(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp139, i64 noundef %conv.i.i203, i32 noundef signext 0) #19 %cmp11.not.i.i204 = icmp eq i64 %conv.i.i203, 0 br i1 %cmp11.not.i.i204, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219, label %for.body.lr.ph.i.i205 for.body.lr.ph.i.i205: ; preds = %if.end.i.i201 - %77 = load ptr, ptr %ref.tmp139, align 8, !tbaa !56 + %76 = load ptr, ptr %ref.tmp139, align 8, !tbaa !56 %min.iters.check = icmp samesign ult i64 %conv.i.i203, 8 - %78 = ptrtoint ptr %77 to i64 - %79 = sub i64 %78, %74 - %diff.check = icmp ult i64 %79, 32 + %77 = ptrtoint ptr %76 to i64 + %78 = sub i64 %77, %73 + %diff.check = icmp ult i64 %78, 32 %or.cond253 = select i1 %min.iters.check, i1 true, i1 %diff.check br i1 %or.cond253, label %for.body.i.i206.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i205 - %n.mod.vf = and i64 %call.i.i.i202, 7 - %n.vec = sub nuw nsw i64 %conv.i.i203, %n.mod.vf + %n.vec = and i64 %call.i.i.i202, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] - %80 = getelementptr inbounds i32, ptr %73, i64 %index - %81 = getelementptr inbounds nuw i8, ptr %80, i64 16 - %wide.load = load <4 x i32>, ptr %80, align 4, !tbaa !54 - %wide.load235 = load <4 x i32>, ptr %81, align 4, !tbaa !54 - %82 = getelementptr inbounds i32, ptr %77, i64 %index - %83 = getelementptr inbounds nuw i8, ptr %82, i64 16 - store <4 x i32> %wide.load, ptr %82, align 4, !tbaa !54 - store <4 x i32> %wide.load235, ptr %83, align 4, !tbaa !54 + %79 = getelementptr inbounds i32, ptr %72, i64 %index + %80 = getelementptr inbounds nuw i8, ptr %79, i64 16 + %wide.load = load <4 x i32>, ptr %79, align 4, !tbaa !54 + %wide.load235 = load <4 x i32>, ptr %80, align 4, !tbaa !54 + %81 = getelementptr inbounds i32, ptr %76, i64 %index + %82 = getelementptr inbounds nuw i8, ptr %81, i64 16 + store <4 x i32> %wide.load, ptr %81, align 4, !tbaa !54 + store <4 x i32> %wide.load235, ptr %82, align 4, !tbaa !54 %index.next = add nuw i64 %index, 8 - %84 = icmp eq i64 %index.next, %n.vec - br i1 %84, label %middle.block, label %vector.body, !llvm.loop !88 + %83 = icmp eq i64 %index.next, %n.vec + br i1 %83, label %middle.block, label %vector.body, !llvm.loop !88 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i202, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219, label %for.body.i.i206.preheader for.body.i.i206.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i205 %indvars.iv.i.i207.ph = phi i64 [ 0, %for.body.lr.ph.i.i205 ], [ %n.vec, %middle.block ] - %85 = sub i64 %call.i.i.i202, %indvars.iv.i.i207.ph - %xtraiter = and i64 %85, 3 + %xtraiter = and i64 %call.i.i.i202, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i206.prol.loopexit, label %for.body.i.i206.prol for.body.i.i206.prol: ; preds = %for.body.i.i206.preheader, %for.body.i.i206.prol %indvars.iv.i.i207.prol = phi i64 [ %indvars.iv.next.i.i210.prol, %for.body.i.i206.prol ], [ %indvars.iv.i.i207.ph, %for.body.i.i206.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i206.prol ], [ 0, %for.body.i.i206.preheader ] - %arrayidx.i.i208.prol = getelementptr inbounds i32, ptr %73, i64 %indvars.iv.i.i207.prol - %86 = load i32, ptr %arrayidx.i.i208.prol, align 4, !tbaa !54 - %arrayidx.i.i.i209.prol = getelementptr inbounds i32, ptr %77, i64 %indvars.iv.i.i207.prol - store i32 %86, ptr %arrayidx.i.i.i209.prol, align 4, !tbaa !54 + %arrayidx.i.i208.prol = getelementptr inbounds nuw i32, ptr %72, i64 %indvars.iv.i.i207.prol + %84 = load i32, ptr %arrayidx.i.i208.prol, align 4, !tbaa !54 + %arrayidx.i.i.i209.prol = getelementptr inbounds nuw i32, ptr %76, i64 %indvars.iv.i.i207.prol + store i32 %84, ptr %arrayidx.i.i.i209.prol, align 4, !tbaa !54 %indvars.iv.next.i.i210.prol = add nuw nsw i64 %indvars.iv.i.i207.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1455,31 +1451,31 @@ for.body.i.i206.prol: ; preds = %for.body.i.i206.pre for.body.i.i206.prol.loopexit: ; preds = %for.body.i.i206.prol, %for.body.i.i206.preheader %indvars.iv.i.i207.unr = phi i64 [ %indvars.iv.i.i207.ph, %for.body.i.i206.preheader ], [ %indvars.iv.next.i.i210.prol, %for.body.i.i206.prol ] - %87 = sub nsw i64 %indvars.iv.i.i207.ph, %conv.i.i203 - %88 = icmp ugt i64 %87, -4 - br i1 %88, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219, label %for.body.i.i206 + %85 = sub nsw i64 %indvars.iv.i.i207.ph, %conv.i.i203 + %86 = icmp ugt i64 %85, -4 + br i1 %86, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219, label %for.body.i.i206 for.body.i.i206: ; preds = %for.body.i.i206.prol.loopexit, %for.body.i.i206 %indvars.iv.i.i207 = phi i64 [ %indvars.iv.next.i.i210.3, %for.body.i.i206 ], [ %indvars.iv.i.i207.unr, %for.body.i.i206.prol.loopexit ] - %arrayidx.i.i208 = getelementptr inbounds i32, ptr %73, i64 %indvars.iv.i.i207 - %89 = load i32, ptr %arrayidx.i.i208, align 4, !tbaa !54 - %arrayidx.i.i.i209 = getelementptr inbounds i32, ptr %77, i64 %indvars.iv.i.i207 - store i32 %89, ptr %arrayidx.i.i.i209, align 4, !tbaa !54 + %arrayidx.i.i208 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.i.i207 + %87 = load i32, ptr %arrayidx.i.i208, align 4, !tbaa !54 + %arrayidx.i.i.i209 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.i.i207 + store i32 %87, ptr %arrayidx.i.i.i209, align 4, !tbaa !54 %indvars.iv.next.i.i210 = add nuw nsw i64 %indvars.iv.i.i207, 1 - %arrayidx.i.i208.1 = getelementptr inbounds i32, ptr %73, i64 %indvars.iv.next.i.i210 - %90 = load i32, ptr %arrayidx.i.i208.1, align 4, !tbaa !54 - %arrayidx.i.i.i209.1 = getelementptr inbounds i32, ptr %77, i64 %indvars.iv.next.i.i210 - store i32 %90, ptr %arrayidx.i.i.i209.1, align 4, !tbaa !54 + %arrayidx.i.i208.1 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next.i.i210 + %88 = load i32, ptr %arrayidx.i.i208.1, align 4, !tbaa !54 + %arrayidx.i.i.i209.1 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.next.i.i210 + store i32 %88, ptr %arrayidx.i.i.i209.1, align 4, !tbaa !54 %indvars.iv.next.i.i210.1 = add nuw nsw i64 %indvars.iv.i.i207, 2 - %arrayidx.i.i208.2 = getelementptr inbounds i32, ptr %73, i64 %indvars.iv.next.i.i210.1 - %91 = load i32, ptr %arrayidx.i.i208.2, align 4, !tbaa !54 - %arrayidx.i.i.i209.2 = getelementptr inbounds i32, ptr %77, i64 %indvars.iv.next.i.i210.1 - store i32 %91, ptr %arrayidx.i.i.i209.2, align 4, !tbaa !54 + %arrayidx.i.i208.2 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next.i.i210.1 + %89 = load i32, ptr %arrayidx.i.i208.2, align 4, !tbaa !54 + %arrayidx.i.i.i209.2 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.next.i.i210.1 + store i32 %89, ptr %arrayidx.i.i.i209.2, align 4, !tbaa !54 %indvars.iv.next.i.i210.2 = add nuw nsw i64 %indvars.iv.i.i207, 3 - %arrayidx.i.i208.3 = getelementptr inbounds i32, ptr %73, i64 %indvars.iv.next.i.i210.2 - %92 = load i32, ptr %arrayidx.i.i208.3, align 4, !tbaa !54 - %arrayidx.i.i.i209.3 = getelementptr inbounds i32, ptr %77, i64 %indvars.iv.next.i.i210.2 - store i32 %92, ptr %arrayidx.i.i.i209.3, align 4, !tbaa !54 + %arrayidx.i.i208.3 = getelementptr inbounds i32, ptr %72, i64 %indvars.iv.next.i.i210.2 + %90 = load i32, ptr %arrayidx.i.i208.3, align 4, !tbaa !54 + %arrayidx.i.i.i209.3 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.next.i.i210.2 + store i32 %90, ptr %arrayidx.i.i.i209.3, align 4, !tbaa !54 %indvars.iv.next.i.i210.3 = add nuw nsw i64 %indvars.iv.i.i207, 4 %exitcond.not.i.i211.3 = icmp eq i64 %indvars.iv.next.i.i210.3, %conv.i.i203 br i1 %exitcond.not.i.i211.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219, label %for.body.i.i206, !llvm.loop !90 @@ -1487,54 +1483,54 @@ for.body.i.i206: ; preds = %for.body.i.i206.pro _ZN3irr4core6stringIwEC2IwEEPKT_.exit219: ; preds = %for.body.i.i206, %for.body.i.i206.prol.loopexit, %middle.block, %if.end.i.i201, %_ZN3irr4core6stringIwE5clearEb.exit.i.i216 %vtable144 = load ptr, ptr %this, align 8, !tbaa !3 %vfn145 = getelementptr inbounds nuw i8, ptr %vtable144, i64 328 - %93 = load ptr, ptr %vfn145, align 8 - %call146 = call i32 %93(ptr noundef nonnull align 8 dereferenceable(384) %this) #19 - %94 = load i32, ptr %HAlign122, align 4, !tbaa !6 - %cmp149 = icmp eq i32 %94, 2 - %95 = load i8, ptr %RestrainTextInside150, align 1, !tbaa !48, !range !76, !noundef !77 - %tobool151.not = icmp eq i8 %95, 0 + %91 = load ptr, ptr %vfn145, align 8 + %call146 = call i32 %91(ptr noundef nonnull align 8 dereferenceable(384) %this) #19 + %92 = load i32, ptr %HAlign122, align 4, !tbaa !6 + %cmp149 = icmp eq i32 %92, 2 + %93 = load i8, ptr %RestrainTextInside150, align 1, !tbaa !48, !range !76, !noundef !77 + %tobool151.not = icmp eq i8 %93, 0 %cond156 = select i1 %tobool151.not, ptr null, ptr %AbsoluteClippingRect153 %vtable158 = load ptr, ptr %call38, align 8, !tbaa !3 - %96 = load ptr, ptr %vtable158, align 8 - call void %96(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp139, ptr noundef nonnull align 4 dereferenceable(16) %r, i32 %call146, i1 noundef zeroext %cmp149, i1 noundef zeroext false, ptr noundef %cond156) #19 - %97 = load ptr, ptr %ref.tmp139, align 8, !tbaa !56 - %cmp.i.i.i.i220 = icmp eq ptr %97, %65 + %94 = load ptr, ptr %vtable158, align 8 + call void %94(ptr noundef nonnull align 8 dereferenceable(8) %call38, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp139, ptr noundef nonnull align 4 dereferenceable(16) %r, i32 %call146, i1 noundef zeroext %cmp149, i1 noundef zeroext false, ptr noundef %cond156) #19 + %95 = load ptr, ptr %ref.tmp139, align 8, !tbaa !56 + %cmp.i.i.i.i220 = icmp eq ptr %95, %64 br i1 %cmp.i.i.i.i220, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i222, label %if.then.i.i.i221 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i222: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219 - %98 = load i64, ptr %_M_string_length.i.i.i.i199, align 8, !tbaa !53 - %cmp3.i.i.i.i224 = icmp ult i64 %98, 4 + %96 = load i64, ptr %_M_string_length.i.i.i.i199, align 8, !tbaa !53 + %cmp3.i.i.i.i224 = icmp ult i64 %96, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i224) br label %_ZN3irr4core6stringIwED2Ev.exit225 if.then.i.i.i221: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit219 - call void @_ZdlPv(ptr noundef %97) #20 + call void @_ZdlPv(ptr noundef %95) #20 br label %_ZN3irr4core6stringIwED2Ev.exit225 _ZN3irr4core6stringIwED2Ev.exit225: ; preds = %if.then.i.i.i221, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i222 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp139) #19 - %99 = load i32, ptr %Y161, align 4, !tbaa !81 - %add162 = add nsw i32 %99, %add97 + %97 = load i32, ptr %Y161, align 4, !tbaa !81 + %add162 = add nsw i32 %97, %add97 store i32 %add162, ptr %Y161, align 4, !tbaa !81 - %100 = load i32, ptr %Y164, align 4, !tbaa !82 - %add165 = add nsw i32 %100, %add97 + %98 = load i32, ptr %Y164, align 4, !tbaa !82 + %add165 = add nsw i32 %98, %add97 store i32 %add165, ptr %Y164, align 4, !tbaa !82 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %101 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !73 - %102 = load ptr, ptr %BrokenText, align 8, !tbaa !72 - %sub.ptr.lhs.cast.i.i190 = ptrtoint ptr %101 to i64 - %sub.ptr.rhs.cast.i.i191 = ptrtoint ptr %102 to i64 + %99 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !73 + %100 = load ptr, ptr %BrokenText, align 8, !tbaa !72 + %sub.ptr.lhs.cast.i.i190 = ptrtoint ptr %99 to i64 + %sub.ptr.rhs.cast.i.i191 = ptrtoint ptr %100 to i64 %sub.ptr.sub.i.i192 = sub i64 %sub.ptr.lhs.cast.i.i190, %sub.ptr.rhs.cast.i.i191 %sub.ptr.div.i.i193 = lshr exact i64 %sub.ptr.sub.i.i192, 5 - %103 = and i64 %sub.ptr.div.i.i193, 4294967295 - %cmp121 = icmp samesign ult i64 %indvars.iv.next, %103 + %101 = and i64 %sub.ptr.div.i.i193, 4294967295 + %cmp121 = icmp samesign ult i64 %indvars.iv.next, %101 br i1 %cmp121, label %for.body, label %for.cond.cleanup, !llvm.loop !91 if.end168: ; preds = %for.cond.cleanup, %_ZN3irr4core6stringIwED2Ev.exit, %if.then35, %if.end32 %vtable.i = load ptr, ptr %this, align 8, !tbaa !3 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 104 - %104 = load ptr, ptr %vfn.i, align 8 - %call.i = call noundef zeroext i1 %104(ptr noundef nonnull align 8 dereferenceable(308) %this) #19 + %102 = load ptr, ptr %vfn.i, align 8 + %call.i = call noundef zeroext i1 %102(ptr noundef nonnull align 8 dereferenceable(308) %this) #19 br i1 %call.i, label %if.then.i, label %_ZN3irr3gui11IGUIElement4drawEv.exit if.then.i: ; preds = %if.end168 @@ -1546,11 +1542,11 @@ if.then.i: ; preds = %if.end168 for.body.i: ; preds = %if.then.i, %for.body.i %__begin3.sroa.0.015.i = phi ptr [ %__begin3.sroa.0.0.i, %for.body.i ], [ %__begin3.sroa.0.013.i, %if.then.i ] %_M_storage.i.i.i = getelementptr inbounds nuw i8, ptr %__begin3.sroa.0.015.i, i64 16 - %105 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !93 - %vtable7.i = load ptr, ptr %105, align 8, !tbaa !3 + %103 = load ptr, ptr %_M_storage.i.i.i, align 8, !tbaa !93 + %vtable7.i = load ptr, ptr %103, align 8, !tbaa !3 %vfn8.i = getelementptr inbounds nuw i8, ptr %vtable7.i, i64 80 - %106 = load ptr, ptr %vfn8.i, align 8 - call void %106(ptr noundef nonnull align 8 dereferenceable(308) %105) #19 + %104 = load ptr, ptr %vfn8.i, align 8 + call void %104(ptr noundef nonnull align 8 dereferenceable(308) %103) #19 %__begin3.sroa.0.0.i = load ptr, ptr %__begin3.sroa.0.015.i, align 8, !tbaa !92 %cmp.i.not.i = icmp eq ptr %__begin3.sroa.0.0.i, %Children.i br i1 %cmp.i.not.i, label %_ZN3irr3gui11IGUIElement4drawEv.exit, label %for.body.i @@ -3418,8 +3414,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3437,23 +3432,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !134 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i.prol - %12 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.i.prol - store i32 %12, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.i.prol + %11 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.i.prol + store i32 %11, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3461,31 +3456,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i + %12 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i - %15 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !54 + %14 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !54 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.i - store i32 %15, ptr %arrayidx.i.i.i, align 4, !tbaa !54 + store i32 %14, ptr %arrayidx.i.i.i, align 4, !tbaa !54 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i - %16 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + %15 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.i - store i32 %16, ptr %arrayidx.i.i.i.1, align 4, !tbaa !54 + store i32 %15, ptr %arrayidx.i.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.1 - %17 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + %16 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.i.1 - store i32 %17, ptr %arrayidx.i.i.i.2, align 4, !tbaa !54 + store i32 %16, ptr %arrayidx.i.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.2 - %18 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + %17 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.i.2 - store i32 %18, ptr %arrayidx.i.i.i.3, align 4, !tbaa !54 + store i32 %17, ptr %arrayidx.i.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i, !llvm.loop !136 @@ -3547,8 +3542,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3566,23 +3560,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !137 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3590,31 +3584,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !54 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !54 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !139 @@ -4344,8 +4338,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4363,23 +4356,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !163 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !54 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !54 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4387,31 +4380,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !54 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !54 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !54 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !54 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !54 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !54 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !54 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !54 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !54 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !54 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !54 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !54 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !165 @@ -4656,7 +4649,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -4696,10 +4689,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !131 %13 = load ptr, ptr %Name, align 8, !tbaa !168 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !131 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/CGUITTFont.cpp.ll b/bench/minetest/optimized/CGUITTFont.cpp.ll index 2767789841..5d2aa282ef 100644 --- a/bench/minetest/optimized/CGUITTFont.cpp.ll +++ b/bench/minetest/optimized/CGUITTFont.cpp.ll @@ -5788,8 +5788,7 @@ for.body.lr.ph.i.i: ; preds = %.noexc.i br i1 %or.cond1036, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i643, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -5807,23 +5806,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %130, label %middle.block, label %vector.body, !llvm.loop !257 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont190, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %131 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %131, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %l1, i64 %indvars.iv.i.i.prol - %132 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !199 - %arrayidx.i.i.i646.prol = getelementptr inbounds i32, ptr %123, i64 %indvars.iv.i.i.prol - store i32 %132, ptr %arrayidx.i.i.i646.prol, align 4, !tbaa !199 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %l1, i64 %indvars.iv.i.i.prol + %131 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !199 + %arrayidx.i.i.i646.prol = getelementptr inbounds nuw i32, ptr %123, i64 %indvars.iv.i.i.prol + store i32 %131, ptr %arrayidx.i.i.i646.prol, align 4, !tbaa !199 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -5831,50 +5830,50 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %133 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i643 - %134 = icmp ugt i64 %133, -4 - br i1 %134, label %invoke.cont190, label %for.body.i.i + %132 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i643 + %133 = icmp ugt i64 %132, -4 + br i1 %133, label %invoke.cont190, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %l1, i64 %indvars.iv.i.i - %135 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !199 + %134 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !199 %arrayidx.i.i.i646 = getelementptr inbounds i32, ptr %123, i64 %indvars.iv.i.i - store i32 %135, ptr %arrayidx.i.i.i646, align 4, !tbaa !199 + store i32 %134, ptr %arrayidx.i.i.i646, align 4, !tbaa !199 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %l1, i64 %indvars.iv.next.i.i - %136 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !199 + %135 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !199 %arrayidx.i.i.i646.1 = getelementptr inbounds i32, ptr %123, i64 %indvars.iv.next.i.i - store i32 %136, ptr %arrayidx.i.i.i646.1, align 4, !tbaa !199 + store i32 %135, ptr %arrayidx.i.i.i646.1, align 4, !tbaa !199 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %l1, i64 %indvars.iv.next.i.i.1 - %137 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !199 + %136 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !199 %arrayidx.i.i.i646.2 = getelementptr inbounds i32, ptr %123, i64 %indvars.iv.next.i.i.1 - store i32 %137, ptr %arrayidx.i.i.i646.2, align 4, !tbaa !199 + store i32 %136, ptr %arrayidx.i.i.i646.2, align 4, !tbaa !199 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %l1, i64 %indvars.iv.next.i.i.2 - %138 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !199 + %137 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !199 %arrayidx.i.i.i646.3 = getelementptr inbounds i32, ptr %123, i64 %indvars.iv.next.i.i.2 - store i32 %138, ptr %arrayidx.i.i.i646.3, align 4, !tbaa !199 + store i32 %137, ptr %arrayidx.i.i.i646.3, align 4, !tbaa !199 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i643 br i1 %exitcond.not.i.i.3, label %invoke.cont190, label %for.body.i.i, !llvm.loop !260 lpad.i: ; preds = %invoke.cont177 - %139 = landingpad { ptr, i32 } + %138 = landingpad { ptr, i32 } cleanup - %140 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 - %cmp.i.i.i.i644 = icmp eq ptr %140, %28 + %139 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 + %cmp.i.i.i.i644 = icmp eq ptr %139, %28 br i1 %cmp.i.i.i.i644, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i645 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %lpad.i - %141 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 - %cmp3.i.i.i.i = icmp ult i64 %141, 4 + %140 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 + %cmp3.i.i.i.i = icmp ult i64 %140, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %ehcleanup213 if.then.i.i.i645: ; preds = %lpad.i - call void @_ZdlPv(ptr noundef %140) #29 + call void @_ZdlPv(ptr noundef %139) #29 br label %ehcleanup213 invoke.cont190: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %.noexc.i @@ -5886,44 +5885,44 @@ invoke.cont190: ; preds = %for.body.i.i, %for. %ref.tmp192.sroa.0.0.insert.ext = zext i32 %sub194 to i64 %ref.tmp192.sroa.0.0.insert.insert = or disjoint i64 %ref.tmp192.sroa.5.0.insert.shift, %ref.tmp192.sroa.0.0.insert.ext store i64 %ref.tmp192.sroa.0.0.insert.insert, ptr %ref.tmp191, align 8, !tbaa.struct !29 - %142 = load i64, ptr %LowerRightCorner.i531, align 4, !tbaa.struct !29 - store i64 %142, ptr %LowerRightCorner.i648, align 8, !tbaa.struct !29 + %141 = load i64, ptr %LowerRightCorner.i531, align 4, !tbaa.struct !29 + store i64 %141, ptr %LowerRightCorner.i648, align 8, !tbaa.struct !29 %conv200 = and i64 %sub.ptr.div.i642, 4294967295 - %143 = load ptr, ptr %_M_finish.i, align 8, !tbaa !239 - %144 = load ptr, ptr %call, align 8, !tbaa !179 - %sub.ptr.lhs.cast.i650 = ptrtoint ptr %143 to i64 - %sub.ptr.rhs.cast.i651 = ptrtoint ptr %144 to i64 + %142 = load ptr, ptr %_M_finish.i, align 8, !tbaa !239 + %143 = load ptr, ptr %call, align 8, !tbaa !179 + %sub.ptr.lhs.cast.i650 = ptrtoint ptr %142 to i64 + %sub.ptr.rhs.cast.i651 = ptrtoint ptr %143 to i64 %sub.ptr.sub.i652 = sub i64 %sub.ptr.lhs.cast.i650, %sub.ptr.rhs.cast.i651 %sub.ptr.div.i653 = ashr exact i64 %sub.ptr.sub.i652, 2 %cmp202 = icmp ult i64 %conv200, %sub.ptr.div.i653 br i1 %cmp202, label %cond.true, label %cond.end cond.true: ; preds = %invoke.cont190 - %add.ptr.i654 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %144, i64 %conv200 - %145 = load i32, ptr %add.ptr.i654, align 4, !tbaa !30 + %add.ptr.i654 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %143, i64 %conv200 + %144 = load i32, ptr %add.ptr.i654, align 4, !tbaa !30 br label %cond.end cond.end: ; preds = %cond.true, %invoke.cont190 - %agg.tmp.sroa.0.0 = phi i32 [ %145, %cond.true ], [ -1, %invoke.cont190 ] + %agg.tmp.sroa.0.0 = phi i32 [ %144, %cond.true ], [ -1, %invoke.cont190 ] %vtable207 = load ptr, ptr %122, align 8, !tbaa !12 - %146 = load ptr, ptr %vtable207, align 8 - invoke void %146(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp187, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp191, i32 %agg.tmp.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef %clip) + %145 = load ptr, ptr %vtable207, align 8 + invoke void %145(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp187, ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp191, i32 %agg.tmp.sroa.0.0, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef %clip) to label %invoke.cont209 unwind label %lpad197 invoke.cont209: ; preds = %cond.end call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp191) #30 - %147 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 - %cmp.i.i.i.i655 = icmp eq ptr %147, %28 + %146 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 + %cmp.i.i.i.i655 = icmp eq ptr %146, %28 br i1 %cmp.i.i.i.i655, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i658, label %if.then.i.i.i656 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i658: ; preds = %invoke.cont209 - %148 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 - %cmp3.i.i.i.i660 = icmp ult i64 %148, 4 + %147 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 + %cmp3.i.i.i.i660 = icmp ult i64 %147, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i660) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i656: ; preds = %invoke.cont209 - call void @_ZdlPv(ptr noundef %147) #29 + call void @_ZdlPv(ptr noundef %146) #29 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i656, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i658 @@ -5932,41 +5931,41 @@ _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i656, % br label %if.end215 lpad169: ; preds = %invoke.cont170, %if.then165 - %149 = landingpad { ptr, i32 } + %148 = landingpad { ptr, i32 } cleanup br label %ehcleanup228 lpad197: ; preds = %cond.end - %150 = landingpad { ptr, i32 } + %149 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp191) #30 - %151 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 - %cmp.i.i.i.i661 = icmp eq ptr %151, %28 + %150 = load ptr, ptr %ref.tmp187, align 8, !tbaa !195 + %cmp.i.i.i.i661 = icmp eq ptr %150, %28 br i1 %cmp.i.i.i.i661, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i664, label %if.then.i.i.i662 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i664: ; preds = %lpad197 - %152 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 - %cmp3.i.i.i.i666 = icmp ult i64 %152, 4 + %151 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !201 + %cmp3.i.i.i.i666 = icmp ult i64 %151, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i666) br label %ehcleanup213 if.then.i.i.i662: ; preds = %lpad197 - call void @_ZdlPv(ptr noundef %151) #29 + call void @_ZdlPv(ptr noundef %150) #29 br label %ehcleanup213 ehcleanup213: ; preds = %if.then.i.i.i662, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i664, %if.then.i.i.i645, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i - %.pn498 = phi { ptr, i32 } [ %139, %if.then.i.i.i645 ], [ %139, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ], [ %150, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i664 ], [ %150, %if.then.i.i.i662 ] + %.pn498 = phi { ptr, i32 } [ %138, %if.then.i.i.i645 ], [ %138, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ], [ %149, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i664 ], [ %149, %if.then.i.i.i662 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp187) #30 br label %ehcleanup228 if.end215: ; preds = %_ZN3irr4core6stringIwED2Ev.exit, %if.then163 - %153 = phi ptr [ %.pre, %_ZN3irr4core6stringIwED2Ev.exit ], [ %117, %if.then163 ] + %152 = phi ptr [ %.pre, %_ZN3irr4core6stringIwED2Ev.exit ], [ %117, %if.then163 ] %offset.sroa.0.5 = phi i32 [ %add173, %_ZN3irr4core6stringIwED2Ev.exit ], [ %offset.sroa.0.4, %if.then163 ] %offset.sroa.19.3 = phi i32 [ %add180, %_ZN3irr4core6stringIwED2Ev.exit ], [ %offset.sroa.19.2, %if.then163 ] - %vtable219 = load ptr, ptr %153, align 8, !tbaa !12 + %vtable219 = load ptr, ptr %152, align 8, !tbaa !12 %vfn220 = getelementptr inbounds nuw i8, ptr %vtable219, i64 8 - %154 = load ptr, ptr %vfn220, align 8 - %call223 = invoke i64 %154(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull %l1) + %153 = load ptr, ptr %vfn220, align 8 + %call223 = invoke i64 %153(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull %l1) to label %invoke.cont222 unwind label %lpad221 invoke.cont222: ; preds = %if.end215 @@ -5977,12 +5976,12 @@ invoke.cont222: ; preds = %if.end215 br label %cleanup lpad221: ; preds = %if.end215 - %155 = landingpad { ptr, i32 } + %154 = landingpad { ptr, i32 } cleanup br label %ehcleanup228 ehcleanup228: ; preds = %lpad221, %ehcleanup213, %lpad169 - %.pn500 = phi { ptr, i32 } [ %155, %lpad221 ], [ %.pn498, %ehcleanup213 ], [ %149, %lpad169 ] + %.pn500 = phi { ptr, i32 } [ %154, %lpad221 ], [ %.pn498, %ehcleanup213 ], [ %148, %lpad169 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %l2) #30 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %l1) #30 br label %ehcleanup400 @@ -5993,36 +5992,36 @@ cleanup: ; preds = %invoke.cont222, %if %offset.sroa.0.7 = phi i32 [ %add74, %if.then66 ], [ %39, %if.then58 ], [ %offset.sroa.0.4, %if.else161 ], [ %add226, %invoke.cont222 ], [ %add160, %invoke.cont157 ] %offset.sroa.19.5 = phi i32 [ %conv61, %if.then66 ], [ %conv61, %if.then58 ], [ %offset.sroa.19.2, %if.else161 ], [ %offset.sroa.19.3, %invoke.cont222 ], [ %offset.sroa.19.2, %invoke.cont157 ] %iter.sroa.0.2 = getelementptr inbounds nuw i8, ptr %iter.sroa.0.1.ph.pn, i64 4 - %156 = load ptr, ptr %utext, align 8, !tbaa !140 - %157 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 - %add.ptr.i = getelementptr inbounds i32, ptr %156, i64 %157 + %155 = load ptr, ptr %utext, align 8, !tbaa !140 + %156 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 + %add.ptr.i = getelementptr inbounds i32, ptr %155, i64 %156 %cmp.i.not = icmp eq ptr %iter.sroa.0.2, %add.ptr.i br i1 %cmp.i.not, label %while.end, label %while.body while.end: ; preds = %cleanup, %_ZNK3irr3gui10CGUITTFont23convertWCharToU32StringB5cxx11EPKw.exit - %158 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !91 - %159 = load ptr, ptr %Glyph_Pages, align 8, !tbaa !93 - %sub.ptr.lhs.cast.i.i12.i = ptrtoint ptr %158 to i64 - %sub.ptr.rhs.cast.i.i13.i = ptrtoint ptr %159 to i64 + %157 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !91 + %158 = load ptr, ptr %Glyph_Pages, align 8, !tbaa !93 + %sub.ptr.lhs.cast.i.i12.i = ptrtoint ptr %157 to i64 + %sub.ptr.rhs.cast.i.i13.i = ptrtoint ptr %158 to i64 %sub.ptr.sub.i.i14.i = sub i64 %sub.ptr.lhs.cast.i.i12.i, %sub.ptr.rhs.cast.i.i13.i - %160 = and i64 %sub.ptr.sub.i.i14.i, 34359738360 - %cmp.not17.i = icmp eq i64 %160, 0 + %159 = and i64 %sub.ptr.sub.i.i14.i, 34359738360 + %cmp.not17.i = icmp eq i64 %159, 0 br i1 %cmp.not17.i, label %invoke.cont239, label %for.body.i for.body.i: ; preds = %while.end, %for.inc.i - %161 = phi ptr [ %165, %for.inc.i ], [ %159, %while.end ] - %162 = phi ptr [ %166, %for.inc.i ], [ %158, %while.end ] + %160 = phi ptr [ %164, %for.inc.i ], [ %158, %while.end ] + %161 = phi ptr [ %165, %for.inc.i ], [ %157, %while.end ] %i.018.i = phi i32 [ %inc.i, %for.inc.i ], [ 0, %while.end ] %conv.i9.i = zext i32 %i.018.i to i64 - %add.ptr.i.i.i670 = getelementptr inbounds nuw ptr, ptr %161, i64 %conv.i9.i - %163 = load ptr, ptr %add.ptr.i.i.i670, align 8, !tbaa !17 - %dirty.i = getelementptr inbounds nuw i8, ptr %163, i64 16 - %164 = load i8, ptr %dirty.i, align 8, !tbaa !98, !range !55, !noundef !56 - %tobool.not.i = icmp eq i8 %164, 0 + %add.ptr.i.i.i670 = getelementptr inbounds nuw ptr, ptr %160, i64 %conv.i9.i + %162 = load ptr, ptr %add.ptr.i.i.i670, align 8, !tbaa !17 + %dirty.i = getelementptr inbounds nuw i8, ptr %162, i64 16 + %163 = load i8, ptr %dirty.i, align 8, !tbaa !98, !range !55, !noundef !56 + %tobool.not.i = icmp eq i8 %163, 0 br i1 %tobool.not.i, label %for.inc.i, label %if.then.i671 if.then.i671: ; preds = %for.body.i - invoke void @_ZN3irr3gui15CGUITTGlyphPage13updateTextureEv(ptr noundef nonnull align 8 dereferenceable(192) %163) + invoke void @_ZN3irr3gui15CGUITTGlyphPage13updateTextureEv(ptr noundef nonnull align 8 dereferenceable(192) %162) to label %.noexc674 unwind label %lpad238 .noexc674: ; preds = %if.then.i671 @@ -6031,11 +6030,11 @@ if.then.i671: ; preds = %for.body.i br label %for.inc.i for.inc.i: ; preds = %.noexc674, %for.body.i - %165 = phi ptr [ %161, %for.body.i ], [ %.pre19.i, %.noexc674 ] - %166 = phi ptr [ %162, %for.body.i ], [ %.pre.i, %.noexc674 ] + %164 = phi ptr [ %160, %for.body.i ], [ %.pre19.i, %.noexc674 ] + %165 = phi ptr [ %161, %for.body.i ], [ %.pre.i, %.noexc674 ] %inc.i = add i32 %i.018.i, 1 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %166 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %165 to i64 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %165 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %164 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 = lshr exact i64 %sub.ptr.sub.i.i.i, 3 %conv.i.i672 = trunc i64 %sub.ptr.div.i.i.i to i32 @@ -6043,7 +6042,7 @@ for.inc.i: ; preds = %.noexc674, %for.bod br i1 %cmp.not.i673, label %invoke.cont239, label %for.body.i, !llvm.loop !182 invoke.cont239: ; preds = %for.inc.i, %while.end - %167 = load ptr, ptr %_M_left.i.i.i.i.i, align 8, !tbaa !212 + %166 = load ptr, ptr %_M_left.i.i.i.i.i, align 8, !tbaa !212 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %tmp_positions) #30 %is_sorted.i676 = getelementptr inbounds nuw i8, ptr %tmp_positions, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %tmp_positions, i8 0, i64 24, i1 false) @@ -6052,7 +6051,7 @@ invoke.cont239: ; preds = %for.inc.i, %while.e %is_sorted.i677 = getelementptr inbounds nuw i8, ptr %tmp_source_rects, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %tmp_source_rects, i8 0, i64 24, i1 false) store i8 1, ptr %is_sorted.i677, align 8, !tbaa !191 - %cmp.i678.not883 = icmp eq ptr %167, %27 + %cmp.i678.not883 = icmp eq ptr %166, %27 br i1 %cmp.i678.not883, label %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit740, label %while.body250.lr.ph while.body250.lr.ph: ; preds = %invoke.cont239 @@ -6070,22 +6069,22 @@ while.cond248.loopexit: ; preds = %for.cond257 br i1 %cmp.i678.not, label %while.end393, label %while.body250, !llvm.loop !261 while.body250: ; preds = %while.cond248.loopexit, %while.body250.lr.ph - %it.sroa.0.0884 = phi ptr [ %167, %while.body250.lr.ph ], [ %call.i, %while.cond248.loopexit ] + %it.sroa.0.0884 = phi ptr [ %166, %while.body250.lr.ph ], [ %call.i, %while.cond248.loopexit ] %second = getelementptr inbounds nuw i8, ptr %it.sroa.0.0884, i64 40 - %168 = load ptr, ptr %second, align 8, !tbaa !262 + %167 = load ptr, ptr %second, align 8, !tbaa !262 %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %it.sroa.0.0884) #31 - %render_positions258 = getelementptr inbounds nuw i8, ptr %168, i64 24 - %_M_finish.i.i679 = getelementptr inbounds nuw i8, ptr %168, i64 32 - %render_colors266 = getelementptr inbounds nuw i8, ptr %168, i64 88 - %render_source_rects289 = getelementptr inbounds nuw i8, ptr %168, i64 56 + %render_positions258 = getelementptr inbounds nuw i8, ptr %167, i64 24 + %_M_finish.i.i679 = getelementptr inbounds nuw i8, ptr %167, i64 32 + %render_colors266 = getelementptr inbounds nuw i8, ptr %167, i64 88 + %render_source_rects289 = getelementptr inbounds nuw i8, ptr %167, i64 56 br label %for.cond257 for.cond257: ; preds = %if.end377, %while.body250 %i256.0 = phi i64 [ 0, %while.body250 ], [ %inc270.lcssa, %if.end377 ] - %169 = load ptr, ptr %_M_finish.i.i679, align 8, !tbaa !221 - %170 = load ptr, ptr %render_positions258, align 8, !tbaa !181 - %sub.ptr.lhs.cast.i.i680 = ptrtoint ptr %169 to i64 - %sub.ptr.rhs.cast.i.i681 = ptrtoint ptr %170 to i64 + %168 = load ptr, ptr %_M_finish.i.i679, align 8, !tbaa !221 + %169 = load ptr, ptr %render_positions258, align 8, !tbaa !181 + %sub.ptr.lhs.cast.i.i680 = ptrtoint ptr %168 to i64 + %sub.ptr.rhs.cast.i.i681 = ptrtoint ptr %169 to i64 %sub.ptr.sub.i.i682 = sub i64 %sub.ptr.lhs.cast.i.i680, %sub.ptr.rhs.cast.i.i681 %sub.ptr.div.i.i683 = lshr exact i64 %sub.ptr.sub.i.i682, 3 %conv262 = and i64 %sub.ptr.div.i.i683, 4294967295 @@ -6093,7 +6092,7 @@ for.cond257: ; preds = %if.end377, %while.b br i1 %cmp263, label %for.body265, label %while.cond248.loopexit lpad238: ; preds = %if.then.i671 - %171 = landingpad { ptr, i32 } + %170 = landingpad { ptr, i32 } cleanup br label %ehcleanup400 @@ -6108,34 +6107,34 @@ lpad259.loopexit.split-lp: ; preds = %if.then.i.i.i769.in br label %ehcleanup388 for.body265: ; preds = %for.cond257 - %172 = load ptr, ptr %render_colors266, align 8, !tbaa !179 - %add.ptr.i.i686 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %172, i64 %i256.0 - %173 = load i32, ptr %add.ptr.i.i686, align 4, !tbaa !30 - %174 = add nsw i64 %conv262, -1 + %171 = load ptr, ptr %render_colors266, align 8, !tbaa !179 + %add.ptr.i.i686 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %171, i64 %i256.0 + %172 = load i32, ptr %add.ptr.i.i686, align 4, !tbaa !30 + %173 = add nsw i64 %conv262, -1 br label %do.body do.body: ; preds = %land.rhs, %for.body265 %i256.1 = phi i64 [ %i256.0, %for.body265 ], [ %inc270, %land.rhs ] - %exitcond.not = icmp eq i64 %i256.1, %174 + %exitcond.not = icmp eq i64 %i256.1, %173 br i1 %exitcond.not, label %do.end, label %land.rhs land.rhs: ; preds = %do.body %inc270 = add nuw nsw i64 %i256.1, 1 %conv.i693 = and i64 %inc270, 4294967295 - %add.ptr.i.i694 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %172, i64 %conv.i693 - %175 = load i32, ptr %add.ptr.i.i694, align 4, !tbaa !31 - %cmp.i695 = icmp eq i32 %173, %175 + %add.ptr.i.i694 = getelementptr inbounds nuw %"class.irr::video::SColor", ptr %171, i64 %conv.i693 + %174 = load i32, ptr %add.ptr.i.i694, align 4, !tbaa !31 + %cmp.i695 = icmp eq i32 %172, %174 br i1 %cmp.i695, label %do.body, label %do.end, !llvm.loop !264 do.end: ; preds = %land.rhs, %do.body %inc270.lcssa = phi i64 [ %conv262, %do.body ], [ %inc270, %land.rhs ] - %add.ptr.i.i697 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %170, i64 %i256.0 + %add.ptr.i.i697 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %169, i64 %i256.0 %sub286 = sub i64 %inc270.lcssa, %i256.0 %conv.i698 = and i64 %sub286, 4294967295 - %176 = load ptr, ptr %_M_finish.i.i753, align 8, !tbaa !221 - %177 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 - %sub.ptr.lhs.cast.i.i754 = ptrtoint ptr %176 to i64 - %sub.ptr.rhs.cast.i.i755 = ptrtoint ptr %177 to i64 + %175 = load ptr, ptr %_M_finish.i.i753, align 8, !tbaa !221 + %176 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 + %sub.ptr.lhs.cast.i.i754 = ptrtoint ptr %175 to i64 + %sub.ptr.rhs.cast.i.i755 = ptrtoint ptr %176 to i64 %sub.ptr.sub.i.i756 = sub i64 %sub.ptr.lhs.cast.i.i754, %sub.ptr.rhs.cast.i.i755 %sub.ptr.div.i.i757 = ashr exact i64 %sub.ptr.sub.i.i756, 3 %cmp.i758 = icmp ult i64 %sub.ptr.div.i.i757, %conv.i698 @@ -6143,8 +6142,8 @@ do.end: ; preds = %land.rhs, %do.body if.then.i762: ; preds = %do.end %sub.i763 = sub nuw nsw i64 %conv.i698, %sub.ptr.div.i.i757 - %178 = load ptr, ptr %_M_end_of_storage.i.i764, align 8, !tbaa !220 - %sub.ptr.lhs.cast.i15.i = ptrtoint ptr %178 to i64 + %177 = load ptr, ptr %_M_end_of_storage.i.i764, align 8, !tbaa !220 + %sub.ptr.lhs.cast.i15.i = ptrtoint ptr %177 to i64 %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i15.i, %sub.ptr.lhs.cast.i.i754 %sub.ptr.div.i17.i = ashr exact i64 %sub.ptr.sub.i16.i, 3 %sub.i.i = xor i64 %sub.ptr.div.i.i757, 1152921504606846975 @@ -6154,9 +6153,9 @@ if.then.i762: ; preds = %do.end br i1 %cmp8.not.i.i, label %_ZNKSt6vectorIN3irr4core8vector2dIiEESaIS3_EE12_M_check_lenEmPKc.exit.i.i, label %.noexc701.thread .noexc701.thread: ; preds = %if.then.i762 - %179 = shl nuw nsw i64 %sub.i763, 3 - call void @llvm.memset.p0.i64(ptr align 4 %176, i8 0, i64 %179, i1 false), !tbaa !30 - %scevgep.i.i.i.i.i = getelementptr i8, ptr %176, i64 %179 + %178 = shl nuw nsw i64 %sub.i763, 3 + call void @llvm.memset.p0.i64(ptr align 4 %175, i8 0, i64 %178, i1 false), !tbaa !30 + %scevgep.i.i.i.i.i = getelementptr i8, ptr %175, i64 %178 store ptr %scevgep.i.i.i.i.i, ptr %_M_finish.i.i753, align 8, !tbaa !221 br label %if.then.i.i.i.i.i.i @@ -6176,54 +6175,54 @@ _ZNKSt6vectorIN3irr4core8vector2dIiEESaIS3_EE12_M_check_lenEmPKc.exit.i.i: ; pre call5.i.i.i.i.i.noexc: ; preds = %_ZNKSt6vectorIN3irr4core8vector2dIiEESaIS3_EE12_M_check_lenEmPKc.exit.i.i %add.ptr.i.i767 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i771, i64 %sub.ptr.sub.i.i756 - %180 = shl nuw nsw i64 %sub.i763, 3 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %add.ptr.i.i767, i8 0, i64 %180, i1 false), !tbaa !30 - %cmp.not6.i.i.i.i.i = icmp eq ptr %177, %176 + %179 = shl nuw nsw i64 %sub.i763, 3 + call void @llvm.memset.p0.i64(ptr nonnull align 4 %add.ptr.i.i767, i8 0, i64 %179, i1 false), !tbaa !30 + %cmp.not6.i.i.i.i.i = icmp eq ptr %176, %175 br i1 %cmp.not6.i.i.i.i.i, label %_ZNSt6vectorIN3irr4core8vector2dIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i, label %for.body.i.i.i.i.i.preheader for.body.i.i.i.i.i.preheader: ; preds = %call5.i.i.i.i.i.noexc %call5.i.i.i.i.i7711009 = ptrtoint ptr %call5.i.i.i.i.i771 to i64 - %181 = add i64 %sub.ptr.lhs.cast.i.i754, -8 - %182 = sub i64 %181, %sub.ptr.rhs.cast.i.i755 - %183 = lshr i64 %182, 3 - %184 = add nuw nsw i64 %183, 1 - %min.iters.check1013 = icmp ult i64 %182, 24 - %185 = sub i64 %call5.i.i.i.i.i7711009, %sub.ptr.rhs.cast.i.i755 - %diff.check1010 = icmp ult i64 %185, 32 + %180 = add i64 %sub.ptr.lhs.cast.i.i754, -8 + %181 = sub i64 %180, %sub.ptr.rhs.cast.i.i755 + %182 = lshr i64 %181, 3 + %183 = add nuw nsw i64 %182, 1 + %min.iters.check1013 = icmp ult i64 %181, 24 + %184 = sub i64 %call5.i.i.i.i.i7711009, %sub.ptr.rhs.cast.i.i755 + %diff.check1010 = icmp ult i64 %184, 32 %or.cond1037 = or i1 %min.iters.check1013, %diff.check1010 br i1 %or.cond1037, label %for.body.i.i.i.i.i.preheader78, label %vector.ph1014 vector.ph1014: ; preds = %for.body.i.i.i.i.i.preheader - %n.vec1016 = and i64 %184, 4611686018427387900 - %186 = shl i64 %n.vec1016, 3 - %ind.end1017 = getelementptr i8, ptr %call5.i.i.i.i.i771, i64 %186 + %n.vec1016 = and i64 %183, 4611686018427387900 + %185 = shl i64 %n.vec1016, 3 + %ind.end1017 = getelementptr i8, ptr %call5.i.i.i.i.i771, i64 %185 br label %vector.body1022 vector.body1022: ; preds = %vector.body1022, %vector.ph1014 %index1023 = phi i64 [ 0, %vector.ph1014 ], [ %index.next1032, %vector.body1022 ] %offset.idx1024 = shl i64 %index1023, 3 %next.gep1025 = getelementptr i8, ptr %call5.i.i.i.i.i771, i64 %offset.idx1024 - %next.gep1028 = getelementptr i8, ptr %177, i64 %offset.idx1024 + %next.gep1028 = getelementptr i8, ptr %176, i64 %offset.idx1024 call void @llvm.experimental.noalias.scope.decl(metadata !265) call void @llvm.experimental.noalias.scope.decl(metadata !268) - %187 = getelementptr i8, ptr %next.gep1028, i64 16 + %186 = getelementptr i8, ptr %next.gep1028, i64 16 %wide.load1030 = load <2 x i64>, ptr %next.gep1028, align 4, !alias.scope !268, !noalias !265 - %wide.load1031 = load <2 x i64>, ptr %187, align 4, !alias.scope !268, !noalias !265 - %188 = getelementptr i8, ptr %next.gep1025, i64 16 + %wide.load1031 = load <2 x i64>, ptr %186, align 4, !alias.scope !268, !noalias !265 + %187 = getelementptr i8, ptr %next.gep1025, i64 16 store <2 x i64> %wide.load1030, ptr %next.gep1025, align 4, !alias.scope !265, !noalias !268 - store <2 x i64> %wide.load1031, ptr %188, align 4, !alias.scope !265, !noalias !268 + store <2 x i64> %wide.load1031, ptr %187, align 4, !alias.scope !265, !noalias !268 %index.next1032 = add nuw i64 %index1023, 4 - %189 = icmp eq i64 %index.next1032, %n.vec1016 - br i1 %189, label %middle.block1011, label %vector.body1022, !llvm.loop !270 + %188 = icmp eq i64 %index.next1032, %n.vec1016 + br i1 %188, label %middle.block1011, label %vector.body1022, !llvm.loop !270 middle.block1011: ; preds = %vector.body1022 - %ind.end1019 = getelementptr i8, ptr %177, i64 %186 - %cmp.n1021 = icmp eq i64 %184, %n.vec1016 + %ind.end1019 = getelementptr i8, ptr %176, i64 %185 + %cmp.n1021 = icmp eq i64 %183, %n.vec1016 br i1 %cmp.n1021, label %if.then.i74.i.i, label %for.body.i.i.i.i.i.preheader78 for.body.i.i.i.i.i.preheader78: ; preds = %middle.block1011, %for.body.i.i.i.i.i.preheader %__cur.08.i.i.i.i.i.ph = phi ptr [ %ind.end1017, %middle.block1011 ], [ %call5.i.i.i.i.i771, %for.body.i.i.i.i.i.preheader ] - %__first.addr.07.i.i.i.i.i.ph = phi ptr [ %ind.end1019, %middle.block1011 ], [ %177, %for.body.i.i.i.i.i.preheader ] + %__first.addr.07.i.i.i.i.i.ph = phi ptr [ %ind.end1019, %middle.block1011 ], [ %176, %for.body.i.i.i.i.i.preheader ] br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader78, %for.body.i.i.i.i.i @@ -6231,19 +6230,19 @@ for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %__first.addr.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %__first.addr.07.i.i.i.i.i.ph, %for.body.i.i.i.i.i.preheader78 ] call void @llvm.experimental.noalias.scope.decl(metadata !265) call void @llvm.experimental.noalias.scope.decl(metadata !268) - %190 = load i64, ptr %__first.addr.07.i.i.i.i.i, align 4, !tbaa.struct !29, !alias.scope !268, !noalias !265 - store i64 %190, ptr %__cur.08.i.i.i.i.i, align 4, !tbaa.struct !29, !alias.scope !265, !noalias !268 + %189 = load i64, ptr %__first.addr.07.i.i.i.i.i, align 4, !tbaa.struct !29, !alias.scope !268, !noalias !265 + store i64 %189, ptr %__cur.08.i.i.i.i.i, align 4, !tbaa.struct !29, !alias.scope !265, !noalias !268 %incdec.ptr.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i, i64 8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i.i.i, i64 8 - %cmp.not.i.i.i.i.i768 = icmp eq ptr %incdec.ptr.i.i.i.i.i, %176 + %cmp.not.i.i.i.i.i768 = icmp eq ptr %incdec.ptr.i.i.i.i.i, %175 br i1 %cmp.not.i.i.i.i.i768, label %_ZNSt6vectorIN3irr4core8vector2dIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i, label %for.body.i.i.i.i.i, !llvm.loop !271 _ZNSt6vectorIN3irr4core8vector2dIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i: ; preds = %for.body.i.i.i.i.i, %call5.i.i.i.i.i.noexc - %tobool.not.i73.i.i = icmp eq ptr %177, null + %tobool.not.i73.i.i = icmp eq ptr %176, null br i1 %tobool.not.i73.i.i, label %_ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i, label %if.then.i74.i.i if.then.i74.i.i: ; preds = %middle.block1011, %_ZNSt6vectorIN3irr4core8vector2dIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i - call void @_ZdlPv(ptr noundef nonnull %177) #29 + call void @_ZdlPv(ptr noundef nonnull %176) #29 br label %_ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i _ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i: ; preds = %if.then.i74.i.i, %_ZNSt6vectorIN3irr4core8vector2dIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i @@ -6259,8 +6258,8 @@ if.else.i759: ; preds = %do.end br i1 %cmp4.i, label %if.then5.i, label %.noexc701 if.then5.i: ; preds = %if.else.i759 - %add.ptr.i760 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %177, i64 %conv.i698 - %tobool.not.i.i761 = icmp eq ptr %176, %add.ptr.i760 + %add.ptr.i760 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %176, i64 %conv.i698 + %tobool.not.i.i761 = icmp eq ptr %175, %add.ptr.i760 br i1 %tobool.not.i.i761, label %.noexc701, label %invoke.cont.i.i invoke.cont.i.i: ; preds = %if.then5.i @@ -6268,25 +6267,25 @@ invoke.cont.i.i: ; preds = %if.then5.i br label %.noexc701 .noexc701: ; preds = %invoke.cont.i.i, %if.then5.i, %if.else.i759, %_ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i - %191 = phi ptr [ %177, %invoke.cont.i.i ], [ %177, %if.then5.i ], [ %177, %if.else.i759 ], [ %call5.i.i.i.i.i771, %_ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i ] + %190 = phi ptr [ %176, %invoke.cont.i.i ], [ %176, %if.then5.i ], [ %176, %if.else.i759 ], [ %call5.i.i.i.i.i771, %_ZNSt12_Vector_baseIN3irr4core8vector2dIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i ] %tobool.not.i.i.i.i.i.i = icmp eq i64 %conv.i698, 0 br i1 %tobool.not.i.i.i.i.i.i, label %invoke.cont288, label %if.then.i.i.i.i.i.i if.then.i.i.i.i.i.i: ; preds = %.noexc701, %.noexc701.thread - %192 = phi ptr [ %191, %.noexc701 ], [ %177, %.noexc701.thread ] + %191 = phi ptr [ %190, %.noexc701 ], [ %176, %.noexc701.thread ] %add.ptr.idx.i = shl nuw nsw i64 %conv.i698, 3 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %192, ptr align 4 %add.ptr.i.i697, i64 %add.ptr.idx.i, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 4 %191, ptr align 4 %add.ptr.i.i697, i64 %add.ptr.idx.i, i1 false) br label %invoke.cont288 invoke.cont288: ; preds = %if.then.i.i.i.i.i.i, %.noexc701 %tobool.not.i.i.i.i.i.i892 = phi i1 [ false, %if.then.i.i.i.i.i.i ], [ true, %.noexc701 ] store i8 0, ptr %is_sorted.i676, align 8, !tbaa !190 - %193 = load ptr, ptr %render_source_rects289, align 8, !tbaa !180 - %add.ptr.i.i703 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %193, i64 %i256.0 - %194 = load ptr, ptr %_M_finish.i.i772, align 8, !tbaa !233 - %195 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !180 - %sub.ptr.lhs.cast.i.i773 = ptrtoint ptr %194 to i64 - %sub.ptr.rhs.cast.i.i774 = ptrtoint ptr %195 to i64 + %192 = load ptr, ptr %render_source_rects289, align 8, !tbaa !180 + %add.ptr.i.i703 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %192, i64 %i256.0 + %193 = load ptr, ptr %_M_finish.i.i772, align 8, !tbaa !233 + %194 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !180 + %sub.ptr.lhs.cast.i.i773 = ptrtoint ptr %193 to i64 + %sub.ptr.rhs.cast.i.i774 = ptrtoint ptr %194 to i64 %sub.ptr.sub.i.i775 = sub i64 %sub.ptr.lhs.cast.i.i773, %sub.ptr.rhs.cast.i.i774 %sub.ptr.div.i.i776 = ashr exact i64 %sub.ptr.sub.i.i775, 4 %cmp.i777 = icmp ult i64 %sub.ptr.div.i.i776, %conv.i698 @@ -6294,8 +6293,8 @@ invoke.cont288: ; preds = %if.then.i.i.i.i.i.i if.then.i784: ; preds = %invoke.cont288 %sub.i785 = sub nuw nsw i64 %conv.i698, %sub.ptr.div.i.i776 - %196 = load ptr, ptr %_M_end_of_storage.i.i786, align 8, !tbaa !231 - %sub.ptr.lhs.cast.i15.i787 = ptrtoint ptr %196 to i64 + %195 = load ptr, ptr %_M_end_of_storage.i.i786, align 8, !tbaa !231 + %sub.ptr.lhs.cast.i15.i787 = ptrtoint ptr %195 to i64 %sub.ptr.sub.i16.i788 = sub i64 %sub.ptr.lhs.cast.i15.i787, %sub.ptr.lhs.cast.i.i773 %sub.ptr.div.i17.i789 = ashr exact i64 %sub.ptr.sub.i16.i788, 4 %sub.i.i791 = xor i64 %sub.ptr.div.i.i776, 576460752303423487 @@ -6305,9 +6304,9 @@ if.then.i784: ; preds = %invoke.cont288 br i1 %cmp8.not.i.i793, label %if.else.i.i795, label %_ZSt27__uninitialized_default_n_aIPN3irr4core4rectIiEEmS3_ET_S5_T0_RSaIT1_E.exit.i.i _ZSt27__uninitialized_default_n_aIPN3irr4core4rectIiEEmS3_ET_S5_T0_RSaIT1_E.exit.i.i: ; preds = %if.then.i784 - %197 = shl nuw nsw i64 %sub.i785, 4 - call void @llvm.memset.p0.i64(ptr align 4 %194, i8 0, i64 %197, i1 false) - %scevgep.i.i.i.i.i794 = getelementptr i8, ptr %194, i64 %197 + %196 = shl nuw nsw i64 %sub.i785, 4 + call void @llvm.memset.p0.i64(ptr align 4 %193, i8 0, i64 %196, i1 false) + %scevgep.i.i.i.i.i794 = getelementptr i8, ptr %193, i64 %196 store ptr %scevgep.i.i.i.i.i794, ptr %_M_finish.i.i772, align 8, !tbaa !233 br label %.noexc710 @@ -6318,40 +6317,40 @@ if.else.i.i795: ; preds = %if.then.i784 _ZNKSt6vectorIN3irr4core4rectIiEESaIS3_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %if.else.i.i795 %.sroa.speculated.i.i.i797 = call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i776, i64 %sub.i785) %add.i.i.i798 = add nuw nsw i64 %.sroa.speculated.i.i.i797, %sub.ptr.div.i.i776 - %198 = call i64 @llvm.umin.i64(i64 %add.i.i.i798, i64 576460752303423487) - %mul.i.i.i.i.i799 = shl nuw nsw i64 %198, 4 + %197 = call i64 @llvm.umin.i64(i64 %add.i.i.i798, i64 576460752303423487) + %mul.i.i.i.i.i799 = shl nuw nsw i64 %197, 4 %call5.i.i.i.i.i815 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i799) #33 to label %call5.i.i.i.i.i.noexc814 unwind label %lpad259.loopexit call5.i.i.i.i.i.noexc814: ; preds = %_ZNKSt6vectorIN3irr4core4rectIiEESaIS3_EE12_M_check_lenEmPKc.exit.i.i %add.ptr.i.i800 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i815, i64 %sub.ptr.sub.i.i775 - %199 = shl nuw nsw i64 %sub.i785, 4 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %add.ptr.i.i800, i8 0, i64 %199, i1 false) - %cmp.not6.i.i.i.i.i801 = icmp eq ptr %195, %194 + %198 = shl nuw nsw i64 %sub.i785, 4 + call void @llvm.memset.p0.i64(ptr nonnull align 4 %add.ptr.i.i800, i8 0, i64 %198, i1 false) + %cmp.not6.i.i.i.i.i801 = icmp eq ptr %194, %193 br i1 %cmp.not6.i.i.i.i.i801, label %_ZNSt6vectorIN3irr4core4rectIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i, label %for.body.i.i.i.i.i802 for.body.i.i.i.i.i802: ; preds = %call5.i.i.i.i.i.noexc814, %for.body.i.i.i.i.i802 %__cur.08.i.i.i.i.i803 = phi ptr [ %incdec.ptr1.i.i.i.i.i806, %for.body.i.i.i.i.i802 ], [ %call5.i.i.i.i.i815, %call5.i.i.i.i.i.noexc814 ] - %__first.addr.07.i.i.i.i.i804 = phi ptr [ %incdec.ptr.i.i.i.i.i805, %for.body.i.i.i.i.i802 ], [ %195, %call5.i.i.i.i.i.noexc814 ] + %__first.addr.07.i.i.i.i.i804 = phi ptr [ %incdec.ptr.i.i.i.i.i805, %for.body.i.i.i.i.i802 ], [ %194, %call5.i.i.i.i.i.noexc814 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %__cur.08.i.i.i.i.i803, ptr noundef nonnull align 4 dereferenceable(16) %__first.addr.07.i.i.i.i.i804, i64 16, i1 false), !tbaa.struct !232, !alias.scope !272 %incdec.ptr.i.i.i.i.i805 = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i.i.i804, i64 16 %incdec.ptr1.i.i.i.i.i806 = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i.i.i803, i64 16 - %cmp.not.i.i.i.i.i807 = icmp eq ptr %incdec.ptr.i.i.i.i.i805, %194 + %cmp.not.i.i.i.i.i807 = icmp eq ptr %incdec.ptr.i.i.i.i.i805, %193 br i1 %cmp.not.i.i.i.i.i807, label %_ZNSt6vectorIN3irr4core4rectIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i, label %for.body.i.i.i.i.i802, !llvm.loop !238 _ZNSt6vectorIN3irr4core4rectIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i: ; preds = %for.body.i.i.i.i.i802, %call5.i.i.i.i.i.noexc814 - %tobool.not.i73.i.i808 = icmp eq ptr %195, null + %tobool.not.i73.i.i808 = icmp eq ptr %194, null br i1 %tobool.not.i73.i.i808, label %_ZNSt12_Vector_baseIN3irr4core4rectIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i, label %if.then.i74.i.i809 if.then.i74.i.i809: ; preds = %_ZNSt6vectorIN3irr4core4rectIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i - call void @_ZdlPv(ptr noundef nonnull %195) #29 + call void @_ZdlPv(ptr noundef nonnull %194) #29 br label %_ZNSt12_Vector_baseIN3irr4core4rectIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i _ZNSt12_Vector_baseIN3irr4core4rectIiEESaIS3_EE13_M_deallocateEPS3_m.exit75.i.i: ; preds = %if.then.i74.i.i809, %_ZNSt6vectorIN3irr4core4rectIiEESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.i store ptr %call5.i.i.i.i.i815, ptr %tmp_source_rects, align 8, !tbaa !180 %add.ptr37.i.i810 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %add.ptr.i.i800, i64 %sub.i785 store ptr %add.ptr37.i.i810, ptr %_M_finish.i.i772, align 8, !tbaa !233 - %add.ptr40.i.i811 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %call5.i.i.i.i.i815, i64 %198 + %add.ptr40.i.i811 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %call5.i.i.i.i.i815, i64 %197 store ptr %add.ptr40.i.i811, ptr %_M_end_of_storage.i.i786, align 8, !tbaa !231 br label %.noexc710 @@ -6360,8 +6359,8 @@ if.else.i778: ; preds = %invoke.cont288 br i1 %cmp4.i779, label %if.then5.i780, label %.noexc710 if.then5.i780: ; preds = %if.else.i778 - %add.ptr.i781 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %195, i64 %conv.i698 - %tobool.not.i.i782 = icmp eq ptr %194, %add.ptr.i781 + %add.ptr.i781 = getelementptr inbounds nuw %"class.irr::core::rect", ptr %194, i64 %conv.i698 + %tobool.not.i.i782 = icmp eq ptr %193, %add.ptr.i781 br i1 %tobool.not.i.i782, label %.noexc710, label %invoke.cont.i.i783 invoke.cont.i.i783: ; preds = %if.then5.i780 @@ -6373,25 +6372,25 @@ invoke.cont.i.i783: ; preds = %if.then5.i780 if.then.i.i.i.i.i.i707: ; preds = %.noexc710 %add.ptr.idx.i708 = shl nuw nsw i64 %conv.i698, 4 - %200 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !17 - call void @llvm.memmove.p0.p0.i64(ptr align 4 %200, ptr align 4 %add.ptr.i.i703, i64 %add.ptr.idx.i708, i1 false) + %199 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !17 + call void @llvm.memmove.p0.p0.i64(ptr align 4 %199, ptr align 4 %add.ptr.i.i703, i64 %add.ptr.idx.i708, i1 false) br label %invoke.cont295 invoke.cont295: ; preds = %if.then.i.i.i.i.i.i707, %.noexc710 store i8 0, ptr %is_sorted.i677, align 8, !tbaa !191 - %201 = load i8, ptr %use_transparency, align 1, !tbaa !142, !range !55, !noundef !56 - %tobool296.not = icmp eq i8 %201, 0 - %or = or i32 %173, -16777216 - %spec.select844 = select i1 %tobool296.not, i32 %or, i32 %173 - %202 = load i32, ptr %shadow_offset, align 8, !tbaa !127 - %tobool299.not = icmp eq i32 %202, 0 + %200 = load i8, ptr %use_transparency, align 1, !tbaa !142, !range !55, !noundef !56 + %tobool296.not = icmp eq i8 %200, 0 + %or = or i32 %172, -16777216 + %spec.select844 = select i1 %tobool296.not, i32 %or, i32 %172 + %201 = load i32, ptr %shadow_offset, align 8, !tbaa !127 + %tobool299.not = icmp eq i32 %201, 0 br i1 %tobool299.not, label %if.end377, label %for.cond302.preheader for.cond302.preheader: ; preds = %invoke.cont295 - %203 = load ptr, ptr %_M_finish.i.i753, align 8, !tbaa !221 - %204 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 - %sub.ptr.lhs.cast.i.i712 = ptrtoint ptr %203 to i64 - %sub.ptr.rhs.cast.i.i713 = ptrtoint ptr %204 to i64 + %202 = load ptr, ptr %_M_finish.i.i753, align 8, !tbaa !221 + %203 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 + %sub.ptr.lhs.cast.i.i712 = ptrtoint ptr %202 to i64 + %sub.ptr.rhs.cast.i.i713 = ptrtoint ptr %203 to i64 %sub.ptr.sub.i.i714 = sub i64 %sub.ptr.lhs.cast.i.i712, %sub.ptr.rhs.cast.i.i713 %sub.ptr.div.i.i715 = lshr exact i64 %sub.ptr.sub.i.i714, 3 %conv306 = and i64 %sub.ptr.div.i.i715, 4294967295 @@ -6403,36 +6402,36 @@ for.body309.preheader: ; preds = %for.cond302.prehead br i1 %min.iters.check989, label %for.body309.preheader.for.body309.preheader1038_crit_edge, label %vector.ph990 for.body309.preheader.for.body309.preheader1038_crit_edge: ; preds = %for.body309.preheader - %.pre70 = insertelement <2 x i32> poison, i32 %202, i64 0 + %.pre70 = insertelement <2 x i32> poison, i32 %201, i64 0 %.pre72 = shufflevector <2 x i32> %.pre70, <2 x i32> poison, <2 x i32> zeroinitializer br label %for.body309.preheader1038 vector.ph990: ; preds = %for.body309.preheader - %n.mod.vf991 = and i64 %sub.ptr.div.i.i715, 3 - %n.vec992 = sub nuw nsw i64 %conv306, %n.mod.vf991 - %broadcast.splatinsert1003 = insertelement <2 x i32> poison, i32 %202, i64 0 + %n.vec992 = and i64 %sub.ptr.div.i.i715, 4294967292 + %broadcast.splatinsert1003 = insertelement <2 x i32> poison, i32 %201, i64 0 %broadcast.splat1004 = shufflevector <2 x i32> %broadcast.splatinsert1003, <2 x i32> poison, <2 x i32> zeroinitializer + %204 = shufflevector <2 x i32> %broadcast.splatinsert1003, <2 x i32> poison, <4 x i32> zeroinitializer %205 = shufflevector <2 x i32> %broadcast.splatinsert1003, <2 x i32> poison, <4 x i32> zeroinitializer - %206 = shufflevector <2 x i32> %broadcast.splatinsert1003, <2 x i32> poison, <4 x i32> zeroinitializer br label %vector.body995 vector.body995: ; preds = %vector.body995, %vector.ph990 %index996 = phi i64 [ 0, %vector.ph990 ], [ %index.next1007, %vector.body995 ] - %207 = or disjoint i64 %index996, 2 - %208 = getelementptr inbounds %"class.irr::core::vector2d", ptr %204, i64 %index996 - %209 = getelementptr inbounds %"class.irr::core::vector2d", ptr %204, i64 %207 - %wide.vec997 = load <4 x i32>, ptr %208, align 4, !tbaa !30 - %wide.vec998 = load <4 x i32>, ptr %209, align 4, !tbaa !30 - %interleaved.vec1005 = add nsw <4 x i32> %wide.vec997, %205 - store <4 x i32> %interleaved.vec1005, ptr %208, align 4, !tbaa !30 - %interleaved.vec1006 = add nsw <4 x i32> %wide.vec998, %206 - store <4 x i32> %interleaved.vec1006, ptr %209, align 4, !tbaa !30 + %206 = or disjoint i64 %index996, 2 + %207 = getelementptr inbounds %"class.irr::core::vector2d", ptr %203, i64 %index996 + %208 = getelementptr inbounds %"class.irr::core::vector2d", ptr %203, i64 %206 + %wide.vec997 = load <4 x i32>, ptr %207, align 4, !tbaa !30 + %wide.vec998 = load <4 x i32>, ptr %208, align 4, !tbaa !30 + %interleaved.vec1005 = add nsw <4 x i32> %wide.vec997, %204 + store <4 x i32> %interleaved.vec1005, ptr %207, align 4, !tbaa !30 + %interleaved.vec1006 = add nsw <4 x i32> %wide.vec998, %205 + store <4 x i32> %interleaved.vec1006, ptr %208, align 4, !tbaa !30 %index.next1007 = add nuw i64 %index996, 4 - %210 = icmp eq i64 %index.next1007, %n.vec992 - br i1 %210, label %middle.block987, label %vector.body995, !llvm.loop !276 + %209 = icmp eq i64 %index.next1007, %n.vec992 + br i1 %209, label %middle.block987, label %vector.body995, !llvm.loop !276 middle.block987: ; preds = %vector.body995 - %cmp.n994 = icmp eq i64 %n.mod.vf991, 0 + %210 = and i64 %sub.ptr.sub.i.i714, 24 + %cmp.n994 = icmp eq i64 %210, 0 br i1 %cmp.n994, label %invoke.cont337, label %for.body309.preheader1038 for.body309.preheader1038: ; preds = %for.body309.preheader.for.body309.preheader1038_crit_edge, %middle.block987 @@ -6442,7 +6441,7 @@ for.body309.preheader1038: ; preds = %for.body309.prehead for.body309: ; preds = %for.body309, %for.body309.preheader1038 %i301.0880 = phi i64 [ %inc322, %for.body309 ], [ %i301.0880.ph, %for.body309.preheader1038 ] - %add.ptr.i.i720 = getelementptr inbounds %"class.irr::core::vector2d", ptr %204, i64 %i301.0880 + %add.ptr.i.i720 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %203, i64 %i301.0880 %211 = load <2 x i32>, ptr %add.ptr.i.i720, align 4, !tbaa !30 %212 = add nsw <2 x i32> %211, %.pre-phi73 store <2 x i32> %212, ptr %add.ptr.i.i720, align 4, !tbaa !30 @@ -6463,7 +6462,7 @@ invoke.cont337: ; preds = %for.body309, %middl %216 = call i32 @llvm.umin.i32(i32 %215, i32 255) %and.i = shl nuw i32 %216, 24 %217 = load ptr, ptr %Driver, align 8, !tbaa !121 - %218 = load ptr, ptr %168, align 8, !tbaa !95 + %218 = load ptr, ptr %167, align 8, !tbaa !95 %vtable347 = load ptr, ptr %217, align 8, !tbaa !12 %vfn348 = getelementptr inbounds nuw i8, ptr %vtable347, i64 392 %219 = load ptr, ptr %vfn348, align 8 @@ -6492,8 +6491,7 @@ for.body358.lr.ph.for.body358.preheader_crit_edge: ; preds = %for.body358.lr.ph br label %for.body358.preheader vector.ph974: ; preds = %for.body358.lr.ph - %n.mod.vf975 = and i64 %sub.ptr.div.i.i726, 3 - %n.vec976 = sub nuw nsw i64 %conv355, %n.mod.vf975 + %n.vec976 = and i64 %sub.ptr.div.i.i726, 4294967292 %broadcast.splatinsert = insertelement <2 x i32> poison, i32 %222, i64 0 %broadcast.splat = shufflevector <2 x i32> %broadcast.splatinsert, <2 x i32> poison, <2 x i32> zeroinitializer %223 = shufflevector <2 x i32> %broadcast.splatinsert, <2 x i32> poison, <4 x i32> zeroinitializer @@ -6516,7 +6514,8 @@ vector.body979: ; preds = %vector.body979, %ve br i1 %228, label %middle.block971, label %vector.body979, !llvm.loop !278 middle.block971: ; preds = %vector.body979 - %cmp.n978 = icmp eq i64 %n.mod.vf975, 0 + %229 = and i64 %sub.ptr.sub.i.i725, 24 + %cmp.n978 = icmp eq i64 %229, 0 br i1 %cmp.n978, label %if.end377, label %for.body358.preheader for.body358.preheader: ; preds = %for.body358.lr.ph.for.body358.preheader_crit_edge, %middle.block971 @@ -6525,47 +6524,47 @@ for.body358.preheader: ; preds = %for.body358.lr.ph.f br label %for.body358 lpad342: ; preds = %invoke.cont337 - %229 = landingpad { ptr, i32 } + %230 = landingpad { ptr, i32 } cleanup br label %ehcleanup388 for.body358: ; preds = %for.body358, %for.body358.preheader %i350.0882 = phi i64 [ %inc371, %for.body358 ], [ %i350.0882.ph, %for.body358.preheader ] - %add.ptr.i.i730 = getelementptr inbounds %"class.irr::core::vector2d", ptr %221, i64 %i350.0882 - %230 = load <2 x i32>, ptr %add.ptr.i.i730, align 4, !tbaa !30 - %231 = sub nsw <2 x i32> %230, %.pre-phi69 - store <2 x i32> %231, ptr %add.ptr.i.i730, align 4, !tbaa !30 + %add.ptr.i.i730 = getelementptr inbounds nuw %"class.irr::core::vector2d", ptr %221, i64 %i350.0882 + %231 = load <2 x i32>, ptr %add.ptr.i.i730, align 4, !tbaa !30 + %232 = sub nsw <2 x i32> %231, %.pre-phi69 + store <2 x i32> %232, ptr %add.ptr.i.i730, align 4, !tbaa !30 %inc371 = add nuw nsw i64 %i350.0882, 1 %exitcond888.not = icmp eq i64 %inc371, %conv355 br i1 %exitcond888.not, label %if.end377, label %for.body358, !llvm.loop !279 if.end377: ; preds = %for.body358, %middle.block971, %for.cond351.preheader, %invoke.cont295 - %232 = load ptr, ptr %Driver, align 8, !tbaa !121 - %233 = load ptr, ptr %168, align 8, !tbaa !95 - %vtable382 = load ptr, ptr %232, align 8, !tbaa !12 + %233 = load ptr, ptr %Driver, align 8, !tbaa !121 + %234 = load ptr, ptr %167, align 8, !tbaa !95 + %vtable382 = load ptr, ptr %233, align 8, !tbaa !12 %vfn383 = getelementptr inbounds nuw i8, ptr %vtable382, i64 392 - %234 = load ptr, ptr %vfn383, align 8 - invoke void %234(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef %233, ptr noundef nonnull align 8 dereferenceable(25) %tmp_positions, ptr noundef nonnull align 8 dereferenceable(25) %tmp_source_rects, ptr noundef %clip, i32 %spec.select844, i1 noundef zeroext true) + %235 = load ptr, ptr %vfn383, align 8 + invoke void %235(ptr noundef nonnull align 8 dereferenceable(8) %233, ptr noundef %234, ptr noundef nonnull align 8 dereferenceable(25) %tmp_positions, ptr noundef nonnull align 8 dereferenceable(25) %tmp_source_rects, ptr noundef %clip, i32 %spec.select844, i1 noundef zeroext true) to label %for.cond257 unwind label %lpad259.loopexit, !llvm.loop !280 ehcleanup388: ; preds = %lpad342, %lpad259.loopexit.split-lp, %lpad259.loopexit - %.pn492 = phi { ptr, i32 } [ %229, %lpad342 ], [ %lpad.loopexit, %lpad259.loopexit ], [ %lpad.loopexit.split-lp, %lpad259.loopexit.split-lp ] - %235 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !180 - %tobool.not.i.i.i.i734 = icmp eq ptr %235, null + %.pn492 = phi { ptr, i32 } [ %230, %lpad342 ], [ %lpad.loopexit, %lpad259.loopexit ], [ %lpad.loopexit.split-lp, %lpad259.loopexit.split-lp ] + %236 = load ptr, ptr %tmp_source_rects, align 8, !tbaa !180 + %tobool.not.i.i.i.i734 = icmp eq ptr %236, null br i1 %tobool.not.i.i.i.i734, label %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit, label %if.then.i.i.i.i735 if.then.i.i.i.i735: ; preds = %ehcleanup388 - call void @_ZdlPv(ptr noundef nonnull %235) #29 + call void @_ZdlPv(ptr noundef nonnull %236) #29 br label %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit _ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit: ; preds = %if.then.i.i.i.i735, %ehcleanup388 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %tmp_source_rects) #30 - %236 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 - %tobool.not.i.i.i.i736 = icmp eq ptr %236, null + %237 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 + %tobool.not.i.i.i.i736 = icmp eq ptr %237, null br i1 %tobool.not.i.i.i.i736, label %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit, label %if.then.i.i.i.i737 if.then.i.i.i.i737: ; preds = %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %236) #29 + call void @_ZdlPv(ptr noundef nonnull %237) #29 br label %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit _ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit: ; preds = %if.then.i.i.i.i737, %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit @@ -6583,41 +6582,41 @@ if.then.i.i.i.i739: ; preds = %while.end393 _ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit740: ; preds = %if.then.i.i.i.i739, %while.end393, %invoke.cont239 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %tmp_source_rects) #30 - %237 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 - %tobool.not.i.i.i.i741 = icmp eq ptr %237, null + %238 = load ptr, ptr %tmp_positions, align 8, !tbaa !181 + %tobool.not.i.i.i.i741 = icmp eq ptr %238, null br i1 %tobool.not.i.i.i.i741, label %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit743, label %if.then.i.i.i.i742 if.then.i.i.i.i742: ; preds = %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit740 - call void @_ZdlPv(ptr noundef nonnull %237) #29 + call void @_ZdlPv(ptr noundef nonnull %238) #29 br label %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit743 _ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit743: ; preds = %if.then.i.i.i.i742, %_ZN3irr4core5arrayINS0_4rectIiEEED2Ev.exit740 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %tmp_positions) #30 - %238 = load ptr, ptr %_M_parent.i.i.i.i.i, align 8, !tbaa !4 - invoke void @_ZNSt8_Rb_treeIjSt4pairIKjPN3irr3gui15CGUITTGlyphPageEESt10_Select1stIS6_ESt4lessIjESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %Render_Map, ptr noundef %238) + %239 = load ptr, ptr %_M_parent.i.i.i.i.i, align 8, !tbaa !4 + invoke void @_ZNSt8_Rb_treeIjSt4pairIKjPN3irr3gui15CGUITTGlyphPageEESt10_Select1stIS6_ESt4lessIjESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %Render_Map, ptr noundef %239) to label %_ZNSt3mapIjPN3irr3gui15CGUITTGlyphPageESt4lessIjESaISt4pairIKjS3_EEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit743 - %239 = landingpad { ptr, i32 } + %240 = landingpad { ptr, i32 } catch ptr null - %240 = extractvalue { ptr, i32 } %239, 0 - call void @__clang_call_terminate(ptr %240) #28 + %241 = extractvalue { ptr, i32 } %240, 0 + call void @__clang_call_terminate(ptr %241) #28 unreachable _ZNSt3mapIjPN3irr3gui15CGUITTGlyphPageESt4lessIjESaISt4pairIKjS3_EEED2Ev.exit: ; preds = %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit743 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %Render_Map) #30 - %241 = load ptr, ptr %utext, align 8, !tbaa !140 - %cmp.i.i.i744 = icmp eq ptr %241, %23 + %242 = load ptr, ptr %utext, align 8, !tbaa !140 + %cmp.i.i.i744 = icmp eq ptr %242, %23 br i1 %cmp.i.i.i744, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i745 _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt3mapIjPN3irr3gui15CGUITTGlyphPageESt4lessIjESaISt4pairIKjS3_EEED2Ev.exit - %242 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 - %cmp3.i.i.i = icmp ult i64 %242, 4 + %243 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 + %cmp3.i.i.i = icmp ult i64 %243, 4 call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit if.then.i.i745: ; preds = %_ZNSt3mapIjPN3irr3gui15CGUITTGlyphPageESt4lessIjESaISt4pairIKjS3_EEED2Ev.exit - call void @_ZdlPv(ptr noundef %241) #29 + call void @_ZdlPv(ptr noundef %242) #29 br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit _ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit: ; preds = %if.then.i.i745, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i @@ -6628,21 +6627,21 @@ cleanup409: ; preds = %_ZNSt7__cxx1112basi ret void ehcleanup400: ; preds = %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit, %lpad238, %ehcleanup228, %lpad142.loopexit.split-lp, %lpad142.loopexit, %lpad137.loopexit.split-lp, %lpad137.loopexit, %lpad123.loopexit.split-lp, %lpad123.loopexit, %lpad114.loopexit.split-lp, %lpad114.loopexit, %lpad99, %lpad67, %lpad - %.pn502.pn.pn = phi { ptr, i32 } [ %.pn492, %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit ], [ %171, %lpad238 ], [ %36, %lpad ], [ %42, %lpad67 ], [ %.pn500, %ehcleanup228 ], [ %95, %lpad99 ], [ %lpad.loopexit853, %lpad114.loopexit ], [ %lpad.loopexit.split-lp854, %lpad114.loopexit.split-lp ], [ %lpad.loopexit850, %lpad123.loopexit ], [ %lpad.loopexit.split-lp851, %lpad123.loopexit.split-lp ], [ %lpad.loopexit859, %lpad137.loopexit ], [ %lpad.loopexit.split-lp860, %lpad137.loopexit.split-lp ], [ %lpad.loopexit856, %lpad142.loopexit ], [ %lpad.loopexit.split-lp857, %lpad142.loopexit.split-lp ] + %.pn502.pn.pn = phi { ptr, i32 } [ %.pn492, %_ZN3irr4core5arrayINS0_8vector2dIiEEED2Ev.exit ], [ %170, %lpad238 ], [ %36, %lpad ], [ %42, %lpad67 ], [ %.pn500, %ehcleanup228 ], [ %95, %lpad99 ], [ %lpad.loopexit853, %lpad114.loopexit ], [ %lpad.loopexit.split-lp854, %lpad114.loopexit.split-lp ], [ %lpad.loopexit850, %lpad123.loopexit ], [ %lpad.loopexit.split-lp851, %lpad123.loopexit.split-lp ], [ %lpad.loopexit859, %lpad137.loopexit ], [ %lpad.loopexit.split-lp860, %lpad137.loopexit.split-lp ], [ %lpad.loopexit856, %lpad142.loopexit ], [ %lpad.loopexit.split-lp857, %lpad142.loopexit.split-lp ] call void @_ZNSt3mapIjPN3irr3gui15CGUITTGlyphPageESt4lessIjESaISt4pairIKjS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %Render_Map) #30 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %Render_Map) #30 - %243 = load ptr, ptr %utext, align 8, !tbaa !140 - %cmp.i.i.i747 = icmp eq ptr %243, %23 + %244 = load ptr, ptr %utext, align 8, !tbaa !140 + %cmp.i.i.i747 = icmp eq ptr %244, %23 br i1 %cmp.i.i.i747, label %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i749, label %if.then.i.i748 _ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i749: ; preds = %ehcleanup400 - %244 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 - %cmp3.i.i.i751 = icmp ult i64 %244, 4 + %245 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !137 + %cmp3.i.i.i751 = icmp ult i64 %245, 4 call void @llvm.assume(i1 %cmp3.i.i.i751) br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit752 if.then.i.i748: ; preds = %ehcleanup400 - call void @_ZdlPv(ptr noundef %243) #29 + call void @_ZdlPv(ptr noundef %244) #29 br label %_ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit752 _ZNSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEED2Ev.exit752: ; preds = %if.then.i.i748, %_ZNKSt7__cxx1112basic_stringIDiSt11char_traitsIDiESaIDiEE11_M_is_localEv.exit.thread.i.i749 diff --git a/bench/minetest/optimized/COpenGLDriver.cpp.ll b/bench/minetest/optimized/COpenGLDriver.cpp.ll index 740d7cd149..60514ccc35 100644 --- a/bench/minetest/optimized/COpenGLDriver.cpp.ll +++ b/bench/minetest/optimized/COpenGLDriver.cpp.ll @@ -1404,7 +1404,7 @@ for.body.i193.preheader: ; preds = %if.end.i187 br i1 %18, label %if.end20.loopexit.unr-lcssa, label %for.body.i193.preheader.new for.body.i193.preheader.new: ; preds = %for.body.i193.preheader - %unroll_iter = sub nuw nsw i64 %conv.i189, %xtraiter + %unroll_iter = and i64 %call.i.i188, 4294967292 br label %for.body.i193 for.body.i193: ; preds = %for.body.i193, %for.body.i193.preheader.new @@ -1444,10 +1444,10 @@ if.end20.loopexit.unr-lcssa: ; preds = %for.body.i193, %for for.body.i193.epil: ; preds = %if.end20.loopexit.unr-lcssa, %for.body.i193.epil %indvars.iv.i194.epil = phi i64 [ %indvars.iv.next.i197.epil, %for.body.i193.epil ], [ %indvars.iv.i194.unr, %if.end20.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i193.epil ], [ 0, %if.end20.loopexit.unr-lcssa ] - %arrayidx.i195.epil = getelementptr inbounds i8, ptr %call15, i64 %indvars.iv.i194.epil + %arrayidx.i195.epil = getelementptr inbounds nuw i8, ptr %call15, i64 %indvars.iv.i194.epil %27 = load i8, ptr %arrayidx.i195.epil, align 1, !tbaa !102 %28 = load ptr, ptr %VendorName, align 8, !tbaa !143 - %arrayidx.i.i196.epil = getelementptr inbounds i8, ptr %28, i64 %indvars.iv.i194.epil + %arrayidx.i.i196.epil = getelementptr inbounds nuw i8, ptr %28, i64 %indvars.iv.i194.epil store i8 %27, ptr %arrayidx.i.i196.epil, align 1, !tbaa !102 %indvars.iv.next.i197.epil = add nuw nsw i64 %indvars.iv.i194.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -11558,36 +11558,35 @@ for.cond.preheader: ; preds = %entry br i1 %cmp403.not, label %for.cond9.preheader, label %for.body.lr.ph for.body.lr.ph: ; preds = %for.cond.preheader - %sub.ptr.div.i.i = lshr i64 %sub.ptr.sub.i.i, 3 %MaterialType = getelementptr inbounds nuw i8, ptr %material, i64 128 %MaterialType.promoted = load i32, ptr %MaterialType, align 8 - %wide.trip.count = and i64 %sub.ptr.div.i.i, 4294967295 - %xtraiter = and i64 %sub.ptr.div.i.i, 1 - %4 = icmp eq i64 %wide.trip.count, 1 + %4 = icmp eq i64 %3, 8 br i1 %4, label %for.cond9.preheader.loopexit.unr-lcssa, label %for.body.lr.ph.new for.body.lr.ph.new: ; preds = %for.body.lr.ph - %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter + %sub.ptr.div.i.i = lshr i64 %sub.ptr.sub.i.i, 3 + %unroll_iter = and i64 %sub.ptr.div.i.i, 4294967294 br label %for.body for.cond9.preheader.loopexit.unr-lcssa: ; preds = %if.end.1, %for.body.lr.ph %indvars.iv.unr = phi i64 [ 0, %for.body.lr.ph ], [ %unroll_iter, %if.end.1 ] - %.unr = phi i32 [ %MaterialType.promoted, %for.body.lr.ph ], [ %13, %if.end.1 ] - %lcmp.mod.not = icmp eq i64 %xtraiter, 0 + %.unr = phi i32 [ %MaterialType.promoted, %for.body.lr.ph ], [ %14, %if.end.1 ] + %5 = and i64 %sub.ptr.sub.i.i, 8 + %lcmp.mod.not = icmp eq i64 %5, 0 br i1 %lcmp.mod.not, label %for.cond9.preheader, label %for.body.epil for.body.epil: ; preds = %for.cond9.preheader.loopexit.unr-lcssa - %add.ptr.i.i.epil = getelementptr inbounds %"struct.irr::video::SOverrideMaterial::SMaterialTypeReplacement", ptr %2, i64 %indvars.iv.unr - %5 = load i32, ptr %add.ptr.i.i.epil, align 4, !tbaa !403 - %cmp4.epil = icmp slt i32 %5, 0 - %cmp6.epil = icmp eq i32 %5, %.unr + %add.ptr.i.i.epil = getelementptr inbounds nuw %"struct.irr::video::SOverrideMaterial::SMaterialTypeReplacement", ptr %2, i64 %indvars.iv.unr + %6 = load i32, ptr %add.ptr.i.i.epil, align 4, !tbaa !403 + %cmp4.epil = icmp slt i32 %6, 0 + %cmp6.epil = icmp eq i32 %6, %.unr %or.cond.epil = select i1 %cmp4.epil, i1 true, i1 %cmp6.epil br i1 %or.cond.epil, label %if.then7.epil, label %for.cond9.preheader if.then7.epil: ; preds = %for.body.epil %Replacement.epil = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.epil, i64 4 - %6 = load i32, ptr %Replacement.epil, align 4, !tbaa !405 - store i32 %6, ptr %MaterialType, align 8, !tbaa !406 + %7 = load i32, ptr %Replacement.epil, align 4, !tbaa !405 + store i32 %7, ptr %MaterialType, align 8, !tbaa !406 br label %for.cond9.preheader for.cond9.preheader: ; preds = %if.then7.epil, %for.body.epil, %for.cond9.preheader.loopexit.unr-lcssa, %for.cond.preheader @@ -11644,38 +11643,38 @@ for.cond9.preheader: ; preds = %if.then7.epil, %for for.body: ; preds = %if.end.1, %for.body.lr.ph.new %indvars.iv = phi i64 [ 0, %for.body.lr.ph.new ], [ %indvars.iv.next.1, %if.end.1 ] - %7 = phi i32 [ %MaterialType.promoted, %for.body.lr.ph.new ], [ %13, %if.end.1 ] + %8 = phi i32 [ %MaterialType.promoted, %for.body.lr.ph.new ], [ %14, %if.end.1 ] %add.ptr.i.i = getelementptr inbounds nuw %"struct.irr::video::SOverrideMaterial::SMaterialTypeReplacement", ptr %2, i64 %indvars.iv - %8 = load i32, ptr %add.ptr.i.i, align 4, !tbaa !403 - %cmp4 = icmp slt i32 %8, 0 - %cmp6 = icmp eq i32 %8, %7 + %9 = load i32, ptr %add.ptr.i.i, align 4, !tbaa !403 + %cmp4 = icmp slt i32 %9, 0 + %cmp6 = icmp eq i32 %9, %8 %or.cond = select i1 %cmp4, i1 true, i1 %cmp6 br i1 %or.cond, label %if.then7, label %if.end if.then7: ; preds = %for.body %Replacement = getelementptr inbounds nuw i8, ptr %add.ptr.i.i, i64 4 - %9 = load i32, ptr %Replacement, align 4, !tbaa !405 - store i32 %9, ptr %MaterialType, align 8, !tbaa !406 + %10 = load i32, ptr %Replacement, align 4, !tbaa !405 + store i32 %10, ptr %MaterialType, align 8, !tbaa !406 br label %if.end if.end: ; preds = %if.then7, %for.body - %10 = phi i32 [ %7, %for.body ], [ %9, %if.then7 ] + %11 = phi i32 [ %8, %for.body ], [ %10, %if.then7 ] %indvars.iv.next = or disjoint i64 %indvars.iv, 1 %add.ptr.i.i.1 = getelementptr inbounds nuw %"struct.irr::video::SOverrideMaterial::SMaterialTypeReplacement", ptr %2, i64 %indvars.iv.next - %11 = load i32, ptr %add.ptr.i.i.1, align 4, !tbaa !403 - %cmp4.1 = icmp slt i32 %11, 0 - %cmp6.1 = icmp eq i32 %11, %10 + %12 = load i32, ptr %add.ptr.i.i.1, align 4, !tbaa !403 + %cmp4.1 = icmp slt i32 %12, 0 + %cmp6.1 = icmp eq i32 %12, %11 %or.cond.1 = select i1 %cmp4.1, i1 true, i1 %cmp6.1 br i1 %or.cond.1, label %if.then7.1, label %if.end.1 if.then7.1: ; preds = %if.end %Replacement.1 = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.1, i64 4 - %12 = load i32, ptr %Replacement.1, align 4, !tbaa !405 - store i32 %12, ptr %MaterialType, align 8, !tbaa !406 + %13 = load i32, ptr %Replacement.1, align 4, !tbaa !405 + store i32 %13, ptr %MaterialType, align 8, !tbaa !406 br label %if.end.1 if.end.1: ; preds = %if.then7.1, %if.end - %13 = phi i32 [ %10, %if.end ], [ %12, %if.then7.1 ] + %14 = phi i32 [ %11, %if.end ], [ %13, %if.then7.1 ] %indvars.iv.next.1 = add nuw i64 %indvars.iv, 2 %niter.ncmp.1 = icmp eq i64 %indvars.iv.next.1, %unroll_iter br i1 %niter.ncmp.1, label %for.cond9.preheader.loopexit.unr-lcssa, label %for.body, !llvm.loop !407 @@ -11687,15 +11686,15 @@ for.cond297.preheader: ; preds = %if.end292 for.body300.preheader: ; preds = %for.cond297.preheader %EnableLayers = getelementptr inbounds nuw i8, ptr %this, i64 196 - %14 = load i8, ptr %EnableLayers, align 4, !tbaa !166, !range !131, !noundef !132 - %tobool303.not = icmp eq i8 %14, 0 + %15 = load i8, ptr %EnableLayers, align 4, !tbaa !166, !range !131, !noundef !132 + %tobool303.not = icmp eq i8 %15, 0 br i1 %tobool303.not, label %if.else, label %if.then304 for.body12: ; preds = %if.end292, %for.cond9.preheader %f.0409 = phi i32 [ 0, %for.cond9.preheader ], [ %inc294, %if.end292 ] %shl = shl nuw i32 1, %f.0409 - %15 = load i32, ptr %EnableProps, align 8, !tbaa !408 - %and = and i32 %15, %shl + %16 = load i32, ptr %EnableProps, align 8, !tbaa !408 + %and = and i32 %16, %shl %tobool13.not = icmp eq i32 %and, 0 br i1 %tobool13.not, label %if.end292, label %if.then14 @@ -11725,31 +11724,31 @@ if.then14: ; preds = %for.body12 ] for.body177.preheader: ; preds = %if.then14 - %16 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 - %tobool181.not = icmp eq i8 %16, 0 + %17 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 + %tobool181.not = icmp eq i8 %17, 0 br i1 %tobool181.not, label %for.inc233, label %if.then182 for.body132.preheader: ; preds = %if.then14 - %17 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 - %tobool136.not = icmp eq i8 %17, 0 + %18 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 + %tobool136.not = icmp eq i8 %18, 0 br i1 %tobool136.not, label %for.inc147, label %if.then137 for.body109.preheader: ; preds = %if.then14 - %18 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 - %tobool113.not = icmp eq i8 %18, 0 + %19 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 + %tobool113.not = icmp eq i8 %19, 0 br i1 %tobool113.not, label %for.inc124, label %if.then114 for.body90.preheader: ; preds = %if.then14 - %19 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 - %tobool91.not = icmp eq i8 %19, 0 + %20 = load i8, ptr %EnableLayerProps178, align 4, !tbaa !166, !range !131, !noundef !132 + %tobool91.not = icmp eq i8 %20, 0 br i1 %tobool91.not, label %for.inc101, label %if.then92 sw.bb: ; preds = %if.then14 %bf.load = load i16, ptr %UseMipMaps, align 8 - %20 = and i16 %bf.load, 1 + %21 = and i16 %bf.load, 1 %bf.load16 = load i16, ptr %UseMipMaps267, align 8 %bf.clear17 = and i16 %bf.load16, -2 - %bf.set = or disjoint i16 %bf.clear17, %20 + %bf.set = or disjoint i16 %bf.clear17, %21 store i16 %bf.set, ptr %UseMipMaps267, align 8 br label %if.end292 @@ -11781,8 +11780,8 @@ sw.bb38: ; preds = %if.then14 br label %if.end292 sw.bb49: ; preds = %if.then14 - %21 = load i8, ptr %ZBuffer, align 8, !tbaa !409 - store i8 %21, ptr %ZBuffer51, align 8, !tbaa !121 + %22 = load i8, ptr %ZBuffer, align 8, !tbaa !409 + store i8 %22, ptr %ZBuffer51, align 8, !tbaa !121 br label %if.end292 sw.bb52: ; preds = %if.then14 @@ -11813,108 +11812,108 @@ sw.bb74: ; preds = %if.then14 br label %if.end292 if.then92: ; preds = %for.body90.preheader - %22 = load i32, ptr %MinFilter, align 4, !tbaa !114 - store i32 %22, ptr %MinFilter99, align 4, !tbaa !114 + %23 = load i32, ptr %MinFilter, align 4, !tbaa !114 + store i32 %23, ptr %MinFilter99, align 4, !tbaa !114 br label %for.inc101 for.inc101: ; preds = %if.then92, %for.body90.preheader - %23 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool91.not.1 = icmp eq i8 %23, 0 + %24 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool91.not.1 = icmp eq i8 %24, 0 br i1 %tobool91.not.1, label %for.inc101.1, label %if.then92.1 if.then92.1: ; preds = %for.inc101 - %24 = load i32, ptr %MinFilter.1, align 4, !tbaa !114 - store i32 %24, ptr %MinFilter99.1, align 4, !tbaa !114 + %25 = load i32, ptr %MinFilter.1, align 4, !tbaa !114 + store i32 %25, ptr %MinFilter99.1, align 4, !tbaa !114 br label %for.inc101.1 for.inc101.1: ; preds = %if.then92.1, %for.inc101 - %25 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool91.not.2 = icmp eq i8 %25, 0 + %26 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool91.not.2 = icmp eq i8 %26, 0 br i1 %tobool91.not.2, label %for.inc101.2, label %if.then92.2 if.then92.2: ; preds = %for.inc101.1 - %26 = load i32, ptr %MinFilter.2, align 4, !tbaa !114 - store i32 %26, ptr %MinFilter99.2, align 4, !tbaa !114 + %27 = load i32, ptr %MinFilter.2, align 4, !tbaa !114 + store i32 %27, ptr %MinFilter99.2, align 4, !tbaa !114 br label %for.inc101.2 for.inc101.2: ; preds = %if.then92.2, %for.inc101.1 - %27 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool91.not.3 = icmp eq i8 %27, 0 + %28 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool91.not.3 = icmp eq i8 %28, 0 br i1 %tobool91.not.3, label %if.end292, label %if.then92.3 if.then92.3: ; preds = %for.inc101.2 - %28 = load i32, ptr %MinFilter.3, align 4, !tbaa !114 - store i32 %28, ptr %MinFilter99.3, align 4, !tbaa !114 + %29 = load i32, ptr %MinFilter.3, align 4, !tbaa !114 + store i32 %29, ptr %MinFilter99.3, align 4, !tbaa !114 br label %if.end292 if.then114: ; preds = %for.body109.preheader - %29 = load i32, ptr %MagFilter, align 8, !tbaa !115 - store i32 %29, ptr %MagFilter122, align 8, !tbaa !115 + %30 = load i32, ptr %MagFilter, align 8, !tbaa !115 + store i32 %30, ptr %MagFilter122, align 8, !tbaa !115 br label %for.inc124 for.inc124: ; preds = %if.then114, %for.body109.preheader - %30 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool113.not.1 = icmp eq i8 %30, 0 + %31 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool113.not.1 = icmp eq i8 %31, 0 br i1 %tobool113.not.1, label %for.inc124.1, label %if.then114.1 if.then114.1: ; preds = %for.inc124 - %31 = load i32, ptr %MagFilter.1, align 8, !tbaa !115 - store i32 %31, ptr %MagFilter122.1, align 8, !tbaa !115 + %32 = load i32, ptr %MagFilter.1, align 8, !tbaa !115 + store i32 %32, ptr %MagFilter122.1, align 8, !tbaa !115 br label %for.inc124.1 for.inc124.1: ; preds = %if.then114.1, %for.inc124 - %32 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool113.not.2 = icmp eq i8 %32, 0 + %33 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool113.not.2 = icmp eq i8 %33, 0 br i1 %tobool113.not.2, label %for.inc124.2, label %if.then114.2 if.then114.2: ; preds = %for.inc124.1 - %33 = load i32, ptr %MagFilter.2, align 8, !tbaa !115 - store i32 %33, ptr %MagFilter122.2, align 8, !tbaa !115 + %34 = load i32, ptr %MagFilter.2, align 8, !tbaa !115 + store i32 %34, ptr %MagFilter122.2, align 8, !tbaa !115 br label %for.inc124.2 for.inc124.2: ; preds = %if.then114.2, %for.inc124.1 - %34 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool113.not.3 = icmp eq i8 %34, 0 + %35 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool113.not.3 = icmp eq i8 %35, 0 br i1 %tobool113.not.3, label %if.end292, label %if.then114.3 if.then114.3: ; preds = %for.inc124.2 - %35 = load i32, ptr %MagFilter.3, align 8, !tbaa !115 - store i32 %35, ptr %MagFilter122.3, align 8, !tbaa !115 + %36 = load i32, ptr %MagFilter.3, align 8, !tbaa !115 + store i32 %36, ptr %MagFilter122.3, align 8, !tbaa !115 br label %if.end292 if.then137: ; preds = %for.body132.preheader - %36 = load i8, ptr %AnisotropicFilter, align 4, !tbaa !116 - store i8 %36, ptr %AnisotropicFilter145, align 4, !tbaa !116 + %37 = load i8, ptr %AnisotropicFilter, align 4, !tbaa !116 + store i8 %37, ptr %AnisotropicFilter145, align 4, !tbaa !116 br label %for.inc147 for.inc147: ; preds = %if.then137, %for.body132.preheader - %37 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool136.not.1 = icmp eq i8 %37, 0 + %38 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool136.not.1 = icmp eq i8 %38, 0 br i1 %tobool136.not.1, label %for.inc147.1, label %if.then137.1 if.then137.1: ; preds = %for.inc147 - %38 = load i8, ptr %AnisotropicFilter.1, align 4, !tbaa !116 - store i8 %38, ptr %AnisotropicFilter145.1, align 4, !tbaa !116 + %39 = load i8, ptr %AnisotropicFilter.1, align 4, !tbaa !116 + store i8 %39, ptr %AnisotropicFilter145.1, align 4, !tbaa !116 br label %for.inc147.1 for.inc147.1: ; preds = %if.then137.1, %for.inc147 - %39 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool136.not.2 = icmp eq i8 %39, 0 + %40 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool136.not.2 = icmp eq i8 %40, 0 br i1 %tobool136.not.2, label %for.inc147.2, label %if.then137.2 if.then137.2: ; preds = %for.inc147.1 - %40 = load i8, ptr %AnisotropicFilter.2, align 4, !tbaa !116 - store i8 %40, ptr %AnisotropicFilter145.2, align 4, !tbaa !116 + %41 = load i8, ptr %AnisotropicFilter.2, align 4, !tbaa !116 + store i8 %41, ptr %AnisotropicFilter145.2, align 4, !tbaa !116 br label %for.inc147.2 for.inc147.2: ; preds = %if.then137.2, %for.inc147.1 - %41 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool136.not.3 = icmp eq i8 %41, 0 + %42 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool136.not.3 = icmp eq i8 %42, 0 br i1 %tobool136.not.3, label %if.end292, label %if.then137.3 if.then137.3: ; preds = %for.inc147.2 - %42 = load i8, ptr %AnisotropicFilter.3, align 4, !tbaa !116 - store i8 %42, ptr %AnisotropicFilter145.3, align 4, !tbaa !116 + %43 = load i8, ptr %AnisotropicFilter.3, align 4, !tbaa !116 + store i8 %43, ptr %AnisotropicFilter145.3, align 4, !tbaa !116 br label %if.end292 sw.bb150: ; preds = %if.then14 @@ -11943,9 +11942,9 @@ if.then182: ; preds = %for.body177.prehead %bf.set197 = or disjoint i16 %bf.clear196, %bf.cast189 store i16 %bf.set197, ptr %TextureWrapU193, align 8 %bf.load202 = load i16, ptr %TextureWrapU, align 8 - %43 = and i16 %bf.load202, 240 + %44 = and i16 %bf.load202, 240 %bf.clear213 = and i16 %bf.set197, -241 - %bf.set214 = or disjoint i16 %bf.clear213, %43 + %bf.set214 = or disjoint i16 %bf.clear213, %44 store i16 %bf.set214, ptr %TextureWrapU193, align 8 %bf.load219 = load i16, ptr %TextureWrapU, align 8 %bf.cast222 = and i16 %bf.load219, 3840 @@ -11955,8 +11954,8 @@ if.then182: ; preds = %for.body177.prehead br label %for.inc233 for.inc233: ; preds = %if.then182, %for.body177.preheader - %44 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool181.not.1 = icmp eq i8 %44, 0 + %45 = load i8, ptr %arrayidx180.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool181.not.1 = icmp eq i8 %45, 0 br i1 %tobool181.not.1, label %for.inc233.1, label %if.then182.1 if.then182.1: ; preds = %for.inc233 @@ -11967,9 +11966,9 @@ if.then182.1: ; preds = %for.inc233 %bf.set197.1 = or disjoint i16 %bf.clear196.1, %bf.cast189.1 store i16 %bf.set197.1, ptr %TextureWrapU193.1, align 8 %bf.load202.1 = load i16, ptr %TextureWrapU.1, align 8 - %45 = and i16 %bf.load202.1, 240 + %46 = and i16 %bf.load202.1, 240 %bf.clear213.1 = and i16 %bf.set197.1, -241 - %bf.set214.1 = or disjoint i16 %bf.clear213.1, %45 + %bf.set214.1 = or disjoint i16 %bf.clear213.1, %46 store i16 %bf.set214.1, ptr %TextureWrapU193.1, align 8 %bf.load219.1 = load i16, ptr %TextureWrapU.1, align 8 %bf.cast222.1 = and i16 %bf.load219.1, 3840 @@ -11979,8 +11978,8 @@ if.then182.1: ; preds = %for.inc233 br label %for.inc233.1 for.inc233.1: ; preds = %if.then182.1, %for.inc233 - %46 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool181.not.2 = icmp eq i8 %46, 0 + %47 = load i8, ptr %arrayidx180.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool181.not.2 = icmp eq i8 %47, 0 br i1 %tobool181.not.2, label %for.inc233.2, label %if.then182.2 if.then182.2: ; preds = %for.inc233.1 @@ -11991,9 +11990,9 @@ if.then182.2: ; preds = %for.inc233.1 %bf.set197.2 = or disjoint i16 %bf.clear196.2, %bf.cast189.2 store i16 %bf.set197.2, ptr %TextureWrapU193.2, align 8 %bf.load202.2 = load i16, ptr %TextureWrapU.2, align 8 - %47 = and i16 %bf.load202.2, 240 + %48 = and i16 %bf.load202.2, 240 %bf.clear213.2 = and i16 %bf.set197.2, -241 - %bf.set214.2 = or disjoint i16 %bf.clear213.2, %47 + %bf.set214.2 = or disjoint i16 %bf.clear213.2, %48 store i16 %bf.set214.2, ptr %TextureWrapU193.2, align 8 %bf.load219.2 = load i16, ptr %TextureWrapU.2, align 8 %bf.cast222.2 = and i16 %bf.load219.2, 3840 @@ -12003,8 +12002,8 @@ if.then182.2: ; preds = %for.inc233.1 br label %for.inc233.2 for.inc233.2: ; preds = %if.then182.2, %for.inc233.1 - %48 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool181.not.3 = icmp eq i8 %48, 0 + %49 = load i8, ptr %arrayidx180.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool181.not.3 = icmp eq i8 %49, 0 br i1 %tobool181.not.3, label %if.end292, label %if.then182.3 if.then182.3: ; preds = %for.inc233.2 @@ -12015,9 +12014,9 @@ if.then182.3: ; preds = %for.inc233.2 %bf.set197.3 = or disjoint i16 %bf.clear196.3, %bf.cast189.3 store i16 %bf.set197.3, ptr %TextureWrapU193.3, align 8 %bf.load202.3 = load i16, ptr %TextureWrapU.3, align 8 - %49 = and i16 %bf.load202.3, 240 + %50 = and i16 %bf.load202.3, 240 %bf.clear213.3 = and i16 %bf.set197.3, -241 - %bf.set214.3 = or disjoint i16 %bf.clear213.3, %49 + %bf.set214.3 = or disjoint i16 %bf.clear213.3, %50 store i16 %bf.set214.3, ptr %TextureWrapU193.3, align 8 %bf.load219.3 = load i16, ptr %TextureWrapU.3, align 8 %bf.cast222.3 = and i16 %bf.load219.3, 3840 @@ -12027,8 +12026,8 @@ if.then182.3: ; preds = %for.inc233.2 br label %if.end292 sw.bb236: ; preds = %if.then14 - %50 = load i8, ptr %AntiAliasing, align 1, !tbaa !410 - store i8 %50, ptr %AntiAliasing238, align 1, !tbaa !122 + %51 = load i8, ptr %AntiAliasing, align 1, !tbaa !410 + store i8 %51, ptr %AntiAliasing238, align 1, !tbaa !122 br label %if.end292 sw.bb239: ; preds = %if.then14 @@ -12068,13 +12067,13 @@ sw.bb272: ; preds = %if.then14 br label %if.end292 sw.bb284: ; preds = %if.then14 - %51 = load float, ptr %BlendFactor, align 4, !tbaa !411 - store float %51, ptr %BlendFactor286, align 4, !tbaa !412 + %52 = load float, ptr %BlendFactor, align 4, !tbaa !411 + store float %52, ptr %BlendFactor286, align 4, !tbaa !412 br label %if.end292 sw.bb287: ; preds = %if.then14 - %52 = load <2 x float>, ptr %PolygonOffsetDepthBias, align 8, !tbaa !103 - store <2 x float> %52, ptr %PolygonOffsetDepthBias289, align 8, !tbaa !103 + %53 = load <2 x float>, ptr %PolygonOffsetDepthBias, align 8, !tbaa !103 + store <2 x float> %53, ptr %PolygonOffsetDepthBias289, align 8, !tbaa !103 br label %if.end292 if.end292: ; preds = %sw.bb287, %sw.bb284, %sw.bb272, %sw.bb261, %sw.bb249, %sw.bb239, %sw.bb236, %if.then182.3, %for.inc233.2, %sw.bb161, %sw.bb150, %if.then137.3, %for.inc147.2, %if.then114.3, %for.inc124.2, %if.then92.3, %for.inc101.2, %sw.bb74, %sw.bb63, %sw.bb52, %sw.bb49, %sw.bb38, %sw.bb27, %sw.bb18, %sw.bb, %if.then14, %for.body12 @@ -12083,25 +12082,25 @@ if.end292: ; preds = %sw.bb287, %sw.bb284 br i1 %exitcond432.not, label %for.cond297.preheader, label %for.body12, !llvm.loop !413 if.then304: ; preds = %for.body300.preheader - %53 = load ptr, ptr %this, align 8, !tbaa !110 - store ptr %53, ptr %material, align 8, !tbaa !110 + %54 = load ptr, ptr %this, align 8, !tbaa !110 + store ptr %54, ptr %material, align 8, !tbaa !110 %TextureMatrix.i = getelementptr inbounds nuw i8, ptr %material, i64 24 - %54 = load ptr, ptr %TextureMatrix.i, align 8, !tbaa !118 - %tobool.not.i = icmp eq ptr %54, null + %55 = load ptr, ptr %TextureMatrix.i, align 8, !tbaa !118 + %tobool.not.i = icmp eq ptr %55, null %TextureMatrix13.i = getelementptr inbounds nuw i8, ptr %this, i64 24 - %55 = load ptr, ptr %TextureMatrix13.i, align 8, !tbaa !118 - %tobool14.not.i = icmp eq ptr %55, null + %56 = load ptr, ptr %TextureMatrix13.i, align 8, !tbaa !118 + %tobool14.not.i = icmp eq ptr %56, null br i1 %tobool.not.i, label %if.else12.i, label %if.then3.i if.then3.i: ; preds = %if.then304 br i1 %tobool14.not.i, label %delete.notnull.i, label %if.then6.i if.then6.i: ; preds = %if.then3.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %54, ptr noundef nonnull align 4 dereferenceable(64) %55, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %55, ptr noundef nonnull align 4 dereferenceable(64) %56, i64 64, i1 false), !tbaa.struct !237 br label %if.end21.i delete.notnull.i: ; preds = %if.then3.i - tail call void @_ZdlPv(ptr noundef nonnull %54) #26 + tail call void @_ZdlPv(ptr noundef nonnull %55) #26 store ptr null, ptr %TextureMatrix.i, align 8, !tbaa !118 br label %if.end21.i @@ -12110,7 +12109,7 @@ if.else12.i: ; preds = %if.then304 if.then15.i: ; preds = %if.else12.i %call.i = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #28 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i, ptr noundef nonnull align 4 dereferenceable(64) %55, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i, ptr noundef nonnull align 4 dereferenceable(64) %56, i64 64, i1 false), !tbaa.struct !237 store ptr %call.i, ptr %TextureMatrix.i, align 8, !tbaa !118 br label %if.end21.i @@ -12126,63 +12125,63 @@ if.end21.i: ; preds = %if.else18.i, %if.th %bf.set.i = or disjoint i16 %bf.clear24.i, %bf.cast.i store i16 %bf.set.i, ptr %TextureWrapU193, align 8 %bf.load25.i = load i16, ptr %TextureWrapU, align 8 - %56 = and i16 %bf.load25.i, 240 + %57 = and i16 %bf.load25.i, 240 %bf.clear31.i = and i16 %bf.set.i, -241 - %bf.set32.i = or disjoint i16 %bf.clear31.i, %56 + %bf.set32.i = or disjoint i16 %bf.clear31.i, %57 store i16 %bf.set32.i, ptr %TextureWrapU193, align 8 %bf.load33.i = load i16, ptr %TextureWrapU, align 8 %bf.cast36.i = and i16 %bf.load33.i, 3840 %bf.clear41.i = and i16 %bf.set32.i, -3841 %bf.set42.i = or disjoint i16 %bf.clear41.i, %bf.cast36.i store i16 %bf.set42.i, ptr %TextureWrapU193, align 8 - %57 = load <2 x i32>, ptr %MinFilter, align 4, !tbaa !102 - store <2 x i32> %57, ptr %MinFilter99, align 4, !tbaa !102 - %58 = load i8, ptr %AnisotropicFilter, align 4, !tbaa !116 - store i8 %58, ptr %AnisotropicFilter145, align 4, !tbaa !116 + %58 = load <2 x i32>, ptr %MinFilter, align 4, !tbaa !102 + store <2 x i32> %58, ptr %MinFilter99, align 4, !tbaa !102 + %59 = load i8, ptr %AnisotropicFilter, align 4, !tbaa !116 + store i8 %59, ptr %AnisotropicFilter145, align 4, !tbaa !116 %LODBias.i = getelementptr inbounds nuw i8, ptr %this, i64 21 - %59 = load i8, ptr %LODBias.i, align 1, !tbaa !117 + %60 = load i8, ptr %LODBias.i, align 1, !tbaa !117 %LODBias46.i = getelementptr inbounds nuw i8, ptr %material, i64 21 - store i8 %59, ptr %LODBias46.i, align 1, !tbaa !117 + store i8 %60, ptr %LODBias46.i, align 1, !tbaa !117 br label %for.inc327 if.else: ; preds = %for.body300.preheader - %60 = load i8, ptr %EnableTextures, align 8, !tbaa !166, !range !131, !noundef !132 - %tobool315.not = icmp eq i8 %60, 0 + %61 = load i8, ptr %EnableTextures, align 8, !tbaa !166, !range !131, !noundef !132 + %tobool315.not = icmp eq i8 %61, 0 br i1 %tobool315.not, label %for.inc327, label %if.then316 if.then316: ; preds = %if.else - %61 = load ptr, ptr %this, align 8, !tbaa !110 - store ptr %61, ptr %material, align 8, !tbaa !110 + %62 = load ptr, ptr %this, align 8, !tbaa !110 + store ptr %62, ptr %material, align 8, !tbaa !110 br label %for.inc327 for.inc327: ; preds = %if.then316, %if.else, %if.end21.i %arrayidx302.1 = getelementptr inbounds nuw i8, ptr %this, i64 197 - %62 = load i8, ptr %arrayidx302.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool303.not.1 = icmp eq i8 %62, 0 + %63 = load i8, ptr %arrayidx302.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool303.not.1 = icmp eq i8 %63, 0 br i1 %tobool303.not.1, label %if.else.1, label %if.then304.1 if.then304.1: ; preds = %for.inc327 %arrayidx308.1 = getelementptr inbounds nuw i8, ptr %this, i64 32 %arrayidx311.1 = getelementptr inbounds nuw i8, ptr %material, i64 32 - %63 = load ptr, ptr %arrayidx308.1, align 8, !tbaa !110 - store ptr %63, ptr %arrayidx311.1, align 8, !tbaa !110 + %64 = load ptr, ptr %arrayidx308.1, align 8, !tbaa !110 + store ptr %64, ptr %arrayidx311.1, align 8, !tbaa !110 %TextureMatrix.i.1 = getelementptr inbounds nuw i8, ptr %material, i64 56 - %64 = load ptr, ptr %TextureMatrix.i.1, align 8, !tbaa !118 - %tobool.not.i.1 = icmp eq ptr %64, null + %65 = load ptr, ptr %TextureMatrix.i.1, align 8, !tbaa !118 + %tobool.not.i.1 = icmp eq ptr %65, null %TextureMatrix13.i.1 = getelementptr inbounds nuw i8, ptr %this, i64 56 - %65 = load ptr, ptr %TextureMatrix13.i.1, align 8, !tbaa !118 - %tobool14.not.i.1 = icmp eq ptr %65, null + %66 = load ptr, ptr %TextureMatrix13.i.1, align 8, !tbaa !118 + %tobool14.not.i.1 = icmp eq ptr %66, null br i1 %tobool.not.i.1, label %if.else12.i.1, label %if.then3.i.1 if.then3.i.1: ; preds = %if.then304.1 br i1 %tobool14.not.i.1, label %delete.notnull.i.1, label %if.then6.i.1 if.then6.i.1: ; preds = %if.then3.i.1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %64, ptr noundef nonnull align 4 dereferenceable(64) %65, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %65, ptr noundef nonnull align 4 dereferenceable(64) %66, i64 64, i1 false), !tbaa.struct !237 br label %if.end21.i.1 delete.notnull.i.1: ; preds = %if.then3.i.1 - tail call void @_ZdlPv(ptr noundef nonnull %64) #26 + tail call void @_ZdlPv(ptr noundef nonnull %65) #26 store ptr null, ptr %TextureMatrix.i.1, align 8, !tbaa !118 br label %if.end21.i.1 @@ -12191,7 +12190,7 @@ if.else12.i.1: ; preds = %if.then304.1 if.then15.i.1: ; preds = %if.else12.i.1 %call.i.1 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #28 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.1, ptr noundef nonnull align 4 dereferenceable(64) %65, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.1, ptr noundef nonnull align 4 dereferenceable(64) %66, i64 64, i1 false), !tbaa.struct !237 store ptr %call.i.1, ptr %TextureMatrix.i.1, align 8, !tbaa !118 br label %if.end21.i.1 @@ -12207,66 +12206,66 @@ if.end21.i.1: ; preds = %if.else18.i.1, %if. %bf.set.i.1 = or disjoint i16 %bf.clear24.i.1, %bf.cast.i.1 store i16 %bf.set.i.1, ptr %TextureWrapU193.1, align 8 %bf.load25.i.1 = load i16, ptr %TextureWrapU.1, align 8 - %66 = and i16 %bf.load25.i.1, 240 + %67 = and i16 %bf.load25.i.1, 240 %bf.clear31.i.1 = and i16 %bf.set.i.1, -241 - %bf.set32.i.1 = or disjoint i16 %bf.clear31.i.1, %66 + %bf.set32.i.1 = or disjoint i16 %bf.clear31.i.1, %67 store i16 %bf.set32.i.1, ptr %TextureWrapU193.1, align 8 %bf.load33.i.1 = load i16, ptr %TextureWrapU.1, align 8 %bf.cast36.i.1 = and i16 %bf.load33.i.1, 3840 %bf.clear41.i.1 = and i16 %bf.set32.i.1, -3841 %bf.set42.i.1 = or disjoint i16 %bf.clear41.i.1, %bf.cast36.i.1 store i16 %bf.set42.i.1, ptr %TextureWrapU193.1, align 8 - %67 = load <2 x i32>, ptr %MinFilter.1, align 4, !tbaa !102 - store <2 x i32> %67, ptr %MinFilter99.1, align 4, !tbaa !102 - %68 = load i8, ptr %AnisotropicFilter.1, align 4, !tbaa !116 - store i8 %68, ptr %AnisotropicFilter145.1, align 4, !tbaa !116 + %68 = load <2 x i32>, ptr %MinFilter.1, align 4, !tbaa !102 + store <2 x i32> %68, ptr %MinFilter99.1, align 4, !tbaa !102 + %69 = load i8, ptr %AnisotropicFilter.1, align 4, !tbaa !116 + store i8 %69, ptr %AnisotropicFilter145.1, align 4, !tbaa !116 %LODBias.i.1 = getelementptr inbounds nuw i8, ptr %this, i64 53 - %69 = load i8, ptr %LODBias.i.1, align 1, !tbaa !117 + %70 = load i8, ptr %LODBias.i.1, align 1, !tbaa !117 %LODBias46.i.1 = getelementptr inbounds nuw i8, ptr %material, i64 53 - store i8 %69, ptr %LODBias46.i.1, align 1, !tbaa !117 + store i8 %70, ptr %LODBias46.i.1, align 1, !tbaa !117 br label %for.inc327.1 if.else.1: ; preds = %for.inc327 %arrayidx314.1 = getelementptr inbounds nuw i8, ptr %this, i64 193 - %70 = load i8, ptr %arrayidx314.1, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool315.not.1 = icmp eq i8 %70, 0 + %71 = load i8, ptr %arrayidx314.1, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool315.not.1 = icmp eq i8 %71, 0 br i1 %tobool315.not.1, label %for.inc327.1, label %if.then316.1 if.then316.1: ; preds = %if.else.1 %arrayidx320.1 = getelementptr inbounds nuw i8, ptr %this, i64 32 - %71 = load ptr, ptr %arrayidx320.1, align 8, !tbaa !110 + %72 = load ptr, ptr %arrayidx320.1, align 8, !tbaa !110 %arrayidx323.1 = getelementptr inbounds nuw i8, ptr %material, i64 32 - store ptr %71, ptr %arrayidx323.1, align 8, !tbaa !110 + store ptr %72, ptr %arrayidx323.1, align 8, !tbaa !110 br label %for.inc327.1 for.inc327.1: ; preds = %if.then316.1, %if.else.1, %if.end21.i.1 %arrayidx302.2 = getelementptr inbounds nuw i8, ptr %this, i64 198 - %72 = load i8, ptr %arrayidx302.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool303.not.2 = icmp eq i8 %72, 0 + %73 = load i8, ptr %arrayidx302.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool303.not.2 = icmp eq i8 %73, 0 br i1 %tobool303.not.2, label %if.else.2, label %if.then304.2 if.then304.2: ; preds = %for.inc327.1 %arrayidx308.2 = getelementptr inbounds nuw i8, ptr %this, i64 64 %arrayidx311.2 = getelementptr inbounds nuw i8, ptr %material, i64 64 - %73 = load ptr, ptr %arrayidx308.2, align 8, !tbaa !110 - store ptr %73, ptr %arrayidx311.2, align 8, !tbaa !110 + %74 = load ptr, ptr %arrayidx308.2, align 8, !tbaa !110 + store ptr %74, ptr %arrayidx311.2, align 8, !tbaa !110 %TextureMatrix.i.2 = getelementptr inbounds nuw i8, ptr %material, i64 88 - %74 = load ptr, ptr %TextureMatrix.i.2, align 8, !tbaa !118 - %tobool.not.i.2 = icmp eq ptr %74, null + %75 = load ptr, ptr %TextureMatrix.i.2, align 8, !tbaa !118 + %tobool.not.i.2 = icmp eq ptr %75, null %TextureMatrix13.i.2 = getelementptr inbounds nuw i8, ptr %this, i64 88 - %75 = load ptr, ptr %TextureMatrix13.i.2, align 8, !tbaa !118 - %tobool14.not.i.2 = icmp eq ptr %75, null + %76 = load ptr, ptr %TextureMatrix13.i.2, align 8, !tbaa !118 + %tobool14.not.i.2 = icmp eq ptr %76, null br i1 %tobool.not.i.2, label %if.else12.i.2, label %if.then3.i.2 if.then3.i.2: ; preds = %if.then304.2 br i1 %tobool14.not.i.2, label %delete.notnull.i.2, label %if.then6.i.2 if.then6.i.2: ; preds = %if.then3.i.2 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %74, ptr noundef nonnull align 4 dereferenceable(64) %75, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %75, ptr noundef nonnull align 4 dereferenceable(64) %76, i64 64, i1 false), !tbaa.struct !237 br label %if.end21.i.2 delete.notnull.i.2: ; preds = %if.then3.i.2 - tail call void @_ZdlPv(ptr noundef nonnull %74) #26 + tail call void @_ZdlPv(ptr noundef nonnull %75) #26 store ptr null, ptr %TextureMatrix.i.2, align 8, !tbaa !118 br label %if.end21.i.2 @@ -12275,7 +12274,7 @@ if.else12.i.2: ; preds = %if.then304.2 if.then15.i.2: ; preds = %if.else12.i.2 %call.i.2 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #28 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.2, ptr noundef nonnull align 4 dereferenceable(64) %75, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.2, ptr noundef nonnull align 4 dereferenceable(64) %76, i64 64, i1 false), !tbaa.struct !237 store ptr %call.i.2, ptr %TextureMatrix.i.2, align 8, !tbaa !118 br label %if.end21.i.2 @@ -12291,66 +12290,66 @@ if.end21.i.2: ; preds = %if.else18.i.2, %if. %bf.set.i.2 = or disjoint i16 %bf.clear24.i.2, %bf.cast.i.2 store i16 %bf.set.i.2, ptr %TextureWrapU193.2, align 8 %bf.load25.i.2 = load i16, ptr %TextureWrapU.2, align 8 - %76 = and i16 %bf.load25.i.2, 240 + %77 = and i16 %bf.load25.i.2, 240 %bf.clear31.i.2 = and i16 %bf.set.i.2, -241 - %bf.set32.i.2 = or disjoint i16 %bf.clear31.i.2, %76 + %bf.set32.i.2 = or disjoint i16 %bf.clear31.i.2, %77 store i16 %bf.set32.i.2, ptr %TextureWrapU193.2, align 8 %bf.load33.i.2 = load i16, ptr %TextureWrapU.2, align 8 %bf.cast36.i.2 = and i16 %bf.load33.i.2, 3840 %bf.clear41.i.2 = and i16 %bf.set32.i.2, -3841 %bf.set42.i.2 = or disjoint i16 %bf.clear41.i.2, %bf.cast36.i.2 store i16 %bf.set42.i.2, ptr %TextureWrapU193.2, align 8 - %77 = load <2 x i32>, ptr %MinFilter.2, align 4, !tbaa !102 - store <2 x i32> %77, ptr %MinFilter99.2, align 4, !tbaa !102 - %78 = load i8, ptr %AnisotropicFilter.2, align 4, !tbaa !116 - store i8 %78, ptr %AnisotropicFilter145.2, align 4, !tbaa !116 + %78 = load <2 x i32>, ptr %MinFilter.2, align 4, !tbaa !102 + store <2 x i32> %78, ptr %MinFilter99.2, align 4, !tbaa !102 + %79 = load i8, ptr %AnisotropicFilter.2, align 4, !tbaa !116 + store i8 %79, ptr %AnisotropicFilter145.2, align 4, !tbaa !116 %LODBias.i.2 = getelementptr inbounds nuw i8, ptr %this, i64 85 - %79 = load i8, ptr %LODBias.i.2, align 1, !tbaa !117 + %80 = load i8, ptr %LODBias.i.2, align 1, !tbaa !117 %LODBias46.i.2 = getelementptr inbounds nuw i8, ptr %material, i64 85 - store i8 %79, ptr %LODBias46.i.2, align 1, !tbaa !117 + store i8 %80, ptr %LODBias46.i.2, align 1, !tbaa !117 br label %for.inc327.2 if.else.2: ; preds = %for.inc327.1 %arrayidx314.2 = getelementptr inbounds nuw i8, ptr %this, i64 194 - %80 = load i8, ptr %arrayidx314.2, align 2, !tbaa !166, !range !131, !noundef !132 - %tobool315.not.2 = icmp eq i8 %80, 0 + %81 = load i8, ptr %arrayidx314.2, align 2, !tbaa !166, !range !131, !noundef !132 + %tobool315.not.2 = icmp eq i8 %81, 0 br i1 %tobool315.not.2, label %for.inc327.2, label %if.then316.2 if.then316.2: ; preds = %if.else.2 %arrayidx320.2 = getelementptr inbounds nuw i8, ptr %this, i64 64 - %81 = load ptr, ptr %arrayidx320.2, align 8, !tbaa !110 + %82 = load ptr, ptr %arrayidx320.2, align 8, !tbaa !110 %arrayidx323.2 = getelementptr inbounds nuw i8, ptr %material, i64 64 - store ptr %81, ptr %arrayidx323.2, align 8, !tbaa !110 + store ptr %82, ptr %arrayidx323.2, align 8, !tbaa !110 br label %for.inc327.2 for.inc327.2: ; preds = %if.then316.2, %if.else.2, %if.end21.i.2 %arrayidx302.3 = getelementptr inbounds nuw i8, ptr %this, i64 199 - %82 = load i8, ptr %arrayidx302.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool303.not.3 = icmp eq i8 %82, 0 + %83 = load i8, ptr %arrayidx302.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool303.not.3 = icmp eq i8 %83, 0 br i1 %tobool303.not.3, label %if.else.3, label %if.then304.3 if.then304.3: ; preds = %for.inc327.2 %arrayidx308.3 = getelementptr inbounds nuw i8, ptr %this, i64 96 %arrayidx311.3 = getelementptr inbounds nuw i8, ptr %material, i64 96 - %83 = load ptr, ptr %arrayidx308.3, align 8, !tbaa !110 - store ptr %83, ptr %arrayidx311.3, align 8, !tbaa !110 + %84 = load ptr, ptr %arrayidx308.3, align 8, !tbaa !110 + store ptr %84, ptr %arrayidx311.3, align 8, !tbaa !110 %TextureMatrix.i.3 = getelementptr inbounds nuw i8, ptr %material, i64 120 - %84 = load ptr, ptr %TextureMatrix.i.3, align 8, !tbaa !118 - %tobool.not.i.3 = icmp eq ptr %84, null + %85 = load ptr, ptr %TextureMatrix.i.3, align 8, !tbaa !118 + %tobool.not.i.3 = icmp eq ptr %85, null %TextureMatrix13.i.3 = getelementptr inbounds nuw i8, ptr %this, i64 120 - %85 = load ptr, ptr %TextureMatrix13.i.3, align 8, !tbaa !118 - %tobool14.not.i.3 = icmp eq ptr %85, null + %86 = load ptr, ptr %TextureMatrix13.i.3, align 8, !tbaa !118 + %tobool14.not.i.3 = icmp eq ptr %86, null br i1 %tobool.not.i.3, label %if.else12.i.3, label %if.then3.i.3 if.then3.i.3: ; preds = %if.then304.3 br i1 %tobool14.not.i.3, label %delete.notnull.i.3, label %if.then6.i.3 if.then6.i.3: ; preds = %if.then3.i.3 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %84, ptr noundef nonnull align 4 dereferenceable(64) %85, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %85, ptr noundef nonnull align 4 dereferenceable(64) %86, i64 64, i1 false), !tbaa.struct !237 br label %if.end21.i.3 delete.notnull.i.3: ; preds = %if.then3.i.3 - tail call void @_ZdlPv(ptr noundef nonnull %84) #26 + tail call void @_ZdlPv(ptr noundef nonnull %85) #26 store ptr null, ptr %TextureMatrix.i.3, align 8, !tbaa !118 br label %if.end21.i.3 @@ -12359,7 +12358,7 @@ if.else12.i.3: ; preds = %if.then304.3 if.then15.i.3: ; preds = %if.else12.i.3 %call.i.3 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #28 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.3, ptr noundef nonnull align 4 dereferenceable(64) %85, i64 64, i1 false), !tbaa.struct !237 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call.i.3, ptr noundef nonnull align 4 dereferenceable(64) %86, i64 64, i1 false), !tbaa.struct !237 store ptr %call.i.3, ptr %TextureMatrix.i.3, align 8, !tbaa !118 br label %if.end21.i.3 @@ -12375,36 +12374,36 @@ if.end21.i.3: ; preds = %if.else18.i.3, %if. %bf.set.i.3 = or disjoint i16 %bf.clear24.i.3, %bf.cast.i.3 store i16 %bf.set.i.3, ptr %TextureWrapU193.3, align 8 %bf.load25.i.3 = load i16, ptr %TextureWrapU.3, align 8 - %86 = and i16 %bf.load25.i.3, 240 + %87 = and i16 %bf.load25.i.3, 240 %bf.clear31.i.3 = and i16 %bf.set.i.3, -241 - %bf.set32.i.3 = or disjoint i16 %bf.clear31.i.3, %86 + %bf.set32.i.3 = or disjoint i16 %bf.clear31.i.3, %87 store i16 %bf.set32.i.3, ptr %TextureWrapU193.3, align 8 %bf.load33.i.3 = load i16, ptr %TextureWrapU.3, align 8 %bf.cast36.i.3 = and i16 %bf.load33.i.3, 3840 %bf.clear41.i.3 = and i16 %bf.set32.i.3, -3841 %bf.set42.i.3 = or disjoint i16 %bf.clear41.i.3, %bf.cast36.i.3 store i16 %bf.set42.i.3, ptr %TextureWrapU193.3, align 8 - %87 = load <2 x i32>, ptr %MinFilter.3, align 4, !tbaa !102 - store <2 x i32> %87, ptr %MinFilter99.3, align 4, !tbaa !102 - %88 = load i8, ptr %AnisotropicFilter.3, align 4, !tbaa !116 - store i8 %88, ptr %AnisotropicFilter145.3, align 4, !tbaa !116 + %88 = load <2 x i32>, ptr %MinFilter.3, align 4, !tbaa !102 + store <2 x i32> %88, ptr %MinFilter99.3, align 4, !tbaa !102 + %89 = load i8, ptr %AnisotropicFilter.3, align 4, !tbaa !116 + store i8 %89, ptr %AnisotropicFilter145.3, align 4, !tbaa !116 %LODBias.i.3 = getelementptr inbounds nuw i8, ptr %this, i64 117 - %89 = load i8, ptr %LODBias.i.3, align 1, !tbaa !117 + %90 = load i8, ptr %LODBias.i.3, align 1, !tbaa !117 %LODBias46.i.3 = getelementptr inbounds nuw i8, ptr %material, i64 117 - store i8 %89, ptr %LODBias46.i.3, align 1, !tbaa !117 + store i8 %90, ptr %LODBias46.i.3, align 1, !tbaa !117 br label %if.end330 if.else.3: ; preds = %for.inc327.2 %arrayidx314.3 = getelementptr inbounds nuw i8, ptr %this, i64 195 - %90 = load i8, ptr %arrayidx314.3, align 1, !tbaa !166, !range !131, !noundef !132 - %tobool315.not.3 = icmp eq i8 %90, 0 + %91 = load i8, ptr %arrayidx314.3, align 1, !tbaa !166, !range !131, !noundef !132 + %tobool315.not.3 = icmp eq i8 %91, 0 br i1 %tobool315.not.3, label %if.end330, label %if.then316.3 if.then316.3: ; preds = %if.else.3 %arrayidx320.3 = getelementptr inbounds nuw i8, ptr %this, i64 96 - %91 = load ptr, ptr %arrayidx320.3, align 8, !tbaa !110 + %92 = load ptr, ptr %arrayidx320.3, align 8, !tbaa !110 %arrayidx323.3 = getelementptr inbounds nuw i8, ptr %material, i64 96 - store ptr %91, ptr %arrayidx323.3, align 8, !tbaa !110 + store ptr %92, ptr %arrayidx323.3, align 8, !tbaa !110 br label %if.end330 if.end330: ; preds = %if.then316.3, %if.else.3, %if.end21.i.3, %for.cond297.preheader, %entry diff --git a/bench/minetest/optimized/camera.cpp.ll b/bench/minetest/optimized/camera.cpp.ll index 080c952cd2..90c336b560 100644 --- a/bench/minetest/optimized/camera.cpp.ll +++ b/bench/minetest/optimized/camera.cpp.ll @@ -4246,8 +4246,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4265,23 +4264,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !297 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !295 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !295 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !295 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !295 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4289,31 +4288,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !295 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !295 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !295 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !295 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !295 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !295 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !295 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !295 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !295 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !295 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !295 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !295 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !295 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !295 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !295 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !295 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont, label %for.body.i, !llvm.loop !302 @@ -4322,24 +4321,24 @@ invoke.cont: ; preds = %for.body.i, %for.bo ret void lpad: ; preds = %if.end.i - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup - %21 = load ptr, ptr %this, align 8, !tbaa !289 - %cmp.i.i.i = icmp eq ptr %21, %0 + %20 = load ptr, ptr %this, align 8, !tbaa !289 + %cmp.i.i.i = icmp eq ptr %20, %0 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i: ; preds = %lpad - %22 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !292 - %cmp3.i.i.i = icmp ult i64 %22, 4 + %21 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !292 + %cmp3.i.i.i = icmp ult i64 %21, 4 tail call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit if.then.i.i: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef %21) #27 + tail call void @_ZdlPv(ptr noundef %20) #27 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.then.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i - resume { ptr, i32 } %20 + resume { ptr, i32 } %19 } ; Function Attrs: mustprogress uwtable diff --git a/bench/minetest/optimized/content_nodemeta.cpp.ll b/bench/minetest/optimized/content_nodemeta.cpp.ll index 416e119a6d..05fc08c943 100644 --- a/bench/minetest/optimized/content_nodemeta.cpp.ll +++ b/bench/minetest/optimized/content_nodemeta.cpp.ll @@ -441,16 +441,15 @@ for.body: ; preds = %cleanup, %for.body. %rev.i.i.i105 = call noundef i16 @llvm.bswap.i16(i16 %val.0.copyload.i.i104) call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %buf.i102) #23 %div1891 = lshr i16 %rev.i.i.i105, 8 - %sub = and i16 %rev.i.i.i105, 255 - %div2792 = lshr i16 %sub, 4 - %mul33 = and i16 %rev.i.i.i105, 240 - %sub35 = sub nsw i16 %sub, %mul33 + %sub = lshr i16 %rev.i.i.i105, 4 + %div2792 = and i16 %sub, 15 + %sub35 = and i16 %rev.i.i.i105, 15 %p.sroa.14.0.insert.ext177 = zext nneg i16 %div1891 to i48 %p.sroa.14.0.insert.shift178 = shl nuw nsw i48 %p.sroa.14.0.insert.ext177, 32 %p.sroa.10.0.insert.ext168 = zext nneg i16 %div2792 to i48 %p.sroa.10.0.insert.shift169 = shl nuw nsw i48 %p.sroa.10.0.insert.ext168, 16 %p.sroa.10.0.insert.insert171 = or disjoint i48 %p.sroa.10.0.insert.shift169, %p.sroa.14.0.insert.shift178 - %p.sroa.0.0.insert.ext161 = zext i16 %sub35 to i48 + %p.sroa.0.0.insert.ext161 = zext nneg i16 %sub35 to i48 %p.sroa.0.0.insert.insert163 = or disjoint i48 %p.sroa.10.0.insert.insert171, %p.sroa.0.0.insert.ext161 %call41 = call noundef ptr @_ZN16NodeMetadataList3getEN3irr4core8vector3dIsEE(ptr noundef nonnull align 8 dereferenceable(56) %meta, i48 %p.sroa.0.0.insert.insert163) %cmp42.not = icmp eq ptr %call41, null diff --git a/bench/minetest/optimized/guiButton.cpp.ll b/bench/minetest/optimized/guiButton.cpp.ll index fb92cfa1ef..c641c4ad1c 100644 --- a/bench/minetest/optimized/guiButton.cpp.ll +++ b/bench/minetest/optimized/guiButton.cpp.ll @@ -3745,8 +3745,7 @@ for.body.lr.ph.i.i: ; preds = %if.end.i.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3764,23 +3763,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %12, label %middle.block, label %vector.body, !llvm.loop !112 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %13 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %13, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i.prol - %14 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i.i.prol - store i32 %14, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !110 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.i.prol + %13 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %5, i64 %indvars.iv.i.i.prol + store i32 %13, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !110 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3788,31 +3787,31 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %15 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %16 = icmp ugt i64 %15, -4 - br i1 %16, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i + %14 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %15 = icmp ugt i64 %14, -4 + br i1 %15, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.i - %17 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !110 + %16 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !110 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.i.i - store i32 %17, ptr %arrayidx.i.i.i, align 4, !tbaa !110 + store i32 %16, ptr %arrayidx.i.i.i, align 4, !tbaa !110 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i - %18 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !110 + %17 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !110 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i.i - store i32 %18, ptr %arrayidx.i.i.i.1, align 4, !tbaa !110 + store i32 %17, ptr %arrayidx.i.i.i.1, align 4, !tbaa !110 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.1 - %19 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !110 + %18 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !110 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i.i.1 - store i32 %19, ptr %arrayidx.i.i.i.2, align 4, !tbaa !110 + store i32 %18, ptr %arrayidx.i.i.i.2, align 4, !tbaa !110 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.i.2 - %20 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !110 + %19 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !110 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.i.i.2 - store i32 %20, ptr %arrayidx.i.i.i.3, align 4, !tbaa !110 + store i32 %19, ptr %arrayidx.i.i.i.3, align 4, !tbaa !110 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr3gui11IGUIElement7setTextEPKw.exit, label %for.body.i.i, !llvm.loop !117 @@ -3873,8 +3872,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3892,23 +3890,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !118 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !110 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !110 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3916,31 +3914,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !110 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !110 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !110 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !110 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !110 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !110 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !110 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !110 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !110 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !110 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !110 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !110 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !110 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !110 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !110 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !110 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !120 @@ -6487,8 +6485,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6506,23 +6503,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !160 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !110 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !110 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !110 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6530,31 +6527,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !110 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !110 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !110 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !110 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !110 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !110 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !110 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !110 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !110 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !110 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !110 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !110 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !110 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !110 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !110 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !110 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !162 @@ -6799,7 +6796,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -6839,10 +6836,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !73 %13 = load ptr, ptr %Name, align 8, !tbaa !122 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !73 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/guiChatConsole.cpp.ll b/bench/minetest/optimized/guiChatConsole.cpp.ll index 655616c796..a722e22ab8 100644 --- a/bench/minetest/optimized/guiChatConsole.cpp.ll +++ b/bench/minetest/optimized/guiChatConsole.cpp.ll @@ -3179,8 +3179,7 @@ for.body.lr.ph.i.i: ; preds = %.noexc.i br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %call.i.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %call.i.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3198,23 +3197,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %26, label %middle.block, label %vector.body, !llvm.loop !133 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %27 = sub i64 %call.i.i.i, %indvars.iv.i.i.ph - %xtraiter = and i64 %27, 3 + %xtraiter = and i64 %call.i.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %call44, i64 %indvars.iv.i.i.prol - %28 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %19, i64 %indvars.iv.i.i.prol - store i32 %28, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !94 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %call44, i64 %indvars.iv.i.i.prol + %27 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i.i.prol + store i32 %27, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !94 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3222,75 +3221,75 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %29 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %30 = icmp ugt i64 %29, -4 - br i1 %30, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i + %28 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %29 = icmp ugt i64 %28, -4 + br i1 %29, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %call44, i64 %indvars.iv.i.i - %31 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !94 + %30 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !94 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %19, i64 %indvars.iv.i.i - store i32 %31, ptr %arrayidx.i.i.i, align 4, !tbaa !94 + store i32 %30, ptr %arrayidx.i.i.i, align 4, !tbaa !94 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %call44, i64 %indvars.iv.next.i.i - %32 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !94 + %31 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !94 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv.next.i.i - store i32 %32, ptr %arrayidx.i.i.i.1, align 4, !tbaa !94 + store i32 %31, ptr %arrayidx.i.i.i.1, align 4, !tbaa !94 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %call44, i64 %indvars.iv.next.i.i.1 - %33 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !94 + %32 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !94 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv.next.i.i.1 - store i32 %33, ptr %arrayidx.i.i.i.2, align 4, !tbaa !94 + store i32 %32, ptr %arrayidx.i.i.i.2, align 4, !tbaa !94 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %call44, i64 %indvars.iv.next.i.i.2 - %34 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !94 + %33 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !94 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv.next.i.i.2 - store i32 %34, ptr %arrayidx.i.i.i.3, align 4, !tbaa !94 + store i32 %33, ptr %arrayidx.i.i.i.3, align 4, !tbaa !94 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %_ZN3irr4core6stringIwEC2IwEEPKT_.exit, label %for.body.i.i, !llvm.loop !138 lpad.i: ; preds = %if.end.i.i - %35 = landingpad { ptr, i32 } + %34 = landingpad { ptr, i32 } cleanup - %36 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 - %cmp.i.i.i.i = icmp eq ptr %36, %2 + %35 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 + %cmp.i.i.i.i = icmp eq ptr %35, %2 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %lpad.i - %37 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 - %cmp3.i.i.i.i = icmp ult i64 %37, 4 + %36 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 + %cmp3.i.i.i.i = icmp ult i64 %36, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %common.resume if.then.i.i.i: ; preds = %lpad.i - call void @_ZdlPv(ptr noundef %36) #24 + call void @_ZdlPv(ptr noundef %35) #24 br label %common.resume common.resume: ; preds = %_ZN3irr4core6stringIwED2Ev.exit84, %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i - %common.resume.op = phi { ptr, i32 } [ %41, %_ZN3irr4core6stringIwED2Ev.exit84 ], [ %35, %if.then.i.i.i ], [ %35, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ] + %common.resume.op = phi { ptr, i32 } [ %40, %_ZN3irr4core6stringIwED2Ev.exit84 ], [ %34, %if.then.i.i.i ], [ %34, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ] resume { ptr, i32 } %common.resume.op _ZN3irr4core6stringIwEC2IwEEPKT_.exit: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %.noexc.i, %_ZN3irr4core6stringIwE5clearEb.exit.i.i %vtable47 = load ptr, ptr %16, align 8, !tbaa !14 - %38 = load ptr, ptr %vtable47, align 8 - invoke void %38(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(16) %destrect, i32 -1, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull %AbsoluteClippingRect45) + %37 = load ptr, ptr %vtable47, align 8 + invoke void %37(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull align 4 dereferenceable(16) %destrect, i32 -1, i1 noundef zeroext false, i1 noundef zeroext false, ptr noundef nonnull %AbsoluteClippingRect45) to label %invoke.cont49 unwind label %lpad invoke.cont49: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - %39 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 - %cmp.i.i.i.i72 = icmp eq ptr %39, %2 + %38 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 + %cmp.i.i.i.i72 = icmp eq ptr %38, %2 br i1 %cmp.i.i.i.i72, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i75, label %if.then.i.i.i73 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i75: ; preds = %invoke.cont49 - %40 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 - %cmp3.i.i.i.i77 = icmp ult i64 %40, 4 + %39 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 + %cmp3.i.i.i.i77 = icmp ult i64 %39, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i77) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i73: ; preds = %invoke.cont49 - call void @_ZdlPv(ptr noundef %39) #24 + call void @_ZdlPv(ptr noundef %38) #24 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i73, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i75 @@ -3298,20 +3297,20 @@ _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i73, %_ br label %if.end50 lpad: ; preds = %_ZN3irr4core6stringIwEC2IwEEPKT_.exit - %41 = landingpad { ptr, i32 } + %40 = landingpad { ptr, i32 } cleanup - %42 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 - %cmp.i.i.i.i78 = icmp eq ptr %42, %2 + %41 = load ptr, ptr %ref.tmp, align 8, !tbaa !104 + %cmp.i.i.i.i78 = icmp eq ptr %41, %2 br i1 %cmp.i.i.i.i78, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i81, label %if.then.i.i.i79 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i81: ; preds = %lpad - %43 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 - %cmp3.i.i.i.i83 = icmp ult i64 %43, 4 + %42 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !93 + %cmp3.i.i.i.i83 = icmp ult i64 %42, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i83) br label %_ZN3irr4core6stringIwED2Ev.exit84 if.then.i.i.i79: ; preds = %lpad - call void @_ZdlPv(ptr noundef %42) #24 + call void @_ZdlPv(ptr noundef %41) #24 br label %_ZN3irr4core6stringIwED2Ev.exit84 _ZN3irr4core6stringIwED2Ev.exit84: ; preds = %if.then.i.i.i79, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i81 @@ -4240,8 +4239,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -4259,23 +4257,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !171 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -4283,31 +4281,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !94 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !94 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !94 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !94 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !94 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !94 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !94 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !94 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont, label %for.body.i, !llvm.loop !173 @@ -4316,24 +4314,24 @@ invoke.cont: ; preds = %for.body.i, %for.bo ret void lpad: ; preds = %if.end.i - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup - %21 = load ptr, ptr %this, align 8, !tbaa !104 - %cmp.i.i.i = icmp eq ptr %21, %0 + %20 = load ptr, ptr %this, align 8, !tbaa !104 + %cmp.i.i.i = icmp eq ptr %20, %0 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i: ; preds = %lpad - %22 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !93 - %cmp3.i.i.i = icmp ult i64 %22, 4 + %21 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !93 + %cmp3.i.i.i = icmp ult i64 %21, 4 tail call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit if.then.i.i: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef %21) #24 + tail call void @_ZdlPv(ptr noundef %20) #24 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.then.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i - resume { ptr, i32 } %20 + resume { ptr, i32 } %19 } declare void @_ZNK10ChatPrompt17getVisiblePortionB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string.5") align 8, ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #0 @@ -6827,8 +6825,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6846,23 +6843,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !222 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6870,31 +6867,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !94 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !94 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !94 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !94 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !94 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !94 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !94 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !94 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !224 @@ -6963,8 +6960,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6982,23 +6978,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !225 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !94 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !94 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -7006,31 +7002,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !94 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !94 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !94 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !94 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !94 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !94 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !94 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !94 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !94 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !94 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !94 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !94 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !227 @@ -7275,7 +7271,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -7315,10 +7311,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !58 %13 = load ptr, ptr %Name, align 8, !tbaa !4 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !58 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/guiEditBox.cpp.ll b/bench/minetest/optimized/guiEditBox.cpp.ll index 6f5a43d023..ecffc4a894 100644 --- a/bench/minetest/optimized/guiEditBox.cpp.ll +++ b/bench/minetest/optimized/guiEditBox.cpp.ll @@ -657,8 +657,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -676,23 +675,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !70 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -700,42 +699,42 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !69 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !69 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !69 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !69 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !69 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !69 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !69 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !69 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !75 _ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %if.end.i, %_ZN3irr4core6stringIwE5clearEb.exit.i %m_cursor_pos = getelementptr inbounds nuw i8, ptr %this, i64 396 - %19 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 + %18 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 %_M_string_length.i.i = getelementptr inbounds nuw i8, ptr %this, i64 176 - %20 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55 - %conv.i7 = trunc i64 %20 to i32 - %cmp = icmp ugt i32 %19, %conv.i7 + %19 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55 + %conv.i7 = trunc i64 %19 to i32 + %cmp = icmp ugt i32 %18, %conv.i7 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit @@ -747,8 +746,8 @@ if.end: ; preds = %if.then, %_ZN3irr4c store i32 0, ptr %m_hscroll_pos, align 8, !tbaa !77 %vtable = load ptr, ptr %this, align 8, !tbaa !4 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 512 - %21 = load ptr, ptr %vfn, align 8 - call void %21(ptr noundef nonnull align 8 dereferenceable(496) %this) + %20 = load ptr, ptr %vfn, align 8 + call void %20(ptr noundef nonnull align 8 dereferenceable(496) %this) ret void } @@ -2339,8 +2338,7 @@ for.body.lr.ph.i.i.i: ; preds = %for.cond.preheader. br i1 %or.cond160, label %for.body.i.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i.i - %n.mod.vf = and i64 %60, 7 - %n.vec = sub nuw nsw i64 %conv.i.i.i, %n.mod.vf + %n.vec = and i64 %60, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -2358,23 +2356,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %69, label %middle.block, label %vector.body, !llvm.loop !122 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %60, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont.i.i, label %for.body.i.i.i.preheader for.body.i.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i.i %indvars.iv.i.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i.i ], [ %n.vec, %middle.block ] - %70 = sub i64 %60, %indvars.iv.i.i.i.ph - %xtraiter = and i64 %70, 3 + %xtraiter = and i64 %60, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.i.prol.loopexit, label %for.body.i.i.i.prol for.body.i.i.i.prol: ; preds = %for.body.i.i.i.preheader, %for.body.i.i.i.prol %indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %for.body.i.i.i.prol ], [ %indvars.iv.i.i.i.ph, %for.body.i.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.i.prol ], [ 0, %for.body.i.i.i.preheader ] - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.i.i.i.prol - %71 = load i32, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !69 - %arrayidx.i.i.i.i.prol = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.i.i.i.prol - store i32 %71, ptr %arrayidx.i.i.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %58, i64 %indvars.iv.i.i.i.prol + %70 = load i32, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.i.i.prol = getelementptr inbounds nuw i32, ptr %62, i64 %indvars.iv.i.i.i.prol + store i32 %70, ptr %arrayidx.i.i.i.i.prol, align 4, !tbaa !69 %indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -2382,86 +2380,86 @@ for.body.i.i.i.prol: ; preds = %for.body.i.i.i.preh for.body.i.i.i.prol.loopexit: ; preds = %for.body.i.i.i.prol, %for.body.i.i.i.preheader %indvars.iv.i.i.i.unr = phi i64 [ %indvars.iv.i.i.i.ph, %for.body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %for.body.i.i.i.prol ] - %72 = sub nsw i64 %indvars.iv.i.i.i.ph, %conv.i.i.i - %73 = icmp ugt i64 %72, -4 - br i1 %73, label %invoke.cont.i.i, label %for.body.i.i.i + %71 = sub nsw i64 %indvars.iv.i.i.i.ph, %conv.i.i.i + %72 = icmp ugt i64 %71, -4 + br i1 %72, label %invoke.cont.i.i, label %for.body.i.i.i lpad.i.i.i: ; preds = %if.end.i.i.i - %74 = landingpad { ptr, i32 } + %73 = landingpad { ptr, i32 } cleanup - %75 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54, !alias.scope !121 - %cmp.i.i.i.i.i.i = icmp eq ptr %75, %61 + %74 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54, !alias.scope !121 + %cmp.i.i.i.i.i.i = icmp eq ptr %74, %61 br i1 %cmp.i.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i, label %if.then.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i: ; preds = %lpad.i.i.i - %76 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !55, !alias.scope !121 - %cmp3.i.i.i.i.i.i = icmp ult i64 %76, 4 + %75 = load i64, ptr %_M_string_length.i.i.i.i.i.i, align 8, !tbaa !55, !alias.scope !121 + %cmp3.i.i.i.i.i.i = icmp ult i64 %75, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i) br label %lpad.body.i.i if.then.i.i.i.i.i: ; preds = %lpad.i.i.i - call void @_ZdlPv(ptr noundef %75) #27 + call void @_ZdlPv(ptr noundef %74) #27 br label %lpad.body.i.i for.body.i.i.i: ; preds = %for.body.i.i.i.prol.loopexit, %for.body.i.i.i %indvars.iv.i.i.i = phi i64 [ %indvars.iv.next.i.i.i.3, %for.body.i.i.i ], [ %indvars.iv.i.i.i.unr, %for.body.i.i.i.prol.loopexit ] %arrayidx.i.i.i = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.i.i.i - %77 = load i32, ptr %arrayidx.i.i.i, align 4, !tbaa !69 + %76 = load i32, ptr %arrayidx.i.i.i, align 4, !tbaa !69 %arrayidx.i.i.i.i = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.i.i.i - store i32 %77, ptr %arrayidx.i.i.i.i, align 4, !tbaa !69 + store i32 %76, ptr %arrayidx.i.i.i.i, align 4, !tbaa !69 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i.i - %78 = load i32, ptr %arrayidx.i.i.i.1, align 4, !tbaa !69 + %77 = load i32, ptr %arrayidx.i.i.i.1, align 4, !tbaa !69 %arrayidx.i.i.i.i.1 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i.i - store i32 %78, ptr %arrayidx.i.i.i.i.1, align 4, !tbaa !69 + store i32 %77, ptr %arrayidx.i.i.i.i.1, align 4, !tbaa !69 %indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.i.i.i, 2 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i.i.1 - %79 = load i32, ptr %arrayidx.i.i.i.2, align 4, !tbaa !69 + %78 = load i32, ptr %arrayidx.i.i.i.2, align 4, !tbaa !69 %arrayidx.i.i.i.i.2 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i.i.1 - store i32 %79, ptr %arrayidx.i.i.i.i.2, align 4, !tbaa !69 + store i32 %78, ptr %arrayidx.i.i.i.i.2, align 4, !tbaa !69 %indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.i.i.i, 3 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i.i.2 - %80 = load i32, ptr %arrayidx.i.i.i.3, align 4, !tbaa !69 + %79 = load i32, ptr %arrayidx.i.i.i.3, align 4, !tbaa !69 %arrayidx.i.i.i.i.3 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i.i.2 - store i32 %80, ptr %arrayidx.i.i.i.i.3, align 4, !tbaa !69 + store i32 %79, ptr %arrayidx.i.i.i.i.3, align 4, !tbaa !69 %indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.i.i.i, 4 %exitcond.not.i.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.i.3, %conv.i.i.i br i1 %exitcond.not.i.i.i.3, label %invoke.cont.i.i, label %for.body.i.i.i, !llvm.loop !124 invoke.cont.i.i: ; preds = %for.body.i.i.i, %for.body.i.i.i.prol.loopexit, %middle.block, %for.cond.preheader.i.i.i, %if.end5.i - %81 = load ptr, ptr %str.i.i, align 8, !tbaa !54, !noalias !121 - %82 = getelementptr inbounds nuw i8, ptr %str.i.i, i64 16 - %cmp.i.i.i.i.i = icmp eq ptr %81, %82 + %80 = load ptr, ptr %str.i.i, align 8, !tbaa !54, !noalias !121 + %81 = getelementptr inbounds nuw i8, ptr %str.i.i, i64 16 + %cmp.i.i.i.i.i = icmp eq ptr %80, %81 br i1 %cmp.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i, label %if.then.i.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i: ; preds = %invoke.cont.i.i - %83 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !55, !noalias !121 - %cmp3.i.i.i.i.i = icmp ult i64 %83, 4 + %82 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !55, !noalias !121 + %cmp3.i.i.i.i.i = icmp ult i64 %82, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) br label %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit.i if.then.i.i.i.i: ; preds = %invoke.cont.i.i - call void @_ZdlPv(ptr noundef %81) #27 + call void @_ZdlPv(ptr noundef %80) #27 br label %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit.i lpad.body.i.i: ; preds = %if.then.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i.i - %84 = load ptr, ptr %str.i.i, align 8, !tbaa !54, !noalias !121 - %85 = getelementptr inbounds nuw i8, ptr %str.i.i, i64 16 - %cmp.i.i.i3.i.i = icmp eq ptr %84, %85 + %83 = load ptr, ptr %str.i.i, align 8, !tbaa !54, !noalias !121 + %84 = getelementptr inbounds nuw i8, ptr %str.i.i, i64 16 + %cmp.i.i.i3.i.i = icmp eq ptr %83, %84 br i1 %cmp.i.i.i3.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i.i, label %if.then.i.i4.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i.i: ; preds = %lpad.body.i.i - %86 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !55, !noalias !121 - %cmp3.i.i.i7.i.i = icmp ult i64 %86, 4 + %85 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !55, !noalias !121 + %cmp3.i.i.i7.i.i = icmp ult i64 %85, 4 call void @llvm.assume(i1 %cmp3.i.i.i7.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i if.then.i.i4.i.i: ; preds = %lpad.body.i.i - call void @_ZdlPv(ptr noundef %84) #27 + call void @_ZdlPv(ptr noundef %83) #27 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i common.resume: ; preds = %_ZN3irr4core6stringIwED2Ev.exit154, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i - %common.resume.op = phi { ptr, i32 } [ %74, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i ], [ %91, %_ZN3irr4core6stringIwED2Ev.exit154 ] + %common.resume.op = phi { ptr, i32 } [ %73, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i ], [ %90, %_ZN3irr4core6stringIwED2Ev.exit154 ] resume { ptr, i32 } %common.resume.op _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i.i: ; preds = %if.then.i.i4.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i.i @@ -2475,25 +2473,25 @@ _Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit.i: ; preds = "_ZZN10GUIEditBox12processMouseERKN3irr6SEventEENK3$_0clEv.exit": ; preds = %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit.i, %if.then4.i, %if.then.i %vtable111 = load ptr, ptr %this, align 8, !tbaa !4 %vfn112 = getelementptr inbounds nuw i8, ptr %vtable111, i64 544 - %87 = load ptr, ptr %vfn112, align 8 - invoke void %87(ptr noundef nonnull align 8 dereferenceable(496) %this, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp109) + %86 = load ptr, ptr %vfn112, align 8 + invoke void %86(ptr noundef nonnull align 8 dereferenceable(496) %this, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp109) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %"_ZZN10GUIEditBox12processMouseERKN3irr6SEventEENK3$_0clEv.exit" - %88 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54 - %89 = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 16 - %cmp.i.i.i.i = icmp eq ptr %88, %89 + %87 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54 + %88 = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 16 + %cmp.i.i.i.i = icmp eq ptr %87, %88 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %invoke.cont %_M_string_length.i.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 8 - %90 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !55 - %cmp3.i.i.i.i = icmp ult i64 %90, 4 + %89 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !55 + %cmp3.i.i.i.i = icmp ult i64 %89, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i: ; preds = %invoke.cont - call void @_ZdlPv(ptr noundef %88) #27 + call void @_ZdlPv(ptr noundef %87) #27 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i @@ -2501,22 +2499,22 @@ _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN br label %return lpad: ; preds = %"_ZZN10GUIEditBox12processMouseERKN3irr6SEventEENK3$_0clEv.exit" - %91 = landingpad { ptr, i32 } + %90 = landingpad { ptr, i32 } cleanup - %92 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54 - %93 = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 16 - %cmp.i.i.i.i149 = icmp eq ptr %92, %93 + %91 = load ptr, ptr %ref.tmp109, align 8, !tbaa !54 + %92 = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 16 + %cmp.i.i.i.i149 = icmp eq ptr %91, %92 br i1 %cmp.i.i.i.i149, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i151, label %if.then.i.i.i150 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i151: ; preds = %lpad %_M_string_length.i.i.i.i152 = getelementptr inbounds nuw i8, ptr %ref.tmp109, i64 8 - %94 = load i64, ptr %_M_string_length.i.i.i.i152, align 8, !tbaa !55 - %cmp3.i.i.i.i153 = icmp ult i64 %94, 4 + %93 = load i64, ptr %_M_string_length.i.i.i.i152, align 8, !tbaa !55 + %cmp3.i.i.i.i153 = icmp ult i64 %93, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i153) br label %_ZN3irr4core6stringIwED2Ev.exit154 if.then.i.i.i150: ; preds = %lpad - call void @_ZdlPv(ptr noundef %92) #27 + call void @_ZdlPv(ptr noundef %91) #27 br label %_ZN3irr4core6stringIwED2Ev.exit154 _ZN3irr4core6stringIwED2Ev.exit154: ; preds = %if.then.i.i.i150, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i151 @@ -2997,8 +2995,7 @@ for.body.lr.ph.i.i: ; preds = %for.cond.preheader. br i1 %or.cond, label %for.body.i.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i - %n.mod.vf = and i64 %8, 7 - %n.vec = sub nuw nsw i64 %conv.i.i, %n.mod.vf + %n.vec = and i64 %8, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -3016,23 +3013,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %17, label %middle.block, label %vector.body, !llvm.loop !131 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %8, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont.i, label %for.body.i.i.preheader for.body.i.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i %indvars.iv.i.i.ph = phi i64 [ 0, %for.body.lr.ph.i.i ], [ %n.vec, %middle.block ] - %18 = sub i64 %8, %indvars.iv.i.i.ph - %xtraiter = and i64 %18, 3 + %xtraiter = and i64 %8, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i.prol.loopexit, label %for.body.i.i.prol for.body.i.i.prol: ; preds = %for.body.i.i.preheader, %for.body.i.i.prol %indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ], [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i.prol ], [ 0, %for.body.i.i.preheader ] - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.i.i.prol - %19 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 - %arrayidx.i.i.i.prol = getelementptr inbounds i32, ptr %10, i64 %indvars.iv.i.i.prol - store i32 %19, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %6, i64 %indvars.iv.i.i.prol + %18 = load i32, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.i.prol = getelementptr inbounds nuw i32, ptr %10, i64 %indvars.iv.i.i.prol + store i32 %18, ptr %arrayidx.i.i.i.prol, align 4, !tbaa !69 %indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3040,86 +3037,86 @@ for.body.i.i.prol: ; preds = %for.body.i.i.prehea for.body.i.i.prol.loopexit: ; preds = %for.body.i.i.prol, %for.body.i.i.preheader %indvars.iv.i.i.unr = phi i64 [ %indvars.iv.i.i.ph, %for.body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %for.body.i.i.prol ] - %20 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i - %21 = icmp ugt i64 %20, -4 - br i1 %21, label %invoke.cont.i, label %for.body.i.i + %19 = sub nsw i64 %indvars.iv.i.i.ph, %conv.i.i + %20 = icmp ugt i64 %19, -4 + br i1 %20, label %invoke.cont.i, label %for.body.i.i lpad.i.i: ; preds = %if.end.i.i - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } cleanup - %23 = load ptr, ptr %inserted_text, align 8, !tbaa !54, !alias.scope !128 - %cmp.i.i.i.i.i = icmp eq ptr %23, %9 + %22 = load ptr, ptr %inserted_text, align 8, !tbaa !54, !alias.scope !128 + %cmp.i.i.i.i.i = icmp eq ptr %22, %9 br i1 %cmp.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i, label %if.then.i.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i: ; preds = %lpad.i.i - %24 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55, !alias.scope !128 - %cmp3.i.i.i.i.i = icmp ult i64 %24, 4 + %23 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55, !alias.scope !128 + %cmp3.i.i.i.i.i = icmp ult i64 %23, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) br label %lpad.body.i if.then.i.i.i.i: ; preds = %lpad.i.i - call void @_ZdlPv(ptr noundef %23) #27 + call void @_ZdlPv(ptr noundef %22) #27 br label %lpad.body.i for.body.i.i: ; preds = %for.body.i.i.prol.loopexit, %for.body.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i.3, %for.body.i.i ], [ %indvars.iv.i.i.unr, %for.body.i.i.prol.loopexit ] %arrayidx.i.i = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.i.i - %25 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !69 + %24 = load i32, ptr %arrayidx.i.i, align 4, !tbaa !69 %arrayidx.i.i.i = getelementptr inbounds i32, ptr %10, i64 %indvars.iv.i.i - store i32 %25, ptr %arrayidx.i.i.i, align 4, !tbaa !69 + store i32 %24, ptr %arrayidx.i.i.i, align 4, !tbaa !69 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.next.i.i - %26 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !69 + %25 = load i32, ptr %arrayidx.i.i.1, align 4, !tbaa !69 %arrayidx.i.i.i.1 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv.next.i.i - store i32 %26, ptr %arrayidx.i.i.i.1, align 4, !tbaa !69 + store i32 %25, ptr %arrayidx.i.i.i.1, align 4, !tbaa !69 %indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.i.i, 2 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.next.i.i.1 - %27 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !69 + %26 = load i32, ptr %arrayidx.i.i.2, align 4, !tbaa !69 %arrayidx.i.i.i.2 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv.next.i.i.1 - store i32 %27, ptr %arrayidx.i.i.i.2, align 4, !tbaa !69 + store i32 %26, ptr %arrayidx.i.i.i.2, align 4, !tbaa !69 %indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.i.i, 3 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv.next.i.i.2 - %28 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !69 + %27 = load i32, ptr %arrayidx.i.i.3, align 4, !tbaa !69 %arrayidx.i.i.i.3 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv.next.i.i.2 - store i32 %28, ptr %arrayidx.i.i.i.3, align 4, !tbaa !69 + store i32 %27, ptr %arrayidx.i.i.i.3, align 4, !tbaa !69 %indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.i.i, 4 %exitcond.not.i.i.3 = icmp eq i64 %indvars.iv.next.i.i.3, %conv.i.i br i1 %exitcond.not.i.i.3, label %invoke.cont.i, label %for.body.i.i, !llvm.loop !133 invoke.cont.i: ; preds = %for.body.i.i, %for.body.i.i.prol.loopexit, %middle.block, %for.cond.preheader.i.i, %if.then21 - %29 = load ptr, ptr %str.i, align 8, !tbaa !54, !noalias !128 - %30 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 - %cmp.i.i.i.i = icmp eq ptr %29, %30 + %28 = load ptr, ptr %str.i, align 8, !tbaa !54, !noalias !128 + %29 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 + %cmp.i.i.i.i = icmp eq ptr %28, %29 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %invoke.cont.i - %31 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55, !noalias !128 - %cmp3.i.i.i.i = icmp ult i64 %31, 4 + %30 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55, !noalias !128 + %cmp3.i.i.i.i = icmp ult i64 %30, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit if.then.i.i.i: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef %29) #27 + call void @_ZdlPv(ptr noundef %28) #27 br label %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit lpad.body.i: ; preds = %if.then.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i - %32 = load ptr, ptr %str.i, align 8, !tbaa !54, !noalias !128 - %33 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 - %cmp.i.i.i3.i = icmp eq ptr %32, %33 + %31 = load ptr, ptr %str.i, align 8, !tbaa !54, !noalias !128 + %32 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 + %cmp.i.i.i3.i = icmp eq ptr %31, %32 br i1 %cmp.i.i.i3.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i, label %if.then.i.i4.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i: ; preds = %lpad.body.i - %34 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55, !noalias !128 - %cmp3.i.i.i7.i = icmp ult i64 %34, 4 + %33 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !55, !noalias !128 + %cmp3.i.i.i7.i = icmp ult i64 %33, 4 call void @llvm.assume(i1 %cmp3.i.i.i7.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i if.then.i.i4.i: ; preds = %lpad.body.i - call void @_ZdlPv(ptr noundef %32) #27 + call void @_ZdlPv(ptr noundef %31) #27 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i common.resume: ; preds = %_ZN3irr4core6stringIwED2Ev.exit222, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i - %common.resume.op = phi { ptr, i32 } [ %22, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i ], [ %.pn114.pn.pn, %_ZN3irr4core6stringIwED2Ev.exit222 ] + %common.resume.op = phi { ptr, i32 } [ %21, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i ], [ %.pn114.pn.pn, %_ZN3irr4core6stringIwED2Ev.exit222 ] resume { ptr, i32 } %common.resume.op _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i: ; preds = %if.then.i.i4.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i @@ -3128,25 +3125,25 @@ _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i: ; preds = %if _Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %str.i) #26, !noalias !128 - %35 = load i32, ptr %m_mark_begin, align 4, !tbaa !91 - %36 = load i32, ptr %m_mark_end, align 8, !tbaa !92 - %cmp24 = icmp eq i32 %35, %36 + %34 = load i32, ptr %m_mark_begin, align 4, !tbaa !91 + %35 = load i32, ptr %m_mark_end, align 8, !tbaa !92 + %cmp24 = icmp eq i32 %34, %35 %Text = getelementptr inbounds nuw i8, ptr %this, i64 168 br i1 %cmp24, label %if.then25, label %if.else if.then25: ; preds = %_Z15utf8_to_stringwSt17basic_string_viewIcSt11char_traitsIcEE.exit call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %s) #26 %m_cursor_pos = getelementptr inbounds nuw i8, ptr %this, i64 396 - %37 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 - invoke void @_ZNK3irr4core6stringIwE9subStringEjib(ptr dead_on_unwind nonnull writable sret(%"class.irr::core::string") align 8 %s, ptr noundef nonnull align 8 dereferenceable(32) %Text, i32 noundef 0, i32 noundef %37, i1 noundef zeroext false) + %36 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 + invoke void @_ZNK3irr4core6stringIwE9subStringEjib(ptr dead_on_unwind nonnull writable sret(%"class.irr::core::string") align 8 %s, ptr noundef nonnull align 8 dereferenceable(32) %Text, i32 noundef 0, i32 noundef %36, i1 noundef zeroext false) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %if.then25 - %38 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %37 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 %_M_string_length.i.i.i.i.i118 = getelementptr inbounds nuw i8, ptr %s, i64 8 - %39 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 - %sub3.i.i.i.i = sub i64 1152921504606846975, %39 - %cmp.i.i.i.i119 = icmp ult i64 %sub3.i.i.i.i, %38 + %38 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 + %sub3.i.i.i.i = sub i64 1152921504606846975, %38 + %cmp.i.i.i.i119 = icmp ult i64 %sub3.i.i.i.i, %37 br i1 %cmp.i.i.i.i119, label %if.then.i.i.i.i120, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i if.then.i.i.i.i120: ; preds = %invoke.cont @@ -3157,26 +3154,26 @@ if.then.i.i.i.i120: ; preds = %invoke.cont unreachable _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i: ; preds = %invoke.cont - %40 = load ptr, ptr %inserted_text, align 8, !tbaa !54 - %call.i.i.i121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %40, i64 noundef %38) + %39 = load ptr, ptr %inserted_text, align 8, !tbaa !54 + %call.i.i.i121 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %39, i64 noundef %37) to label %invoke.cont27 unwind label %lpad26 invoke.cont27: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp) #26 - %41 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 + %40 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 %_M_string_length.i.i122 = getelementptr inbounds nuw i8, ptr %this, i64 176 - %42 = load i64, ptr %_M_string_length.i.i122, align 8, !tbaa !55 - %conv.i = trunc i64 %42 to i32 - %sub = sub i32 %conv.i, %41 - invoke void @_ZNK3irr4core6stringIwE9subStringEjib(ptr dead_on_unwind nonnull writable sret(%"class.irr::core::string") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %Text, i32 noundef %41, i32 noundef %sub, i1 noundef zeroext false) + %41 = load i64, ptr %_M_string_length.i.i122, align 8, !tbaa !55 + %conv.i = trunc i64 %41 to i32 + %sub = sub i32 %conv.i, %40 + invoke void @_ZNK3irr4core6stringIwE9subStringEjib(ptr dead_on_unwind nonnull writable sret(%"class.irr::core::string") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(32) %Text, i32 noundef %40, i32 noundef %sub, i1 noundef zeroext false) to label %invoke.cont36 unwind label %lpad32 invoke.cont36: ; preds = %invoke.cont27 %_M_string_length.i.i.i123 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 8 - %43 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 - %44 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 - %sub3.i.i.i.i125 = sub i64 1152921504606846975, %44 - %cmp.i.i.i.i126 = icmp ult i64 %sub3.i.i.i.i125, %43 + %42 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 + %43 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 + %sub3.i.i.i.i125 = sub i64 1152921504606846975, %43 + %cmp.i.i.i.i126 = icmp ult i64 %sub3.i.i.i.i125, %42 br i1 %cmp.i.i.i.i126, label %if.then.i.i.i.i128, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i127 if.then.i.i.i.i128: ; preds = %invoke.cont36 @@ -3187,34 +3184,34 @@ if.then.i.i.i.i128: ; preds = %invoke.cont36 unreachable _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i127: ; preds = %invoke.cont36 - %45 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 - %call.i.i.i130 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %45, i64 noundef %43) + %44 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 + %call.i.i.i130 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s, ptr noundef %44, i64 noundef %42) to label %invoke.cont38 unwind label %lpad37 invoke.cont38: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i127 - %46 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 - %47 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i.i132 = icmp eq ptr %46, %47 + %45 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 + %46 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i.i132 = icmp eq ptr %45, %46 br i1 %cmp.i.i.i.i132, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i134, label %if.then.i.i.i133 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i134: ; preds = %invoke.cont38 - %48 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 - %cmp3.i.i.i.i135 = icmp ult i64 %48, 4 + %47 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 + %cmp3.i.i.i.i135 = icmp ult i64 %47, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i135) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i133: ; preds = %invoke.cont38 - call void @_ZdlPv(ptr noundef %46) #27 + call void @_ZdlPv(ptr noundef %45) #27 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i133, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i134 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #26 %m_max = getelementptr inbounds nuw i8, ptr %this, i64 408 - %49 = load i32, ptr %m_max, align 8, !tbaa !78 - %tobool40.not = icmp ne i32 %49, 0 - %50 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8 - %conv.i137 = trunc i64 %50 to i32 - %cmp45.not = icmp ult i32 %49, %conv.i137 + %48 = load i32, ptr %m_max, align 8, !tbaa !78 + %tobool40.not = icmp ne i32 %48, 0 + %49 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8 + %conv.i137 = trunc i64 %49 to i32 + %cmp45.not = icmp ult i32 %48, %conv.i137 %or.cond223 = select i1 %tobool40.not, i1 %cmp45.not, i1 false br i1 %or.cond223, label %if.end53, label %if.then46 @@ -3227,65 +3224,65 @@ if.end.i: ; preds = %if.then46 to label %invoke.cont48 unwind label %lpad26 invoke.cont48: ; preds = %if.end.i, %if.then46 - %51 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 - %conv.i140 = trunc i64 %51 to i32 - %52 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 - %add = add i32 %52, %conv.i140 + %50 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %conv.i140 = trunc i64 %50 to i32 + %51 = load i32, ptr %m_cursor_pos, align 4, !tbaa !76 + %add = add i32 %51, %conv.i140 store i32 %add, ptr %m_cursor_pos, align 4, !tbaa !76 br label %if.end53 lpad: ; preds = %if.then25 - %53 = landingpad { ptr, i32 } + %52 = landingpad { ptr, i32 } cleanup br label %ehcleanup55 lpad26: ; preds = %if.end.i, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i, %if.then.i.i.i.i120 - %54 = landingpad { ptr, i32 } + %53 = landingpad { ptr, i32 } cleanup br label %ehcleanup54 lpad32: ; preds = %invoke.cont27 - %55 = landingpad { ptr, i32 } + %54 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad37: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i127, %if.then.i.i.i.i128 - %56 = landingpad { ptr, i32 } + %55 = landingpad { ptr, i32 } cleanup - %57 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 - %58 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 - %cmp.i.i.i.i141 = icmp eq ptr %57, %58 + %56 = load ptr, ptr %ref.tmp, align 8, !tbaa !54 + %57 = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 + %cmp.i.i.i.i141 = icmp eq ptr %56, %57 br i1 %cmp.i.i.i.i141, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i143, label %if.then.i.i.i142 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i143: ; preds = %lpad37 - %59 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 - %cmp3.i.i.i.i145 = icmp ult i64 %59, 4 + %58 = load i64, ptr %_M_string_length.i.i.i123, align 8, !tbaa !55 + %cmp3.i.i.i.i145 = icmp ult i64 %58, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i145) br label %ehcleanup if.then.i.i.i142: ; preds = %lpad37 - call void @_ZdlPv(ptr noundef %57) #27 + call void @_ZdlPv(ptr noundef %56) #27 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i.i142, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i143, %lpad32 - %.pn112 = phi { ptr, i32 } [ %55, %lpad32 ], [ %56, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i143 ], [ %56, %if.then.i.i.i142 ] + %.pn112 = phi { ptr, i32 } [ %54, %lpad32 ], [ %55, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i143 ], [ %55, %if.then.i.i.i142 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp) #26 br label %ehcleanup54 if.end53: ; preds = %invoke.cont48, %_ZN3irr4core6stringIwED2Ev.exit - %60 = load ptr, ptr %s, align 8, !tbaa !54 - %61 = getelementptr inbounds nuw i8, ptr %s, i64 16 - %cmp.i.i.i.i147 = icmp eq ptr %60, %61 + %59 = load ptr, ptr %s, align 8, !tbaa !54 + %60 = getelementptr inbounds nuw i8, ptr %s, i64 16 + %cmp.i.i.i.i147 = icmp eq ptr %59, %60 br i1 %cmp.i.i.i.i147, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i149, label %if.then.i.i.i148 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i149: ; preds = %if.end53 - %62 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 - %cmp3.i.i.i.i151 = icmp ult i64 %62, 4 + %61 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 + %cmp3.i.i.i.i151 = icmp ult i64 %61, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i151) br label %_ZN3irr4core6stringIwED2Ev.exit152 if.then.i.i.i148: ; preds = %if.end53 - call void @_ZdlPv(ptr noundef %60) #27 + call void @_ZdlPv(ptr noundef %59) #27 br label %_ZN3irr4core6stringIwED2Ev.exit152 _ZN3irr4core6stringIwED2Ev.exit152: ; preds = %if.then.i.i.i148, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i149 @@ -3293,24 +3290,24 @@ _ZN3irr4core6stringIwED2Ev.exit152: ; preds = %if.then.i.i.i148, % br label %if.end94 ehcleanup54: ; preds = %ehcleanup, %lpad26 - %.pn114 = phi { ptr, i32 } [ %54, %lpad26 ], [ %.pn112, %ehcleanup ] - %63 = load ptr, ptr %s, align 8, !tbaa !54 - %64 = getelementptr inbounds nuw i8, ptr %s, i64 16 - %cmp.i.i.i.i153 = icmp eq ptr %63, %64 + %.pn114 = phi { ptr, i32 } [ %53, %lpad26 ], [ %.pn112, %ehcleanup ] + %62 = load ptr, ptr %s, align 8, !tbaa !54 + %63 = getelementptr inbounds nuw i8, ptr %s, i64 16 + %cmp.i.i.i.i153 = icmp eq ptr %62, %63 br i1 %cmp.i.i.i.i153, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i155, label %if.then.i.i.i154 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i155: ; preds = %ehcleanup54 - %65 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 - %cmp3.i.i.i.i157 = icmp ult i64 %65, 4 + %64 = load i64, ptr %_M_string_length.i.i.i.i.i118, align 8, !tbaa !55 + %cmp3.i.i.i.i157 = icmp ult i64 %64, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i157) br label %ehcleanup55 if.then.i.i.i154: ; preds = %ehcleanup54 - call void @_ZdlPv(ptr noundef %63) #27 + call void @_ZdlPv(ptr noundef %62) #27 br label %ehcleanup55 ehcleanup55: ; preds = %if.then.i.i.i154, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i155, %lpad - %.pn114.pn = phi { ptr, i32 } [ %53, %lpad ], [ %.pn114, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i155 ], [ %.pn114, %if.then.i.i.i154 ] + %.pn114.pn = phi { ptr, i32 } [ %52, %lpad ], [ %.pn114, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i155 ], [ %.pn114, %if.then.i.i.i154 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %s) #26 br label %ehcleanup95 @@ -3320,11 +3317,11 @@ if.else: ; preds = %_Z15utf8_to_stringw to label %invoke.cont59 unwind label %lpad58 invoke.cont59: ; preds = %if.else - %66 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %65 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 %_M_string_length.i.i.i.i.i160 = getelementptr inbounds nuw i8, ptr %s56, i64 8 - %67 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 - %sub3.i.i.i.i161 = sub i64 1152921504606846975, %67 - %cmp.i.i.i.i162 = icmp ult i64 %sub3.i.i.i.i161, %66 + %66 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 + %sub3.i.i.i.i161 = sub i64 1152921504606846975, %66 + %cmp.i.i.i.i162 = icmp ult i64 %sub3.i.i.i.i161, %65 br i1 %cmp.i.i.i.i162, label %if.then.i.i.i.i164, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i163 if.then.i.i.i.i164: ; preds = %invoke.cont59 @@ -3335,25 +3332,25 @@ if.then.i.i.i.i164: ; preds = %invoke.cont59 unreachable _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i163: ; preds = %invoke.cont59 - %68 = load ptr, ptr %inserted_text, align 8, !tbaa !54 - %call.i.i.i166 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s56, ptr noundef %68, i64 noundef %66) + %67 = load ptr, ptr %inserted_text, align 8, !tbaa !54 + %call.i.i.i166 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s56, ptr noundef %67, i64 noundef %65) to label %invoke.cont61 unwind label %lpad60 invoke.cont61: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i163 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp63) #26 %_M_string_length.i.i168 = getelementptr inbounds nuw i8, ptr %this, i64 176 - %69 = load i64, ptr %_M_string_length.i.i168, align 8, !tbaa !55 - %conv.i169 = trunc i64 %69 to i32 + %68 = load i64, ptr %_M_string_length.i.i168, align 8, !tbaa !55 + %conv.i169 = trunc i64 %68 to i32 %sub69 = sub i32 %conv.i169, %cond15 invoke void @_ZNK3irr4core6stringIwE9subStringEjib(ptr dead_on_unwind nonnull writable sret(%"class.irr::core::string") align 8 %ref.tmp63, ptr noundef nonnull align 8 dereferenceable(32) %Text, i32 noundef %cond15, i32 noundef %sub69, i1 noundef zeroext false) to label %invoke.cont70 unwind label %lpad66 invoke.cont70: ; preds = %invoke.cont61 %_M_string_length.i.i.i170 = getelementptr inbounds nuw i8, ptr %ref.tmp63, i64 8 - %70 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 - %71 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 - %sub3.i.i.i.i172 = sub i64 1152921504606846975, %71 - %cmp.i.i.i.i173 = icmp ult i64 %sub3.i.i.i.i172, %70 + %69 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 + %70 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 + %sub3.i.i.i.i172 = sub i64 1152921504606846975, %70 + %cmp.i.i.i.i173 = icmp ult i64 %sub3.i.i.i.i172, %69 br i1 %cmp.i.i.i.i173, label %if.then.i.i.i.i175, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i174 if.then.i.i.i.i175: ; preds = %invoke.cont70 @@ -3364,34 +3361,34 @@ if.then.i.i.i.i175: ; preds = %invoke.cont70 unreachable _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i174: ; preds = %invoke.cont70 - %72 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 - %call.i.i.i177 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s56, ptr noundef %72, i64 noundef %70) + %71 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 + %call.i.i.i177 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %s56, ptr noundef %71, i64 noundef %69) to label %invoke.cont72 unwind label %lpad71 invoke.cont72: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i174 - %73 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 - %74 = getelementptr inbounds nuw i8, ptr %ref.tmp63, i64 16 - %cmp.i.i.i.i179 = icmp eq ptr %73, %74 + %72 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 + %73 = getelementptr inbounds nuw i8, ptr %ref.tmp63, i64 16 + %cmp.i.i.i.i179 = icmp eq ptr %72, %73 br i1 %cmp.i.i.i.i179, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i181, label %if.then.i.i.i180 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i181: ; preds = %invoke.cont72 - %75 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 - %cmp3.i.i.i.i183 = icmp ult i64 %75, 4 + %74 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 + %cmp3.i.i.i.i183 = icmp ult i64 %74, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i183) br label %_ZN3irr4core6stringIwED2Ev.exit184 if.then.i.i.i180: ; preds = %invoke.cont72 - call void @_ZdlPv(ptr noundef %73) #27 + call void @_ZdlPv(ptr noundef %72) #27 br label %_ZN3irr4core6stringIwED2Ev.exit184 _ZN3irr4core6stringIwED2Ev.exit184: ; preds = %if.then.i.i.i180, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i181 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp63) #26 %m_max76 = getelementptr inbounds nuw i8, ptr %this, i64 408 - %76 = load i32, ptr %m_max76, align 8, !tbaa !78 - %tobool77.not = icmp ne i32 %76, 0 - %77 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8 - %conv.i186 = trunc i64 %77 to i32 - %cmp82.not = icmp ult i32 %76, %conv.i186 + %75 = load i32, ptr %m_max76, align 8, !tbaa !78 + %tobool77.not = icmp ne i32 %75, 0 + %76 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8 + %conv.i186 = trunc i64 %76 to i32 + %cmp82.not = icmp ult i32 %75, %conv.i186 %or.cond224 = select i1 %tobool77.not, i1 %cmp82.not, i1 false br i1 %or.cond224, label %if.end91, label %if.then83 @@ -3404,65 +3401,65 @@ if.end.i188: ; preds = %if.then83 to label %invoke.cont85 unwind label %lpad60 invoke.cont85: ; preds = %if.end.i188, %if.then83 - %78 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 - %conv.i192 = trunc i64 %78 to i32 + %77 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %conv.i192 = trunc i64 %77 to i32 %add89 = add i32 %., %conv.i192 %m_cursor_pos90 = getelementptr inbounds nuw i8, ptr %this, i64 396 store i32 %add89, ptr %m_cursor_pos90, align 4, !tbaa !76 br label %if.end91 lpad58: ; preds = %if.else - %79 = landingpad { ptr, i32 } + %78 = landingpad { ptr, i32 } cleanup br label %ehcleanup93 lpad60: ; preds = %if.end.i188, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i163, %if.then.i.i.i.i164 - %80 = landingpad { ptr, i32 } + %79 = landingpad { ptr, i32 } cleanup br label %ehcleanup92 lpad66: ; preds = %invoke.cont61 - %81 = landingpad { ptr, i32 } + %80 = landingpad { ptr, i32 } cleanup br label %ehcleanup75 lpad71: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i174, %if.then.i.i.i.i175 - %82 = landingpad { ptr, i32 } + %81 = landingpad { ptr, i32 } cleanup - %83 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 - %84 = getelementptr inbounds nuw i8, ptr %ref.tmp63, i64 16 - %cmp.i.i.i.i193 = icmp eq ptr %83, %84 + %82 = load ptr, ptr %ref.tmp63, align 8, !tbaa !54 + %83 = getelementptr inbounds nuw i8, ptr %ref.tmp63, i64 16 + %cmp.i.i.i.i193 = icmp eq ptr %82, %83 br i1 %cmp.i.i.i.i193, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i195, label %if.then.i.i.i194 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i195: ; preds = %lpad71 - %85 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 - %cmp3.i.i.i.i197 = icmp ult i64 %85, 4 + %84 = load i64, ptr %_M_string_length.i.i.i170, align 8, !tbaa !55 + %cmp3.i.i.i.i197 = icmp ult i64 %84, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i197) br label %ehcleanup75 if.then.i.i.i194: ; preds = %lpad71 - call void @_ZdlPv(ptr noundef %83) #27 + call void @_ZdlPv(ptr noundef %82) #27 br label %ehcleanup75 ehcleanup75: ; preds = %if.then.i.i.i194, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i195, %lpad66 - %.pn = phi { ptr, i32 } [ %81, %lpad66 ], [ %82, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i195 ], [ %82, %if.then.i.i.i194 ] + %.pn = phi { ptr, i32 } [ %80, %lpad66 ], [ %81, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i195 ], [ %81, %if.then.i.i.i194 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp63) #26 br label %ehcleanup92 if.end91: ; preds = %invoke.cont85, %_ZN3irr4core6stringIwED2Ev.exit184 - %86 = load ptr, ptr %s56, align 8, !tbaa !54 - %87 = getelementptr inbounds nuw i8, ptr %s56, i64 16 - %cmp.i.i.i.i199 = icmp eq ptr %86, %87 + %85 = load ptr, ptr %s56, align 8, !tbaa !54 + %86 = getelementptr inbounds nuw i8, ptr %s56, i64 16 + %cmp.i.i.i.i199 = icmp eq ptr %85, %86 br i1 %cmp.i.i.i.i199, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i201, label %if.then.i.i.i200 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i201: ; preds = %if.end91 - %88 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 - %cmp3.i.i.i.i203 = icmp ult i64 %88, 4 + %87 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 + %cmp3.i.i.i.i203 = icmp ult i64 %87, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i203) br label %_ZN3irr4core6stringIwED2Ev.exit204 if.then.i.i.i200: ; preds = %if.end91 - call void @_ZdlPv(ptr noundef %86) #27 + call void @_ZdlPv(ptr noundef %85) #27 br label %_ZN3irr4core6stringIwED2Ev.exit204 _ZN3irr4core6stringIwED2Ev.exit204: ; preds = %if.then.i.i.i200, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i201 @@ -3470,40 +3467,40 @@ _ZN3irr4core6stringIwED2Ev.exit204: ; preds = %if.then.i.i.i200, % br label %if.end94 ehcleanup92: ; preds = %ehcleanup75, %lpad60 - %.pn109 = phi { ptr, i32 } [ %80, %lpad60 ], [ %.pn, %ehcleanup75 ] - %89 = load ptr, ptr %s56, align 8, !tbaa !54 - %90 = getelementptr inbounds nuw i8, ptr %s56, i64 16 - %cmp.i.i.i.i205 = icmp eq ptr %89, %90 + %.pn109 = phi { ptr, i32 } [ %79, %lpad60 ], [ %.pn, %ehcleanup75 ] + %88 = load ptr, ptr %s56, align 8, !tbaa !54 + %89 = getelementptr inbounds nuw i8, ptr %s56, i64 16 + %cmp.i.i.i.i205 = icmp eq ptr %88, %89 br i1 %cmp.i.i.i.i205, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i207, label %if.then.i.i.i206 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i207: ; preds = %ehcleanup92 - %91 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 - %cmp3.i.i.i.i209 = icmp ult i64 %91, 4 + %90 = load i64, ptr %_M_string_length.i.i.i.i.i160, align 8, !tbaa !55 + %cmp3.i.i.i.i209 = icmp ult i64 %90, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i209) br label %ehcleanup93 if.then.i.i.i206: ; preds = %ehcleanup92 - call void @_ZdlPv(ptr noundef %89) #27 + call void @_ZdlPv(ptr noundef %88) #27 br label %ehcleanup93 ehcleanup93: ; preds = %if.then.i.i.i206, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i207, %lpad58 - %.pn109.pn = phi { ptr, i32 } [ %79, %lpad58 ], [ %.pn109, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i207 ], [ %.pn109, %if.then.i.i.i206 ] + %.pn109.pn = phi { ptr, i32 } [ %78, %lpad58 ], [ %.pn109, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i207 ], [ %.pn109, %if.then.i.i.i206 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %s56) #26 br label %ehcleanup95 if.end94: ; preds = %_ZN3irr4core6stringIwED2Ev.exit204, %_ZN3irr4core6stringIwED2Ev.exit152 - %92 = load ptr, ptr %inserted_text, align 8, !tbaa !54 - %cmp.i.i.i.i211 = icmp eq ptr %92, %9 + %91 = load ptr, ptr %inserted_text, align 8, !tbaa !54 + %cmp.i.i.i.i211 = icmp eq ptr %91, %9 br i1 %cmp.i.i.i.i211, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i213, label %if.then.i.i.i212 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i213: ; preds = %if.end94 - %93 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 - %cmp3.i.i.i.i215 = icmp ult i64 %93, 4 + %92 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %cmp3.i.i.i.i215 = icmp ult i64 %92, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i215) br label %_ZN3irr4core6stringIwED2Ev.exit216 if.then.i.i.i212: ; preds = %if.end94 - call void @_ZdlPv(ptr noundef %92) #27 + call void @_ZdlPv(ptr noundef %91) #27 br label %_ZN3irr4core6stringIwED2Ev.exit216 _ZN3irr4core6stringIwED2Ev.exit216: ; preds = %if.then.i.i.i212, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i213 @@ -3512,18 +3509,18 @@ _ZN3irr4core6stringIwED2Ev.exit216: ; preds = %if.then.i.i.i212, % ehcleanup95: ; preds = %ehcleanup93, %ehcleanup55 %.pn114.pn.pn = phi { ptr, i32 } [ %.pn114.pn, %ehcleanup55 ], [ %.pn109.pn, %ehcleanup93 ] - %94 = load ptr, ptr %inserted_text, align 8, !tbaa !54 - %cmp.i.i.i.i217 = icmp eq ptr %94, %9 + %93 = load ptr, ptr %inserted_text, align 8, !tbaa !54 + %cmp.i.i.i.i217 = icmp eq ptr %93, %9 br i1 %cmp.i.i.i.i217, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i219, label %if.then.i.i.i218 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i219: ; preds = %ehcleanup95 - %95 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 - %cmp3.i.i.i.i221 = icmp ult i64 %95, 4 + %94 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !55 + %cmp3.i.i.i.i221 = icmp ult i64 %94, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i221) br label %_ZN3irr4core6stringIwED2Ev.exit222 if.then.i.i.i218: ; preds = %ehcleanup95 - call void @_ZdlPv(ptr noundef %94) #27 + call void @_ZdlPv(ptr noundef %93) #27 br label %_ZN3irr4core6stringIwED2Ev.exit222 _ZN3irr4core6stringIwED2Ev.exit222: ; preds = %if.then.i.i.i218, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i219 @@ -6077,8 +6074,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6096,23 +6092,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !166 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6120,31 +6116,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !69 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !69 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !69 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !69 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !69 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !69 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !69 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !69 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !168 @@ -6213,8 +6209,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6232,23 +6227,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !169 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !69 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !69 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6256,31 +6251,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !69 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !69 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !69 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !69 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !69 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !69 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !69 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !69 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !69 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !69 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !69 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !69 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !171 @@ -6525,7 +6520,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -6565,10 +6560,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !83 %13 = load ptr, ptr %Name, align 8, !tbaa !98 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !83 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/guiEditBoxWithScrollbar.cpp.ll b/bench/minetest/optimized/guiEditBoxWithScrollbar.cpp.ll index 40e39534bc..7bb89438d6 100644 --- a/bench/minetest/optimized/guiEditBoxWithScrollbar.cpp.ll +++ b/bench/minetest/optimized/guiEditBoxWithScrollbar.cpp.ll @@ -384,8 +384,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -403,23 +402,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %22, label %middle.block, label %vector.body, !llvm.loop !68 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont6, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %23 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %23, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %24 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %15, i64 %indvars.iv.i.prol - store i32 %24, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %23 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %15, i64 %indvars.iv.i.prol + store i32 %23, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -427,39 +426,39 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %25 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %26 = icmp ugt i64 %25, -4 - br i1 %26, label %invoke.cont6, label %for.body.i + %24 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %25 = icmp ugt i64 %24, -4 + br i1 %25, label %invoke.cont6, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %27 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 + %26 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 %arrayidx.i.i = getelementptr inbounds i32, ptr %15, i64 %indvars.iv.i - store i32 %27, ptr %arrayidx.i.i, align 4, !tbaa !66 + store i32 %26, ptr %arrayidx.i.i, align 4, !tbaa !66 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %28 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 + %27 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv.next.i - store i32 %28, ptr %arrayidx.i.i.1, align 4, !tbaa !66 + store i32 %27, ptr %arrayidx.i.i.1, align 4, !tbaa !66 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %29 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 + %28 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv.next.i.1 - store i32 %29, ptr %arrayidx.i.i.2, align 4, !tbaa !66 + store i32 %28, ptr %arrayidx.i.i.2, align 4, !tbaa !66 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %30 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 + %29 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv.next.i.2 - store i32 %30, ptr %arrayidx.i.i.3, align 4, !tbaa !66 + store i32 %29, ptr %arrayidx.i.i.3, align 4, !tbaa !66 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont6, label %for.body.i, !llvm.loop !74 invoke.cont6: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %.noexc, %_ZN3irr4core6stringIwE5clearEb.exit.i %Environment = getelementptr inbounds nuw i8, ptr %this, i64 296 - %31 = load ptr, ptr %Environment, align 8, !tbaa !75 - %tobool7.not = icmp eq ptr %31, null + %30 = load ptr, ptr %Environment, align 8, !tbaa !75 + %tobool7.not = icmp eq ptr %30, null br i1 %tobool7.not, label %invoke.cont6.if.end_crit_edge, label %if.then invoke.cont6.if.end_crit_edge: ; preds = %invoke.cont6 @@ -468,10 +467,10 @@ invoke.cont6.if.end_crit_edge: ; preds = %invoke.cont6 br label %if.end if.then: ; preds = %invoke.cont6 - %vtable9 = load ptr, ptr %31, align 8, !tbaa !4 + %vtable9 = load ptr, ptr %30, align 8, !tbaa !4 %vfn = getelementptr inbounds nuw i8, ptr %vtable9, i64 64 - %32 = load ptr, ptr %vfn, align 8 - %call11 = invoke noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(8) %31) + %31 = load ptr, ptr %vfn, align 8 + %call11 = invoke noundef ptr %31(ptr noundef nonnull align 8 dereferenceable(8) %30) to label %invoke.cont10 unwind label %lpad invoke.cont10: ; preds = %if.then @@ -480,24 +479,24 @@ invoke.cont10: ; preds = %if.then br label %if.end lpad: ; preds = %invoke.cont34, %invoke.cont31, %invoke.cont28, %if.end32.i, %call20.i.noexc, %call13.i.noexc, %call8.i.noexc, %if.then5.i, %if.end.i47, %if.then25, %if.then6.i, %if.then, %if.end.i - %33 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } cleanup call void @_ZN10GUIEditBoxD2Ev(ptr noundef nonnull align 8 dereferenceable(496) %this, ptr noundef nonnull %0) #25 - resume { ptr, i32 } %33 + resume { ptr, i32 } %32 if.end: ; preds = %invoke.cont10, %invoke.cont6.if.end_crit_edge - %34 = phi ptr [ %.pre, %invoke.cont6.if.end_crit_edge ], [ %call11, %invoke.cont10 ] - %tobool13.not = icmp eq ptr %34, null + %33 = phi ptr [ %.pre, %invoke.cont6.if.end_crit_edge ], [ %call11, %invoke.cont10 ] + %tobool13.not = icmp eq ptr %33, null br i1 %tobool13.not, label %if.end21, label %if.then14 if.then14: ; preds = %if.end - %vtable16 = load ptr, ptr %34, align 8, !tbaa !4 + %vtable16 = load ptr, ptr %33, align 8, !tbaa !4 %vbase.offset.ptr17 = getelementptr i8, ptr %vtable16, i64 -24 %vbase.offset18 = load i64, ptr %vbase.offset.ptr17, align 8 - %add.ptr19 = getelementptr inbounds i8, ptr %34, i64 %vbase.offset18 + %add.ptr19 = getelementptr inbounds i8, ptr %33, i64 %vbase.offset18 %ReferenceCounter.i = getelementptr inbounds nuw i8, ptr %add.ptr19, i64 16 - %35 = load i32, ptr %ReferenceCounter.i, align 8, !tbaa !77 - %inc.i = add nsw i32 %35, 1 + %34 = load i32, ptr %ReferenceCounter.i, align 8, !tbaa !77 + %inc.i = add nsw i32 %34, 1 store i32 %inc.i, ptr %ReferenceCounter.i, align 8, !tbaa !77 br label %if.end21 @@ -509,22 +508,22 @@ if.end21: ; preds = %if.then14, %if.end br label %land.rhs.i.i land.rhs.i.i: ; preds = %while.body.i.i, %if.end21 - %ret.06.i.i = phi ptr [ %this, %if.end21 ], [ %37, %while.body.i.i ] + %ret.06.i.i = phi ptr [ %this, %if.end21 ], [ %36, %while.body.i.i ] %IsTabGroup.i.i.i = getelementptr inbounds nuw i8, ptr %ret.06.i.i, i64 276 - %36 = load i8, ptr %IsTabGroup.i.i.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.i.not.i.i = icmp eq i8 %36, 0 + %35 = load i8, ptr %IsTabGroup.i.i.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.i.not.i.i = icmp eq i8 %35, 0 br i1 %tobool.i.not.i.i, label %while.body.i.i, label %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i while.body.i.i: ; preds = %land.rhs.i.i %Parent.i.i.i = getelementptr inbounds nuw i8, ptr %ret.06.i.i, i64 32 - %37 = load ptr, ptr %Parent.i.i.i, align 8, !tbaa !84 - %tobool.not.i.i = icmp eq ptr %37, null + %36 = load ptr, ptr %Parent.i.i.i, align 8, !tbaa !84 + %tobool.not.i.i = icmp eq ptr %36, null br i1 %tobool.not.i.i, label %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i, label %land.rhs.i.i, !llvm.loop !85 _ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i: ; preds = %land.rhs.i.i %IsTabGroup.i = getelementptr inbounds nuw i8, ptr %this, i64 276 - %38 = load i8, ptr %IsTabGroup.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.not.not.i = icmp eq i8 %38, 0 + %37 = load i8, ptr %IsTabGroup.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.not.not.i = icmp eq i8 %37, 0 br i1 %tobool.not.not.i, label %if.then6.i, label %while.cond.i.preheader while.cond.i.preheader: ; preds = %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i, %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i @@ -533,8 +532,8 @@ while.cond.i.preheader: ; preds = %_ZN3irr3gui11IGUIEl _ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i: ; preds = %while.body.i.i %IsTabGroup36.i = getelementptr inbounds nuw i8, ptr %this, i64 276 - %39 = load i8, ptr %IsTabGroup36.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.not37.not.i = icmp eq i8 %39, 0 + %38 = load i8, ptr %IsTabGroup36.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.not37.not.i = icmp eq i8 %38, 0 br i1 %tobool.not37.not.i, label %while.end.thread41.i, label %while.cond.i.preheader while.end.thread41.i: ; preds = %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i @@ -543,7 +542,7 @@ while.end.thread41.i: ; preds = %_ZN3irr3gui11IGUIEl br label %invoke.cont23 while.cond.i: ; preds = %while.cond.i.preheader, %land.rhs.i - %el.0.i = phi ptr [ %40, %land.rhs.i ], [ %el.0.i.ph, %while.cond.i.preheader ] + %el.0.i = phi ptr [ %39, %land.rhs.i ], [ %el.0.i.ph, %while.cond.i.preheader ] %tobool2.not.i = icmp eq ptr %el.0.i, null br i1 %tobool2.not.i, label %while.end.thread32.i, label %land.rhs.i @@ -554,8 +553,8 @@ while.end.thread32.i: ; preds = %while.cond.i land.rhs.i: ; preds = %while.cond.i %Parent.i = getelementptr inbounds nuw i8, ptr %el.0.i, i64 32 - %40 = load ptr, ptr %Parent.i, align 8, !tbaa !84 - %tobool3.not.i = icmp eq ptr %40, null + %39 = load ptr, ptr %Parent.i, align 8, !tbaa !84 + %tobool3.not.i = icmp eq ptr %39, null br i1 %tobool3.not.i, label %if.then6.i, label %while.cond.i, !llvm.loop !86 if.then6.i: ; preds = %land.rhs.i, %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i @@ -569,14 +568,14 @@ if.then6.i: ; preds = %land.rhs.i, %_ZN3ir to label %call9.i.noexc unwind label %lpad call9.i.noexc: ; preds = %if.then6.i - %41 = load ptr, ptr %first.i, align 8, !tbaa !87 - %tobool10.not.i = icmp eq ptr %41, null + %40 = load ptr, ptr %first.i, align 8, !tbaa !87 + %tobool10.not.i = icmp eq ptr %40, null br i1 %tobool10.not.i, label %invoke.cont23, label %if.then11.i if.then11.i: ; preds = %call9.i.noexc - %TabOrder.i.i = getelementptr inbounds nuw i8, ptr %41, i64 272 - %42 = load i32, ptr %TabOrder.i.i, align 8, !tbaa !80 - %add.i = add nsw i32 %42, 1 + %TabOrder.i.i = getelementptr inbounds nuw i8, ptr %40, i64 272 + %41 = load i32, ptr %TabOrder.i.i, align 8, !tbaa !80 + %add.i = add nsw i32 %41, 1 store i32 %add.i, ptr %TabOrder.i, align 8, !tbaa !80 br label %invoke.cont23 @@ -592,20 +591,20 @@ if.then25: ; preds = %invoke.cont23 if.end27: ; preds = %if.then25, %invoke.cont23 %AbsoluteRect.i = getelementptr inbounds nuw i8, ptr %this, i64 64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %m_frame_rect.i, ptr noundef nonnull align 8 dereferenceable(16) %AbsoluteRect.i, i64 16, i1 false), !tbaa.struct !57 - %43 = load ptr, ptr %Environment, align 8, !tbaa !75 - %tobool.not.i46 = icmp eq ptr %43, null + %42 = load ptr, ptr %Environment, align 8, !tbaa !75 + %tobool.not.i46 = icmp eq ptr %42, null br i1 %tobool.not.i46, label %if.end32.i, label %if.end.i47 if.end.i47: ; preds = %if.end27 - %vtable.i = load ptr, ptr %43, align 8, !tbaa !4 + %vtable.i = load ptr, ptr %42, align 8, !tbaa !4 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 96 - %44 = load ptr, ptr %vfn.i, align 8 - %call.i50 = invoke noundef ptr %44(ptr noundef nonnull align 8 dereferenceable(8) %43) + %43 = load ptr, ptr %vfn.i, align 8 + %call.i50 = invoke noundef ptr %43(ptr noundef nonnull align 8 dereferenceable(8) %42) to label %call.i.noexc unwind label %lpad call.i.noexc: ; preds = %if.end.i47 - %45 = load i8, ptr %m_border.i, align 4, !tbaa !47, !range !82, !noundef !83 - %tobool3.i = icmp ne i8 %45, 0 + %44 = load i8, ptr %m_border.i, align 4, !tbaa !47, !range !82, !noundef !83 + %tobool3.i = icmp ne i8 %44, 0 %tobool4.i = icmp ne ptr %call.i50, null %or.cond.i = and i1 %tobool4.i, %tobool3.i br i1 %or.cond.i, label %if.then5.i, label %if.end32.i @@ -613,50 +612,50 @@ call.i.noexc: ; preds = %if.end.i47 if.then5.i: ; preds = %call.i.noexc %vtable6.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn7.i = getelementptr inbounds nuw i8, ptr %vtable6.i, i64 16 - %46 = load ptr, ptr %vfn7.i, align 8 - %call8.i51 = invoke noundef i32 %46(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) + %45 = load ptr, ptr %vfn7.i, align 8 + %call8.i51 = invoke noundef i32 %45(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) to label %call8.i.noexc unwind label %lpad call8.i.noexc: ; preds = %if.then5.i %add.i49 = add nsw i32 %call8.i51, 1 - %47 = load i32, ptr %m_frame_rect.i, align 8, !tbaa !88 - %add10.i = add nsw i32 %add.i49, %47 + %46 = load i32, ptr %m_frame_rect.i, align 8, !tbaa !88 + %add10.i = add nsw i32 %add.i49, %46 store i32 %add10.i, ptr %m_frame_rect.i, align 8, !tbaa !88 %vtable11.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn12.i = getelementptr inbounds nuw i8, ptr %vtable11.i, i64 16 - %48 = load ptr, ptr %vfn12.i, align 8 - %call13.i52 = invoke noundef i32 %48(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) + %47 = load ptr, ptr %vfn12.i, align 8 + %call13.i52 = invoke noundef i32 %47(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) to label %call13.i.noexc unwind label %lpad call13.i.noexc: ; preds = %call8.i.noexc %add14.i = add nsw i32 %call13.i52, 1 %Y.i = getelementptr inbounds nuw i8, ptr %this, i64 468 - %49 = load i32, ptr %Y.i, align 4, !tbaa !89 - %add17.i = add nsw i32 %add14.i, %49 + %48 = load i32, ptr %Y.i, align 4, !tbaa !89 + %add17.i = add nsw i32 %add14.i, %48 store i32 %add17.i, ptr %Y.i, align 4, !tbaa !89 %vtable18.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn19.i = getelementptr inbounds nuw i8, ptr %vtable18.i, i64 16 - %50 = load ptr, ptr %vfn19.i, align 8 - %call20.i53 = invoke noundef i32 %50(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) + %49 = load ptr, ptr %vfn19.i, align 8 + %call20.i53 = invoke noundef i32 %49(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) to label %call20.i.noexc unwind label %lpad call20.i.noexc: ; preds = %call13.i.noexc %add21.neg.i = xor i32 %call20.i53, -1 %LowerRightCorner.i = getelementptr inbounds nuw i8, ptr %this, i64 472 - %51 = load i32, ptr %LowerRightCorner.i, align 8, !tbaa !90 - %sub.i = add i32 %51, %add21.neg.i + %50 = load i32, ptr %LowerRightCorner.i, align 8, !tbaa !90 + %sub.i = add i32 %50, %add21.neg.i store i32 %sub.i, ptr %LowerRightCorner.i, align 8, !tbaa !90 %vtable24.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn25.i = getelementptr inbounds nuw i8, ptr %vtable24.i, i64 16 - %52 = load ptr, ptr %vfn25.i, align 8 - %call26.i54 = invoke noundef i32 %52(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) + %51 = load ptr, ptr %vfn25.i, align 8 + %call26.i54 = invoke noundef i32 %51(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) to label %call26.i.noexc unwind label %lpad call26.i.noexc: ; preds = %call20.i.noexc %add27.neg.i = xor i32 %call26.i54, -1 %Y30.i = getelementptr inbounds nuw i8, ptr %this, i64 476 - %53 = load i32, ptr %Y30.i, align 4, !tbaa !91 - %sub31.i = add i32 %53, %add27.neg.i + %52 = load i32, ptr %Y30.i, align 4, !tbaa !91 + %sub31.i = add i32 %52, %add27.neg.i store i32 %sub31.i, ptr %Y30.i, align 4, !tbaa !91 br label %if.end32.i @@ -667,22 +666,22 @@ if.end32.i: ; preds = %call26.i.noexc, %ca invoke.cont28: ; preds = %if.end32.i %vtable29 = load ptr, ptr %this, align 8, !tbaa !4 %vfn30 = getelementptr inbounds nuw i8, ptr %vtable29, i64 512 - %54 = load ptr, ptr %vfn30, align 8 - invoke void %54(ptr noundef nonnull align 8 dereferenceable(512) %this) + %53 = load ptr, ptr %vfn30, align 8 + invoke void %53(ptr noundef nonnull align 8 dereferenceable(512) %this) to label %invoke.cont31 unwind label %lpad invoke.cont31: ; preds = %invoke.cont28 %vtable32 = load ptr, ptr %this, align 8, !tbaa !4 %vfn33 = getelementptr inbounds nuw i8, ptr %vtable32, i64 528 - %55 = load ptr, ptr %vfn33, align 8 - invoke void %55(ptr noundef nonnull align 8 dereferenceable(512) %this) + %54 = load ptr, ptr %vfn33, align 8 + invoke void %54(ptr noundef nonnull align 8 dereferenceable(512) %this) to label %invoke.cont34 unwind label %lpad invoke.cont34: ; preds = %invoke.cont31 %vtable36 = load ptr, ptr %this, align 8, !tbaa !4 %vfn37 = getelementptr inbounds nuw i8, ptr %vtable36, i64 504 - %56 = load ptr, ptr %vfn37, align 8 - invoke void %56(ptr noundef nonnull align 8 dereferenceable(496) %this, i1 noundef zeroext %writable) + %55 = load ptr, ptr %vfn37, align 8 + invoke void %55(ptr noundef nonnull align 8 dereferenceable(496) %this, i1 noundef zeroext %writable) to label %invoke.cont38 unwind label %lpad invoke.cont38: ; preds = %invoke.cont34 @@ -1000,8 +999,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -1019,23 +1017,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !94 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont7, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -1043,39 +1041,39 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont7, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont7, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !66 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !66 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !66 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !66 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !66 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !66 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !66 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !66 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont7, label %for.body.i, !llvm.loop !96 invoke.cont7: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %.noexc, %_ZN3irr4core6stringIwE5clearEb.exit.i %Environment = getelementptr inbounds nuw i8, ptr %this, i64 296 - %20 = load ptr, ptr %Environment, align 8, !tbaa !75 - %tobool8.not = icmp eq ptr %20, null + %19 = load ptr, ptr %Environment, align 8, !tbaa !75 + %tobool8.not = icmp eq ptr %19, null br i1 %tobool8.not, label %invoke.cont7.if.end_crit_edge, label %if.then invoke.cont7.if.end_crit_edge: ; preds = %invoke.cont7 @@ -1084,10 +1082,10 @@ invoke.cont7.if.end_crit_edge: ; preds = %invoke.cont7 br label %if.end if.then: ; preds = %invoke.cont7 - %vtable = load ptr, ptr %20, align 8, !tbaa !4 + %vtable = load ptr, ptr %19, align 8, !tbaa !4 %vfn = getelementptr inbounds nuw i8, ptr %vtable, i64 64 - %21 = load ptr, ptr %vfn, align 8 - %call11 = invoke noundef ptr %21(ptr noundef nonnull align 8 dereferenceable(8) %20) + %20 = load ptr, ptr %vfn, align 8 + %call11 = invoke noundef ptr %20(ptr noundef nonnull align 8 dereferenceable(8) %19) to label %invoke.cont10 unwind label %lpad5 invoke.cont10: ; preds = %if.then @@ -1096,24 +1094,24 @@ invoke.cont10: ; preds = %if.then br label %if.end lpad5: ; preds = %invoke.cont32, %invoke.cont29, %invoke.cont26, %if.end32.i, %call20.i.noexc, %call13.i.noexc, %call8.i.noexc, %if.then5.i, %if.end.i47, %if.then23, %if.then6.i, %if.then, %if.end.i - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } cleanup call void @_ZN10GUIEditBoxD2Ev(ptr noundef nonnull align 8 dereferenceable(496) %this, ptr noundef nonnull getelementptr inbounds nuw (i8, ptr @_ZTT23GUIEditBoxWithScrollBar, i64 8)) #25 - resume { ptr, i32 } %22 + resume { ptr, i32 } %21 if.end: ; preds = %invoke.cont10, %invoke.cont7.if.end_crit_edge - %23 = phi ptr [ %.pre, %invoke.cont7.if.end_crit_edge ], [ %call11, %invoke.cont10 ] - %tobool13.not = icmp eq ptr %23, null + %22 = phi ptr [ %.pre, %invoke.cont7.if.end_crit_edge ], [ %call11, %invoke.cont10 ] + %tobool13.not = icmp eq ptr %22, null br i1 %tobool13.not, label %if.end19, label %if.then14 if.then14: ; preds = %if.end - %vtable16 = load ptr, ptr %23, align 8, !tbaa !4 + %vtable16 = load ptr, ptr %22, align 8, !tbaa !4 %vbase.offset.ptr = getelementptr i8, ptr %vtable16, i64 -24 %vbase.offset = load i64, ptr %vbase.offset.ptr, align 8 - %add.ptr17 = getelementptr inbounds i8, ptr %23, i64 %vbase.offset + %add.ptr17 = getelementptr inbounds i8, ptr %22, i64 %vbase.offset %ReferenceCounter.i42 = getelementptr inbounds nuw i8, ptr %add.ptr17, i64 16 - %24 = load i32, ptr %ReferenceCounter.i42, align 8, !tbaa !77 - %inc.i = add nsw i32 %24, 1 + %23 = load i32, ptr %ReferenceCounter.i42, align 8, !tbaa !77 + %inc.i = add nsw i32 %23, 1 store i32 %inc.i, ptr %ReferenceCounter.i42, align 8, !tbaa !77 br label %if.end19 @@ -1125,22 +1123,22 @@ if.end19: ; preds = %if.then14, %if.end br label %land.rhs.i.i land.rhs.i.i: ; preds = %while.body.i.i, %if.end19 - %ret.06.i.i = phi ptr [ %this, %if.end19 ], [ %26, %while.body.i.i ] + %ret.06.i.i = phi ptr [ %this, %if.end19 ], [ %25, %while.body.i.i ] %IsTabGroup.i.i.i = getelementptr inbounds nuw i8, ptr %ret.06.i.i, i64 276 - %25 = load i8, ptr %IsTabGroup.i.i.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.i.not.i.i = icmp eq i8 %25, 0 + %24 = load i8, ptr %IsTabGroup.i.i.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.i.not.i.i = icmp eq i8 %24, 0 br i1 %tobool.i.not.i.i, label %while.body.i.i, label %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i while.body.i.i: ; preds = %land.rhs.i.i %Parent.i.i.i = getelementptr inbounds nuw i8, ptr %ret.06.i.i, i64 32 - %26 = load ptr, ptr %Parent.i.i.i, align 8, !tbaa !84 - %tobool.not.i.i = icmp eq ptr %26, null + %25 = load ptr, ptr %Parent.i.i.i, align 8, !tbaa !84 + %tobool.not.i.i = icmp eq ptr %25, null br i1 %tobool.not.i.i, label %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i, label %land.rhs.i.i, !llvm.loop !85 _ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i: ; preds = %land.rhs.i.i %IsTabGroup.i = getelementptr inbounds nuw i8, ptr %this, i64 276 - %27 = load i8, ptr %IsTabGroup.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.not.not.i = icmp eq i8 %27, 0 + %26 = load i8, ptr %IsTabGroup.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.not.not.i = icmp eq i8 %26, 0 br i1 %tobool.not.not.i, label %if.then6.i, label %while.cond.i.preheader while.cond.i.preheader: ; preds = %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i, %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i @@ -1149,8 +1147,8 @@ while.cond.i.preheader: ; preds = %_ZN3irr3gui11IGUIEl _ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i: ; preds = %while.body.i.i %IsTabGroup36.i = getelementptr inbounds nuw i8, ptr %this, i64 276 - %28 = load i8, ptr %IsTabGroup36.i, align 4, !tbaa !81, !range !82, !noundef !83 - %tobool.not37.not.i = icmp eq i8 %28, 0 + %27 = load i8, ptr %IsTabGroup36.i, align 4, !tbaa !81, !range !82, !noundef !83 + %tobool.not37.not.i = icmp eq i8 %27, 0 br i1 %tobool.not37.not.i, label %while.end.thread41.i, label %while.cond.i.preheader while.end.thread41.i: ; preds = %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.thread.i @@ -1159,7 +1157,7 @@ while.end.thread41.i: ; preds = %_ZN3irr3gui11IGUIEl br label %invoke.cont21 while.cond.i: ; preds = %while.cond.i.preheader, %land.rhs.i - %el.0.i = phi ptr [ %29, %land.rhs.i ], [ %el.0.i.ph, %while.cond.i.preheader ] + %el.0.i = phi ptr [ %28, %land.rhs.i ], [ %el.0.i.ph, %while.cond.i.preheader ] %tobool2.not.i = icmp eq ptr %el.0.i, null br i1 %tobool2.not.i, label %while.end.thread32.i, label %land.rhs.i @@ -1170,8 +1168,8 @@ while.end.thread32.i: ; preds = %while.cond.i land.rhs.i: ; preds = %while.cond.i %Parent.i = getelementptr inbounds nuw i8, ptr %el.0.i, i64 32 - %29 = load ptr, ptr %Parent.i, align 8, !tbaa !84 - %tobool3.not.i = icmp eq ptr %29, null + %28 = load ptr, ptr %Parent.i, align 8, !tbaa !84 + %tobool3.not.i = icmp eq ptr %28, null br i1 %tobool3.not.i, label %if.then6.i, label %while.cond.i, !llvm.loop !86 if.then6.i: ; preds = %land.rhs.i, %_ZN3irr3gui11IGUIElement11getTabGroupEv.exit.i @@ -1185,14 +1183,14 @@ if.then6.i: ; preds = %land.rhs.i, %_ZN3ir to label %call9.i.noexc unwind label %lpad5 call9.i.noexc: ; preds = %if.then6.i - %30 = load ptr, ptr %first.i, align 8, !tbaa !87 - %tobool10.not.i = icmp eq ptr %30, null + %29 = load ptr, ptr %first.i, align 8, !tbaa !87 + %tobool10.not.i = icmp eq ptr %29, null br i1 %tobool10.not.i, label %invoke.cont21, label %if.then11.i if.then11.i: ; preds = %call9.i.noexc - %TabOrder.i.i = getelementptr inbounds nuw i8, ptr %30, i64 272 - %31 = load i32, ptr %TabOrder.i.i, align 8, !tbaa !80 - %add.i = add nsw i32 %31, 1 + %TabOrder.i.i = getelementptr inbounds nuw i8, ptr %29, i64 272 + %30 = load i32, ptr %TabOrder.i.i, align 8, !tbaa !80 + %add.i = add nsw i32 %30, 1 store i32 %add.i, ptr %TabOrder.i, align 8, !tbaa !80 br label %invoke.cont21 @@ -1208,20 +1206,20 @@ if.then23: ; preds = %invoke.cont21 if.end25: ; preds = %if.then23, %invoke.cont21 %AbsoluteRect.i = getelementptr inbounds nuw i8, ptr %this, i64 64 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %m_frame_rect.i, ptr noundef nonnull align 8 dereferenceable(16) %AbsoluteRect.i, i64 16, i1 false), !tbaa.struct !57 - %32 = load ptr, ptr %Environment, align 8, !tbaa !75 - %tobool.not.i46 = icmp eq ptr %32, null + %31 = load ptr, ptr %Environment, align 8, !tbaa !75 + %tobool.not.i46 = icmp eq ptr %31, null br i1 %tobool.not.i46, label %if.end32.i, label %if.end.i47 if.end.i47: ; preds = %if.end25 - %vtable.i = load ptr, ptr %32, align 8, !tbaa !4 + %vtable.i = load ptr, ptr %31, align 8, !tbaa !4 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 96 - %33 = load ptr, ptr %vfn.i, align 8 - %call.i50 = invoke noundef ptr %33(ptr noundef nonnull align 8 dereferenceable(8) %32) + %32 = load ptr, ptr %vfn.i, align 8 + %call.i50 = invoke noundef ptr %32(ptr noundef nonnull align 8 dereferenceable(8) %31) to label %call.i.noexc unwind label %lpad5 call.i.noexc: ; preds = %if.end.i47 - %34 = load i8, ptr %m_border.i, align 4, !tbaa !47, !range !82, !noundef !83 - %tobool3.i = icmp ne i8 %34, 0 + %33 = load i8, ptr %m_border.i, align 4, !tbaa !47, !range !82, !noundef !83 + %tobool3.i = icmp ne i8 %33, 0 %tobool4.i = icmp ne ptr %call.i50, null %or.cond.i = and i1 %tobool4.i, %tobool3.i br i1 %or.cond.i, label %if.then5.i, label %if.end32.i @@ -1229,50 +1227,50 @@ call.i.noexc: ; preds = %if.end.i47 if.then5.i: ; preds = %call.i.noexc %vtable6.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn7.i = getelementptr inbounds nuw i8, ptr %vtable6.i, i64 16 - %35 = load ptr, ptr %vfn7.i, align 8 - %call8.i51 = invoke noundef i32 %35(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) + %34 = load ptr, ptr %vfn7.i, align 8 + %call8.i51 = invoke noundef i32 %34(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) to label %call8.i.noexc unwind label %lpad5 call8.i.noexc: ; preds = %if.then5.i %add.i49 = add nsw i32 %call8.i51, 1 - %36 = load i32, ptr %m_frame_rect.i, align 8, !tbaa !88 - %add10.i = add nsw i32 %add.i49, %36 + %35 = load i32, ptr %m_frame_rect.i, align 8, !tbaa !88 + %add10.i = add nsw i32 %add.i49, %35 store i32 %add10.i, ptr %m_frame_rect.i, align 8, !tbaa !88 %vtable11.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn12.i = getelementptr inbounds nuw i8, ptr %vtable11.i, i64 16 - %37 = load ptr, ptr %vfn12.i, align 8 - %call13.i52 = invoke noundef i32 %37(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) + %36 = load ptr, ptr %vfn12.i, align 8 + %call13.i52 = invoke noundef i32 %36(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) to label %call13.i.noexc unwind label %lpad5 call13.i.noexc: ; preds = %call8.i.noexc %add14.i = add nsw i32 %call13.i52, 1 %Y.i = getelementptr inbounds nuw i8, ptr %this, i64 468 - %38 = load i32, ptr %Y.i, align 4, !tbaa !89 - %add17.i = add nsw i32 %add14.i, %38 + %37 = load i32, ptr %Y.i, align 4, !tbaa !89 + %add17.i = add nsw i32 %add14.i, %37 store i32 %add17.i, ptr %Y.i, align 4, !tbaa !89 %vtable18.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn19.i = getelementptr inbounds nuw i8, ptr %vtable18.i, i64 16 - %39 = load ptr, ptr %vfn19.i, align 8 - %call20.i53 = invoke noundef i32 %39(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) + %38 = load ptr, ptr %vfn19.i, align 8 + %call20.i53 = invoke noundef i32 %38(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 8) to label %call20.i.noexc unwind label %lpad5 call20.i.noexc: ; preds = %call13.i.noexc %add21.neg.i = xor i32 %call20.i53, -1 %LowerRightCorner.i = getelementptr inbounds nuw i8, ptr %this, i64 472 - %40 = load i32, ptr %LowerRightCorner.i, align 8, !tbaa !90 - %sub.i = add i32 %40, %add21.neg.i + %39 = load i32, ptr %LowerRightCorner.i, align 8, !tbaa !90 + %sub.i = add i32 %39, %add21.neg.i store i32 %sub.i, ptr %LowerRightCorner.i, align 8, !tbaa !90 %vtable24.i = load ptr, ptr %call.i50, align 8, !tbaa !4 %vfn25.i = getelementptr inbounds nuw i8, ptr %vtable24.i, i64 16 - %41 = load ptr, ptr %vfn25.i, align 8 - %call26.i54 = invoke noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) + %40 = load ptr, ptr %vfn25.i, align 8 + %call26.i54 = invoke noundef i32 %40(ptr noundef nonnull align 8 dereferenceable(8) %call.i50, i32 noundef 9) to label %call26.i.noexc unwind label %lpad5 call26.i.noexc: ; preds = %call20.i.noexc %add27.neg.i = xor i32 %call26.i54, -1 %Y30.i = getelementptr inbounds nuw i8, ptr %this, i64 476 - %42 = load i32, ptr %Y30.i, align 4, !tbaa !91 - %sub31.i = add i32 %42, %add27.neg.i + %41 = load i32, ptr %Y30.i, align 4, !tbaa !91 + %sub31.i = add i32 %41, %add27.neg.i store i32 %sub31.i, ptr %Y30.i, align 4, !tbaa !91 br label %if.end32.i @@ -1283,22 +1281,22 @@ if.end32.i: ; preds = %call26.i.noexc, %ca invoke.cont26: ; preds = %if.end32.i %vtable27 = load ptr, ptr %this, align 8, !tbaa !4 %vfn28 = getelementptr inbounds nuw i8, ptr %vtable27, i64 512 - %43 = load ptr, ptr %vfn28, align 8 - invoke void %43(ptr noundef nonnull align 8 dereferenceable(512) %this) + %42 = load ptr, ptr %vfn28, align 8 + invoke void %42(ptr noundef nonnull align 8 dereferenceable(512) %this) to label %invoke.cont29 unwind label %lpad5 invoke.cont29: ; preds = %invoke.cont26 %vtable30 = load ptr, ptr %this, align 8, !tbaa !4 %vfn31 = getelementptr inbounds nuw i8, ptr %vtable30, i64 528 - %44 = load ptr, ptr %vfn31, align 8 - invoke void %44(ptr noundef nonnull align 8 dereferenceable(512) %this) + %43 = load ptr, ptr %vfn31, align 8 + invoke void %43(ptr noundef nonnull align 8 dereferenceable(512) %this) to label %invoke.cont32 unwind label %lpad5 invoke.cont32: ; preds = %invoke.cont29 %vtable34 = load ptr, ptr %this, align 8, !tbaa !4 %vfn35 = getelementptr inbounds nuw i8, ptr %vtable34, i64 504 - %45 = load ptr, ptr %vfn35, align 8 - invoke void %45(ptr noundef nonnull align 8 dereferenceable(496) %this, i1 noundef zeroext %writable) + %44 = load ptr, ptr %vfn35, align 8 + invoke void %44(ptr noundef nonnull align 8 dereferenceable(496) %this, i1 noundef zeroext %writable) to label %invoke.cont36 unwind label %lpad5 invoke.cont36: ; preds = %invoke.cont32 @@ -2958,8 +2956,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -2977,23 +2974,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !124 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -3001,31 +2998,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !66 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !66 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !66 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !66 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !66 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !66 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !66 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !66 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont, label %for.body.i, !llvm.loop !126 @@ -3034,24 +3031,24 @@ invoke.cont: ; preds = %for.body.i, %for.bo ret void lpad: ; preds = %if.end.i - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup - %21 = load ptr, ptr %this, align 8, !tbaa !67 - %cmp.i.i.i = icmp eq ptr %21, %0 + %20 = load ptr, ptr %this, align 8, !tbaa !67 + %cmp.i.i.i = icmp eq ptr %20, %0 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i: ; preds = %lpad - %22 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !65 - %cmp3.i.i.i = icmp ult i64 %22, 4 + %21 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !65 + %cmp3.i.i.i = icmp ult i64 %21, 4 tail call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit if.then.i.i: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef %21) #26 + tail call void @_ZdlPv(ptr noundef %20) #26 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.then.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i - resume { ptr, i32 } %20 + resume { ptr, i32 } %19 } ; Function Attrs: mustprogress uwtable @@ -5424,8 +5421,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -5443,23 +5439,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !162 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -5467,31 +5463,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !66 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !66 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !66 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !66 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !66 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !66 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !66 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !66 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !164 @@ -5736,7 +5732,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -5776,10 +5772,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !131 %13 = load ptr, ptr %Name, align 8, !tbaa !167 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !131 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 @@ -6015,8 +6011,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -6034,23 +6029,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !173 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !66 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !66 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -6058,31 +6053,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !66 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !66 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !66 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !66 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !66 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !66 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !66 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !66 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !66 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !66 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !66 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !66 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !175 diff --git a/bench/minetest/optimized/guiHyperText.cpp.ll b/bench/minetest/optimized/guiHyperText.cpp.ll index 53ab5bc0e1..67c2dd4fc1 100644 --- a/bench/minetest/optimized/guiHyperText.cpp.ll +++ b/bench/minetest/optimized/guiHyperText.cpp.ll @@ -9585,8 +9585,7 @@ for.body.lr.ph.i: ; preds = %for.cond.preheader. br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %2, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %2, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -9604,23 +9603,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !145 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %2, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %2, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %2, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %0, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -9628,66 +9627,66 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont, label %for.body.i lpad.i: ; preds = %if.end.i - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup - %17 = load ptr, ptr %agg.result, align 8, !tbaa !104 - %cmp.i.i.i.i = icmp eq ptr %17, %3 + %16 = load ptr, ptr %agg.result, align 8, !tbaa !104 + %cmp.i.i.i.i = icmp eq ptr %16, %3 br i1 %cmp.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i, label %if.then.i.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %lpad.i - %18 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 - %cmp3.i.i.i.i = icmp ult i64 %18, 4 + %17 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 + %cmp3.i.i.i.i = icmp ult i64 %17, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i) br label %lpad.body if.then.i.i.i: ; preds = %lpad.i - call void @_ZdlPv(ptr noundef %17) #31 + call void @_ZdlPv(ptr noundef %16) #31 br label %lpad.body for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.i - %19 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 + %18 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %19, ptr %arrayidx.i.i, align 4, !tbaa !89 + store i32 %18, ptr %arrayidx.i.i, align 4, !tbaa !89 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.i - %20 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 + %19 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %20, ptr %arrayidx.i.i.1, align 4, !tbaa !89 + store i32 %19, ptr %arrayidx.i.i.1, align 4, !tbaa !89 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.i.1 - %21 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 + %20 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %21, ptr %arrayidx.i.i.2, align 4, !tbaa !89 + store i32 %20, ptr %arrayidx.i.i.2, align 4, !tbaa !89 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.i.2 - %22 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 + %21 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %22, ptr %arrayidx.i.i.3, align 4, !tbaa !89 + store i32 %21, ptr %arrayidx.i.i.3, align 4, !tbaa !89 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont, label %for.body.i, !llvm.loop !150 invoke.cont: ; preds = %for.body.i, %for.body.i.prol.loopexit, %middle.block, %for.cond.preheader.i, %entry - %23 = load ptr, ptr %str, align 8, !tbaa !104 - %24 = getelementptr inbounds nuw i8, ptr %str, i64 16 - %cmp.i.i.i = icmp eq ptr %23, %24 + %22 = load ptr, ptr %str, align 8, !tbaa !104 + %23 = getelementptr inbounds nuw i8, ptr %str, i64 16 + %cmp.i.i.i = icmp eq ptr %22, %23 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i: ; preds = %invoke.cont - %25 = load i64, ptr %_M_string_length.i, align 8, !tbaa !97 - %cmp3.i.i.i = icmp ult i64 %25, 4 + %24 = load i64, ptr %_M_string_length.i, align 8, !tbaa !97 + %cmp3.i.i.i = icmp ult i64 %24, 4 call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit if.then.i.i: ; preds = %invoke.cont - call void @_ZdlPv(ptr noundef %23) #31 + call void @_ZdlPv(ptr noundef %22) #31 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.then.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i @@ -9695,24 +9694,24 @@ _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.th ret void lpad.body: ; preds = %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i - %26 = load ptr, ptr %str, align 8, !tbaa !104 - %27 = getelementptr inbounds nuw i8, ptr %str, i64 16 - %cmp.i.i.i3 = icmp eq ptr %26, %27 + %25 = load ptr, ptr %str, align 8, !tbaa !104 + %26 = getelementptr inbounds nuw i8, ptr %str, i64 16 + %cmp.i.i.i3 = icmp eq ptr %25, %26 br i1 %cmp.i.i.i3, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5, label %if.then.i.i4 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5: ; preds = %lpad.body - %28 = load i64, ptr %_M_string_length.i, align 8, !tbaa !97 - %cmp3.i.i.i7 = icmp ult i64 %28, 4 + %27 = load i64, ptr %_M_string_length.i, align 8, !tbaa !97 + %cmp3.i.i.i7 = icmp ult i64 %27, 4 call void @llvm.assume(i1 %cmp3.i.i.i7) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8 if.then.i.i4: ; preds = %lpad.body - call void @_ZdlPv(ptr noundef %26) #31 + call void @_ZdlPv(ptr noundef %25) #31 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8 _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8: ; preds = %if.then.i.i4, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %str) #30 - resume { ptr, i32 } %16 + resume { ptr, i32 } %15 } ; Function Attrs: mustprogress uwtable @@ -12849,7 +12848,7 @@ if.then.i.i.i: ; preds = %lpad.i br label %common.resume common.resume: ; preds = %ehcleanup114, %_ZN3irr4core6stringIwED2Ev.exit267, %if.then.i.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i - %common.resume.op = phi { ptr, i32 } [ %53, %if.then.i.i.i ], [ %53, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ], [ %124, %ehcleanup114 ], [ %.pn.pn, %_ZN3irr4core6stringIwED2Ev.exit267 ] + %common.resume.op = phi { ptr, i32 } [ %53, %if.then.i.i.i ], [ %53, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i ], [ %123, %ehcleanup114 ], [ %.pn.pn, %_ZN3irr4core6stringIwED2Ev.exit267 ] resume { ptr, i32 } %common.resume.op invoke.cont76: ; preds = %for.body.lr.ph.i.i @@ -12893,8 +12892,7 @@ for.body.lr.ph.i.i194: ; preds = %for.cond.preheader. br i1 %or.cond333, label %for.body.i.i195.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i.i194 - %n.mod.vf = and i64 %60, 7 - %n.vec = sub nuw nsw i64 %conv.i.i192, %n.mod.vf + %n.vec = and i64 %60, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -12912,23 +12910,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %69, label %middle.block, label %vector.body, !llvm.loop !292 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %60, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont.i, label %for.body.i.i195.preheader for.body.i.i195.preheader: ; preds = %middle.block, %for.body.lr.ph.i.i194 %indvars.iv.i.i196.ph = phi i64 [ 0, %for.body.lr.ph.i.i194 ], [ %n.vec, %middle.block ] - %70 = sub i64 %60, %indvars.iv.i.i196.ph - %xtraiter = and i64 %70, 3 + %xtraiter = and i64 %60, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.i195.prol.loopexit, label %for.body.i.i195.prol for.body.i.i195.prol: ; preds = %for.body.i.i195.preheader, %for.body.i.i195.prol %indvars.iv.i.i196.prol = phi i64 [ %indvars.iv.next.i.i199.prol, %for.body.i.i195.prol ], [ %indvars.iv.i.i196.ph, %for.body.i.i195.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.i195.prol ], [ 0, %for.body.i.i195.preheader ] - %arrayidx.i.i197.prol = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.i.i196.prol - %71 = load i32, ptr %arrayidx.i.i197.prol, align 4, !tbaa !89 - %arrayidx.i.i.i198.prol = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.i.i196.prol - store i32 %71, ptr %arrayidx.i.i.i198.prol, align 4, !tbaa !89 + %arrayidx.i.i197.prol = getelementptr inbounds nuw i32, ptr %58, i64 %indvars.iv.i.i196.prol + %70 = load i32, ptr %arrayidx.i.i197.prol, align 4, !tbaa !89 + %arrayidx.i.i.i198.prol = getelementptr inbounds nuw i32, ptr %62, i64 %indvars.iv.i.i196.prol + store i32 %70, ptr %arrayidx.i.i.i198.prol, align 4, !tbaa !89 %indvars.iv.next.i.i199.prol = add nuw nsw i64 %indvars.iv.i.i196.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -12936,82 +12934,82 @@ for.body.i.i195.prol: ; preds = %for.body.i.i195.pre for.body.i.i195.prol.loopexit: ; preds = %for.body.i.i195.prol, %for.body.i.i195.preheader %indvars.iv.i.i196.unr = phi i64 [ %indvars.iv.i.i196.ph, %for.body.i.i195.preheader ], [ %indvars.iv.next.i.i199.prol, %for.body.i.i195.prol ] - %72 = sub nsw i64 %indvars.iv.i.i196.ph, %conv.i.i192 - %73 = icmp ugt i64 %72, -4 - br i1 %73, label %invoke.cont.i, label %for.body.i.i195 + %71 = sub nsw i64 %indvars.iv.i.i196.ph, %conv.i.i192 + %72 = icmp ugt i64 %71, -4 + br i1 %72, label %invoke.cont.i, label %for.body.i.i195 lpad.i.i: ; preds = %if.end.i.i191 - %74 = landingpad { ptr, i32 } + %73 = landingpad { ptr, i32 } cleanup - %75 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104, !alias.scope !289 - %cmp.i.i.i.i.i = icmp eq ptr %75, %61 + %74 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104, !alias.scope !289 + %cmp.i.i.i.i.i = icmp eq ptr %74, %61 br i1 %cmp.i.i.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i, label %if.then.i.i.i.i193 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i: ; preds = %lpad.i.i - %76 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97, !alias.scope !289 - %cmp3.i.i.i.i.i = icmp ult i64 %76, 4 + %75 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97, !alias.scope !289 + %cmp3.i.i.i.i.i = icmp ult i64 %75, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i) br label %lpad.body.i if.then.i.i.i.i193: ; preds = %lpad.i.i - call void @_ZdlPv(ptr noundef %75) #31 + call void @_ZdlPv(ptr noundef %74) #31 br label %lpad.body.i for.body.i.i195: ; preds = %for.body.i.i195.prol.loopexit, %for.body.i.i195 %indvars.iv.i.i196 = phi i64 [ %indvars.iv.next.i.i199.3, %for.body.i.i195 ], [ %indvars.iv.i.i196.unr, %for.body.i.i195.prol.loopexit ] %arrayidx.i.i197 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.i.i196 - %77 = load i32, ptr %arrayidx.i.i197, align 4, !tbaa !89 + %76 = load i32, ptr %arrayidx.i.i197, align 4, !tbaa !89 %arrayidx.i.i.i198 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.i.i196 - store i32 %77, ptr %arrayidx.i.i.i198, align 4, !tbaa !89 + store i32 %76, ptr %arrayidx.i.i.i198, align 4, !tbaa !89 %indvars.iv.next.i.i199 = add nuw nsw i64 %indvars.iv.i.i196, 1 %arrayidx.i.i197.1 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i199 - %78 = load i32, ptr %arrayidx.i.i197.1, align 4, !tbaa !89 + %77 = load i32, ptr %arrayidx.i.i197.1, align 4, !tbaa !89 %arrayidx.i.i.i198.1 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i199 - store i32 %78, ptr %arrayidx.i.i.i198.1, align 4, !tbaa !89 + store i32 %77, ptr %arrayidx.i.i.i198.1, align 4, !tbaa !89 %indvars.iv.next.i.i199.1 = add nuw nsw i64 %indvars.iv.i.i196, 2 %arrayidx.i.i197.2 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i199.1 - %79 = load i32, ptr %arrayidx.i.i197.2, align 4, !tbaa !89 + %78 = load i32, ptr %arrayidx.i.i197.2, align 4, !tbaa !89 %arrayidx.i.i.i198.2 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i199.1 - store i32 %79, ptr %arrayidx.i.i.i198.2, align 4, !tbaa !89 + store i32 %78, ptr %arrayidx.i.i.i198.2, align 4, !tbaa !89 %indvars.iv.next.i.i199.2 = add nuw nsw i64 %indvars.iv.i.i196, 3 %arrayidx.i.i197.3 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next.i.i199.2 - %80 = load i32, ptr %arrayidx.i.i197.3, align 4, !tbaa !89 + %79 = load i32, ptr %arrayidx.i.i197.3, align 4, !tbaa !89 %arrayidx.i.i.i198.3 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv.next.i.i199.2 - store i32 %80, ptr %arrayidx.i.i.i198.3, align 4, !tbaa !89 + store i32 %79, ptr %arrayidx.i.i.i198.3, align 4, !tbaa !89 %indvars.iv.next.i.i199.3 = add nuw nsw i64 %indvars.iv.i.i196, 4 %exitcond.not.i.i200.3 = icmp eq i64 %indvars.iv.next.i.i199.3, %conv.i.i192 br i1 %exitcond.not.i.i200.3, label %invoke.cont.i, label %for.body.i.i195, !llvm.loop !294 invoke.cont.i: ; preds = %for.body.i.i195, %for.body.i.i195.prol.loopexit, %middle.block, %for.cond.preheader.i.i, %.noexc - %81 = load ptr, ptr %str.i, align 8, !tbaa !104, !noalias !289 - %82 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 - %cmp.i.i.i.i201 = icmp eq ptr %81, %82 + %80 = load ptr, ptr %str.i, align 8, !tbaa !104, !noalias !289 + %81 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 + %cmp.i.i.i.i201 = icmp eq ptr %80, %81 br i1 %cmp.i.i.i.i201, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i204, label %if.then.i.i.i202 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i204: ; preds = %invoke.cont.i - %83 = load i64, ptr %_M_string_length.i.i190, align 8, !tbaa !97, !noalias !289 - %cmp3.i.i.i.i205 = icmp ult i64 %83, 4 + %82 = load i64, ptr %_M_string_length.i.i190, align 8, !tbaa !97, !noalias !289 + %cmp3.i.i.i.i205 = icmp ult i64 %82, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i205) br label %invoke.cont79 if.then.i.i.i202: ; preds = %invoke.cont.i - call void @_ZdlPv(ptr noundef %81) #31 + call void @_ZdlPv(ptr noundef %80) #31 br label %invoke.cont79 lpad.body.i: ; preds = %if.then.i.i.i.i193, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i - %84 = load ptr, ptr %str.i, align 8, !tbaa !104, !noalias !289 - %85 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 - %cmp.i.i.i3.i = icmp eq ptr %84, %85 + %83 = load ptr, ptr %str.i, align 8, !tbaa !104, !noalias !289 + %84 = getelementptr inbounds nuw i8, ptr %str.i, i64 16 + %cmp.i.i.i3.i = icmp eq ptr %83, %84 br i1 %cmp.i.i.i3.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i, label %if.then.i.i4.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i: ; preds = %lpad.body.i - %86 = load i64, ptr %_M_string_length.i.i190, align 8, !tbaa !97, !noalias !289 - %cmp3.i.i.i7.i = icmp ult i64 %86, 4 + %85 = load i64, ptr %_M_string_length.i.i190, align 8, !tbaa !97, !noalias !289 + %cmp3.i.i.i7.i = icmp ult i64 %85, 4 call void @llvm.assume(i1 %cmp3.i.i.i7.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i if.then.i.i4.i: ; preds = %lpad.body.i - call void @_ZdlPv(ptr noundef %84) #31 + call void @_ZdlPv(ptr noundef %83) #31 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i: ; preds = %if.then.i.i4.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i5.i @@ -13021,36 +13019,36 @@ _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i: ; preds = %if invoke.cont79: ; preds = %if.then.i.i.i202, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i204 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %str.i) #30, !noalias !289 call void @llvm.experimental.noalias.scope.decl(metadata !295) - %87 = getelementptr inbounds nuw i8, ptr %ref.tmp70, i64 16 - store ptr %87, ptr %ref.tmp70, align 8, !tbaa !113, !alias.scope !295 + %86 = getelementptr inbounds nuw i8, ptr %ref.tmp70, i64 16 + store ptr %86, ptr %ref.tmp70, align 8, !tbaa !113, !alias.scope !295 %_M_string_length.i.i.i.i.i206 = getelementptr inbounds nuw i8, ptr %ref.tmp70, i64 8 store i64 0, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 - store i32 0, ptr %87, align 8, !tbaa !89, !alias.scope !295 + store i32 0, ptr %86, align 8, !tbaa !89, !alias.scope !295 invoke void @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp70, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp71) to label %if.end.i.i._ZN3irr4core6stringIwEC2ERKS2_.exit_crit_edge.i unwind label %lpad.i.i207 if.end.i.i._ZN3irr4core6stringIwEC2ERKS2_.exit_crit_edge.i: ; preds = %invoke.cont79 %.pre.i = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 - %88 = sub i64 1152921504606846975, %.pre.i - %89 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97, !noalias !295 - %cmp.i.i.i.i3.i = icmp ult i64 %88, %89 + %87 = sub i64 1152921504606846975, %.pre.i + %88 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97, !noalias !295 + %cmp.i.i.i.i3.i = icmp ult i64 %87, %88 br i1 %cmp.i.i.i.i3.i, label %if.then.i.i.i.i.i, label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i.i lpad.i.i207: ; preds = %invoke.cont79 - %90 = landingpad { ptr, i32 } + %89 = landingpad { ptr, i32 } cleanup - %91 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104, !alias.scope !295 - %cmp.i.i.i.i.i208 = icmp eq ptr %91, %87 + %90 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104, !alias.scope !295 + %cmp.i.i.i.i.i208 = icmp eq ptr %90, %86 br i1 %cmp.i.i.i.i.i208, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i210, label %if.then.i.i.i.i209 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i210: ; preds = %lpad.i.i207 - %92 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 - %cmp3.i.i.i.i.i211 = icmp ult i64 %92, 4 + %91 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 + %cmp3.i.i.i.i.i211 = icmp ult i64 %91, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i.i211) br label %ehcleanup if.then.i.i.i.i209: ; preds = %lpad.i.i207 - call void @_ZdlPv(ptr noundef %91) #31 + call void @_ZdlPv(ptr noundef %90) #31 br label %ehcleanup if.then.i.i.i.i.i: ; preds = %if.end.i.i._ZN3irr4core6stringIwEC2ERKS2_.exit_crit_edge.i @@ -13061,25 +13059,25 @@ if.then.i.i.i.i.i: ; preds = %if.end.i.i._ZN3irr4 unreachable _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i.i: ; preds = %if.end.i.i._ZN3irr4core6stringIwEC2ERKS2_.exit_crit_edge.i - %93 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104, !noalias !295 - %call.i.i.i4.i = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp70, ptr noundef %93, i64 noundef %89) + %92 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104, !noalias !295 + %call.i.i.i4.i = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp70, ptr noundef %92, i64 noundef %88) to label %invoke.cont81 unwind label %lpad.i213 lpad.i213: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i.i, %if.then.i.i.i.i.i - %94 = landingpad { ptr, i32 } + %93 = landingpad { ptr, i32 } cleanup - %95 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104, !alias.scope !295 - %cmp.i.i.i.i5.i = icmp eq ptr %95, %87 + %94 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104, !alias.scope !295 + %cmp.i.i.i.i5.i = icmp eq ptr %94, %86 br i1 %cmp.i.i.i.i5.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i8.i, label %if.then.i.i.i6.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i8.i: ; preds = %lpad.i213 - %96 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 - %cmp3.i.i.i.i10.i = icmp ult i64 %96, 4 + %95 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97, !alias.scope !295 + %cmp3.i.i.i.i10.i = icmp ult i64 %95, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i10.i) br label %ehcleanup if.then.i.i.i6.i: ; preds = %lpad.i213 - call void @_ZdlPv(ptr noundef %95) #31 + call void @_ZdlPv(ptr noundef %94) #31 br label %ehcleanup invoke.cont81: ; preds = %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_.exit.i.i @@ -13092,160 +13090,160 @@ if.end.i: ; preds = %invoke.cont81 to label %invoke.cont83 unwind label %lpad82 invoke.cont83: ; preds = %if.end.i, %invoke.cont81 - %97 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104 - %cmp.i.i.i.i218 = icmp eq ptr %97, %87 + %96 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104 + %cmp.i.i.i.i218 = icmp eq ptr %96, %86 br i1 %cmp.i.i.i.i218, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i221, label %if.then.i.i.i219 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i221: ; preds = %invoke.cont83 - %98 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97 - %cmp3.i.i.i.i223 = icmp ult i64 %98, 4 + %97 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97 + %cmp3.i.i.i.i223 = icmp ult i64 %97, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i223) br label %_ZN3irr4core6stringIwED2Ev.exit if.then.i.i.i219: ; preds = %invoke.cont83 - call void @_ZdlPv(ptr noundef %97) #31 + call void @_ZdlPv(ptr noundef %96) #31 br label %_ZN3irr4core6stringIwED2Ev.exit _ZN3irr4core6stringIwED2Ev.exit: ; preds = %if.then.i.i.i219, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i221 - %99 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104 - %cmp.i.i.i.i224 = icmp eq ptr %99, %61 + %98 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104 + %cmp.i.i.i.i224 = icmp eq ptr %98, %61 br i1 %cmp.i.i.i.i224, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i227, label %if.then.i.i.i225 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i227: ; preds = %_ZN3irr4core6stringIwED2Ev.exit - %100 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97 - %cmp3.i.i.i.i229 = icmp ult i64 %100, 4 + %99 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97 + %cmp3.i.i.i.i229 = icmp ult i64 %99, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i229) br label %_ZN3irr4core6stringIwED2Ev.exit230 if.then.i.i.i225: ; preds = %_ZN3irr4core6stringIwED2Ev.exit - call void @_ZdlPv(ptr noundef %99) #31 + call void @_ZdlPv(ptr noundef %98) #31 br label %_ZN3irr4core6stringIwED2Ev.exit230 _ZN3irr4core6stringIwED2Ev.exit230: ; preds = %if.then.i.i.i225, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i227 - %101 = load ptr, ptr %ref.tmp73, align 8, !tbaa !11 - %cmp.i.i.i = icmp eq ptr %101, %52 + %100 = load ptr, ptr %ref.tmp73, align 8, !tbaa !11 + %cmp.i.i.i = icmp eq ptr %100, %52 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i231 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZN3irr4core6stringIwED2Ev.exit230 - %102 = load i64, ptr %_M_string_length.i.i.i.i185, align 8, !tbaa !14 - %cmp3.i.i.i = icmp ult i64 %102, 16 + %101 = load i64, ptr %_M_string_length.i.i.i.i185, align 8, !tbaa !14 + %cmp3.i.i.i = icmp ult i64 %101, 16 call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit if.then.i.i231: ; preds = %_ZN3irr4core6stringIwED2Ev.exit230 - call void @_ZdlPv(ptr noundef %101) #31 + call void @_ZdlPv(ptr noundef %100) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.then.i.i231, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp73) #30 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp72) #30 - %103 = load ptr, ptr %ref.tmp71, align 8, !tbaa !104 - %cmp.i.i.i.i233 = icmp eq ptr %103, %49 + %102 = load ptr, ptr %ref.tmp71, align 8, !tbaa !104 + %cmp.i.i.i.i233 = icmp eq ptr %102, %49 br i1 %cmp.i.i.i.i233, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i236, label %if.then.i.i.i234 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i236: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - %104 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 - %cmp3.i.i.i.i238 = icmp ult i64 %104, 4 + %103 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 + %cmp3.i.i.i.i238 = icmp ult i64 %103, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i238) br label %_ZN3irr4core6stringIwED2Ev.exit239 if.then.i.i.i234: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit - call void @_ZdlPv(ptr noundef %103) #31 + call void @_ZdlPv(ptr noundef %102) #31 br label %_ZN3irr4core6stringIwED2Ev.exit239 _ZN3irr4core6stringIwED2Ev.exit239: ; preds = %if.then.i.i.i234, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i236 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp71) #30 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp70) #30 %Parent = getelementptr inbounds nuw i8, ptr %this, i64 32 - %105 = load ptr, ptr %Parent, align 8, !tbaa !269 - %tobool93.not = icmp eq ptr %105, null + %104 = load ptr, ptr %Parent, align 8, !tbaa !269 + %tobool93.not = icmp eq ptr %104, null br i1 %tobool93.not, label %if.end102, label %if.then94 if.then94: ; preds = %_ZN3irr4core6stringIwED2Ev.exit239 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %newEvent) #30 store i32 0, ptr %newEvent, align 8, !tbaa !282 - %106 = getelementptr inbounds nuw i8, ptr %newEvent, i64 8 - store ptr %this, ptr %106, align 8, !tbaa !13 + %105 = getelementptr inbounds nuw i8, ptr %newEvent, i64 8 + store ptr %this, ptr %105, align 8, !tbaa !13 %Element = getelementptr inbounds nuw i8, ptr %newEvent, i64 16 store ptr null, ptr %Element, align 8, !tbaa !13 %EventType97 = getelementptr inbounds nuw i8, ptr %newEvent, i64 24 store i32 5, ptr %EventType97, align 8, !tbaa !13 - %vtable99 = load ptr, ptr %105, align 8, !tbaa !162 + %vtable99 = load ptr, ptr %104, align 8, !tbaa !162 %vfn100 = getelementptr inbounds nuw i8, ptr %vtable99, i64 16 - %107 = load ptr, ptr %vfn100, align 8 - %call101 = call noundef zeroext i1 %107(ptr noundef nonnull align 8 dereferenceable(308) %105, ptr noundef nonnull align 8 dereferenceable(56) %newEvent) + %106 = load ptr, ptr %vfn100, align 8 + %call101 = call noundef zeroext i1 %106(ptr noundef nonnull align 8 dereferenceable(308) %104, ptr noundef nonnull align 8 dereferenceable(56) %newEvent) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %newEvent) #30 br label %if.end102 lpad75: ; preds = %invoke.cont76, %for.body.lr.ph.i.i - %108 = landingpad { ptr, i32 } + %107 = landingpad { ptr, i32 } cleanup br label %ehcleanup85 lpad82: ; preds = %if.end.i - %109 = landingpad { ptr, i32 } + %108 = landingpad { ptr, i32 } cleanup - %110 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104 - %cmp.i.i.i.i240 = icmp eq ptr %110, %87 + %109 = load ptr, ptr %ref.tmp70, align 8, !tbaa !104 + %cmp.i.i.i.i240 = icmp eq ptr %109, %86 br i1 %cmp.i.i.i.i240, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i243, label %if.then.i.i.i241 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i243: ; preds = %lpad82 - %111 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97 - %cmp3.i.i.i.i245 = icmp ult i64 %111, 4 + %110 = load i64, ptr %_M_string_length.i.i.i.i.i206, align 8, !tbaa !97 + %cmp3.i.i.i.i245 = icmp ult i64 %110, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i245) br label %ehcleanup if.then.i.i.i241: ; preds = %lpad82 - call void @_ZdlPv(ptr noundef %110) #31 + call void @_ZdlPv(ptr noundef %109) #31 br label %ehcleanup ehcleanup: ; preds = %if.then.i.i.i241, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i243, %if.then.i.i.i6.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i8.i, %if.then.i.i.i.i209, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i210 - %.pn = phi { ptr, i32 } [ %90, %if.then.i.i.i.i209 ], [ %90, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i210 ], [ %94, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i8.i ], [ %94, %if.then.i.i.i6.i ], [ %109, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i243 ], [ %109, %if.then.i.i.i241 ] - %112 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104 - %cmp.i.i.i.i247 = icmp eq ptr %112, %61 + %.pn = phi { ptr, i32 } [ %89, %if.then.i.i.i.i209 ], [ %89, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i.i210 ], [ %93, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i8.i ], [ %93, %if.then.i.i.i6.i ], [ %108, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i243 ], [ %108, %if.then.i.i.i241 ] + %111 = load ptr, ptr %ref.tmp72, align 8, !tbaa !104 + %cmp.i.i.i.i247 = icmp eq ptr %111, %61 br i1 %cmp.i.i.i.i247, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i250, label %if.then.i.i.i248 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i250: ; preds = %ehcleanup - %113 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97 - %cmp3.i.i.i.i252 = icmp ult i64 %113, 4 + %112 = load i64, ptr %_M_string_length.i.i.i.i.i, align 8, !tbaa !97 + %cmp3.i.i.i.i252 = icmp ult i64 %112, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i252) br label %ehcleanup85 if.then.i.i.i248: ; preds = %ehcleanup - call void @_ZdlPv(ptr noundef %112) #31 + call void @_ZdlPv(ptr noundef %111) #31 br label %ehcleanup85 ehcleanup85: ; preds = %if.then.i.i.i248, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i250, %lpad75, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i - %.pn.pn = phi { ptr, i32 } [ %108, %lpad75 ], [ %74, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i250 ], [ %.pn, %if.then.i.i.i248 ] - %114 = load ptr, ptr %ref.tmp73, align 8, !tbaa !11 - %cmp.i.i.i254 = icmp eq ptr %114, %52 + %.pn.pn = phi { ptr, i32 } [ %107, %lpad75 ], [ %73, %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit8.i ], [ %.pn, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i250 ], [ %.pn, %if.then.i.i.i248 ] + %113 = load ptr, ptr %ref.tmp73, align 8, !tbaa !11 + %cmp.i.i.i254 = icmp eq ptr %113, %52 br i1 %cmp.i.i.i254, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i257, label %if.then.i.i255 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i257: ; preds = %ehcleanup85 - %115 = load i64, ptr %_M_string_length.i.i.i.i185, align 8, !tbaa !14 - %cmp3.i.i.i259 = icmp ult i64 %115, 16 + %114 = load i64, ptr %_M_string_length.i.i.i.i185, align 8, !tbaa !14 + %cmp3.i.i.i259 = icmp ult i64 %114, 16 call void @llvm.assume(i1 %cmp3.i.i.i259) br label %ehcleanup86 if.then.i.i255: ; preds = %ehcleanup85 - call void @_ZdlPv(ptr noundef %114) #31 + call void @_ZdlPv(ptr noundef %113) #31 br label %ehcleanup86 ehcleanup86: ; preds = %if.then.i.i255, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i257 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp73) #30 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp72) #30 - %116 = load ptr, ptr %ref.tmp71, align 8, !tbaa !104 - %cmp.i.i.i.i261 = icmp eq ptr %116, %49 + %115 = load ptr, ptr %ref.tmp71, align 8, !tbaa !104 + %cmp.i.i.i.i261 = icmp eq ptr %115, %49 br i1 %cmp.i.i.i.i261, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i264, label %if.then.i.i.i262 _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i264: ; preds = %ehcleanup86 - %117 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 - %cmp3.i.i.i.i266 = icmp ult i64 %117, 4 + %116 = load i64, ptr %_M_string_length.i.i.i.i, align 8, !tbaa !97 + %cmp3.i.i.i.i266 = icmp ult i64 %116, 4 call void @llvm.assume(i1 %cmp3.i.i.i.i266) br label %_ZN3irr4core6stringIwED2Ev.exit267 if.then.i.i.i262: ; preds = %ehcleanup86 - call void @_ZdlPv(ptr noundef %116) #31 + call void @_ZdlPv(ptr noundef %115) #31 br label %_ZN3irr4core6stringIwED2Ev.exit267 _ZN3irr4core6stringIwED2Ev.exit267: ; preds = %if.then.i.i.i262, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i.i264 @@ -13254,32 +13252,32 @@ _ZN3irr4core6stringIwED2Ev.exit267: ; preds = %if.then.i.i.i262, % br label %common.resume if.end102: ; preds = %if.then94, %_ZN3irr4core6stringIwED2Ev.exit239 - %118 = load ptr, ptr %_M_storage.i.i.le, align 8, !tbaa !36 + %117 = load ptr, ptr %_M_storage.i.i.le, align 8, !tbaa !36 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp104) #30 - %119 = getelementptr inbounds nuw i8, ptr %ref.tmp104, i64 16 - store ptr %119, ptr %ref.tmp104, align 8, !tbaa !4 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3) %119, ptr noundef nonnull align 1 dereferenceable(3) @.str.69, i64 3, i1 false) + %118 = getelementptr inbounds nuw i8, ptr %ref.tmp104, i64 16 + store ptr %118, ptr %ref.tmp104, align 8, !tbaa !4 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3) %118, ptr noundef nonnull align 1 dereferenceable(3) @.str.69, i64 3, i1 false) %_M_string_length.i.i.i.i273 = getelementptr inbounds nuw i8, ptr %ref.tmp104, i64 8 store i64 3, ptr %_M_string_length.i.i.i.i273, align 8, !tbaa !14 %arrayidx.i.i.i274 = getelementptr inbounds nuw i8, ptr %ref.tmp104, i64 19 store i8 0, ptr %arrayidx.i.i.i274, align 1, !tbaa !13 - %attrs103 = getelementptr inbounds nuw i8, ptr %118, i64 32 + %attrs103 = getelementptr inbounds nuw i8, ptr %117, i64 32 %call.i281282 = invoke ptr @_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %attrs103, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp104) to label %invoke.cont109 unwind label %lpad108 invoke.cont109: ; preds = %if.end102 - %120 = load ptr, ptr %ref.tmp104, align 8, !tbaa !11 - %cmp.i.i.i283 = icmp eq ptr %120, %119 + %119 = load ptr, ptr %ref.tmp104, align 8, !tbaa !11 + %cmp.i.i.i283 = icmp eq ptr %119, %118 br i1 %cmp.i.i.i283, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i286, label %if.then.i.i284 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i286: ; preds = %invoke.cont109 - %121 = load i64, ptr %_M_string_length.i.i.i.i273, align 8, !tbaa !14 - %cmp3.i.i.i288 = icmp ult i64 %121, 16 + %120 = load i64, ptr %_M_string_length.i.i.i.i273, align 8, !tbaa !14 + %cmp3.i.i.i288 = icmp ult i64 %120, 16 call void @llvm.assume(i1 %cmp3.i.i.i288) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289 if.then.i.i284: ; preds = %invoke.cont109 - call void @_ZdlPv(ptr noundef %120) #31 + call void @_ZdlPv(ptr noundef %119) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289: ; preds = %if.then.i.i284, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i286 @@ -13288,33 +13286,33 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289: ; preds = %if br i1 %cmp.i290.not, label %if.end149, label %if.then123 if.then123: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289 - %122 = load ptr, ptr @g_gamecallback, align 8, !tbaa !36 - %tobool124.not = icmp eq ptr %122, null + %121 = load ptr, ptr @g_gamecallback, align 8, !tbaa !36 + %tobool124.not = icmp eq ptr %121, null %second131 = getelementptr inbounds nuw i8, ptr %call.i281282, i64 40 br i1 %tobool124.not, label %if.else129, label %if.then125 if.then125: ; preds = %if.then123 - %vtable127 = load ptr, ptr %122, align 8, !tbaa !162 + %vtable127 = load ptr, ptr %121, align 8, !tbaa !162 %vfn128 = getelementptr inbounds nuw i8, ptr %vtable127, i64 40 - %123 = load ptr, ptr %vfn128, align 8 - call void %123(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef nonnull align 8 dereferenceable(32) %second131) + %122 = load ptr, ptr %vfn128, align 8 + call void %122(ptr noundef nonnull align 8 dereferenceable(48) %121, ptr noundef nonnull align 8 dereferenceable(32) %second131) br label %if.end149 lpad108: ; preds = %if.end102 - %124 = landingpad { ptr, i32 } + %123 = landingpad { ptr, i32 } cleanup - %125 = load ptr, ptr %ref.tmp104, align 8, !tbaa !11 - %cmp.i.i.i291 = icmp eq ptr %125, %119 + %124 = load ptr, ptr %ref.tmp104, align 8, !tbaa !11 + %cmp.i.i.i291 = icmp eq ptr %124, %118 br i1 %cmp.i.i.i291, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i294, label %if.then.i.i292 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i294: ; preds = %lpad108 - %126 = load i64, ptr %_M_string_length.i.i.i.i273, align 8, !tbaa !14 - %cmp3.i.i.i296 = icmp ult i64 %126, 16 + %125 = load i64, ptr %_M_string_length.i.i.i.i273, align 8, !tbaa !14 + %cmp3.i.i.i296 = icmp ult i64 %125, 16 call void @llvm.assume(i1 %cmp3.i.i.i296) br label %ehcleanup114 if.then.i.i292: ; preds = %lpad108 - call void @_ZdlPv(ptr noundef %125) #31 + call void @_ZdlPv(ptr noundef %124) #31 br label %ehcleanup114 ehcleanup114: ; preds = %if.then.i.i292, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i294 @@ -13327,15 +13325,15 @@ if.else129: ; preds = %if.then123 if.end149: ; preds = %for.inc28.i.i, %for.cond, %if.else129, %if.then125, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit289, %if.then57, %if.else, %if.end23, %land.lhs.true4 %Parent.i = getelementptr inbounds nuw i8, ptr %this, i64 32 - %127 = load ptr, ptr %Parent.i, align 8, !tbaa !269 - %tobool.not.i299 = icmp eq ptr %127, null + %126 = load ptr, ptr %Parent.i, align 8, !tbaa !269 + %tobool.not.i299 = icmp eq ptr %126, null br i1 %tobool.not.i299, label %return, label %cond.true.i cond.true.i: ; preds = %if.end149 - %vtable.i = load ptr, ptr %127, align 8, !tbaa !162 + %vtable.i = load ptr, ptr %126, align 8, !tbaa !162 %vfn.i = getelementptr inbounds nuw i8, ptr %vtable.i, i64 16 - %128 = load ptr, ptr %vfn.i, align 8 - %call.i300 = call noundef zeroext i1 %128(ptr noundef nonnull align 8 dereferenceable(308) %127, ptr noundef nonnull align 8 dereferenceable(56) %event) + %127 = load ptr, ptr %vfn.i, align 8 + %call.i300 = call noundef zeroext i1 %127(ptr noundef nonnull align 8 dereferenceable(308) %126, ptr noundef nonnull align 8 dereferenceable(56) %event) br label %return return: ; preds = %cond.true.i, %if.end149, %if.then38 @@ -14111,8 +14109,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -14130,23 +14127,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !315 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -14154,31 +14151,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !89 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !89 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !89 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !89 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !89 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !89 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !89 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !89 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !317 @@ -14247,8 +14244,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -14266,23 +14262,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !318 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !89 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !89 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -14290,31 +14286,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !89 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !89 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !89 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !89 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !89 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !89 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !89 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !89 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !89 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !89 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !89 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !89 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !320 @@ -14559,7 +14555,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -14599,10 +14595,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !13 %13 = load ptr, ptr %Name, align 8, !tbaa !11 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !13 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/minetest/optimized/guiTable.cpp.ll b/bench/minetest/optimized/guiTable.cpp.ll index 2c1791729f..02bfd7cbdf 100644 --- a/bench/minetest/optimized/guiTable.cpp.ll +++ b/bench/minetest/optimized/guiTable.cpp.ll @@ -949,8 +949,7 @@ for.body.lr.ph.i: ; preds = %.noexc br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -968,23 +967,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %11, label %middle.block, label %vector.body, !llvm.loop !116 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %invoke.cont, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %12 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %12, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i.prol - %13 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i.prol - store i32 %13, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.i.prol + %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %4, i64 %indvars.iv.i.prol + store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -992,31 +991,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %14 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %15 = icmp ugt i64 %14, -4 - br i1 %15, label %invoke.cont, label %for.body.i + %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %14 = icmp ugt i64 %13, -4 + br i1 %14, label %invoke.cont, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.i - %16 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 + %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 %arrayidx.i.i = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.i - store i32 %16, ptr %arrayidx.i.i, align 4, !tbaa !67 + store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !67 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i - %17 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 + %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i - store i32 %17, ptr %arrayidx.i.i.1, align 4, !tbaa !67 + store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !67 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.1 - %18 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 + %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.1 - store i32 %18, ptr %arrayidx.i.i.2, align 4, !tbaa !67 + store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !67 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.i.2 - %19 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 + %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv.next.i.2 - store i32 %19, ptr %arrayidx.i.i.3, align 4, !tbaa !67 + store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !67 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %invoke.cont, label %for.body.i, !llvm.loop !121 @@ -1025,24 +1024,24 @@ invoke.cont: ; preds = %for.body.i, %for.bo ret void lpad: ; preds = %if.end.i - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup - %21 = load ptr, ptr %this, align 8, !tbaa !69 - %cmp.i.i.i = icmp eq ptr %21, %0 + %20 = load ptr, ptr %this, align 8, !tbaa !69 + %cmp.i.i.i = icmp eq ptr %20, %0 br i1 %cmp.i.i.i, label %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i, label %if.then.i.i _ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i: ; preds = %lpad - %22 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !66 - %cmp3.i.i.i = icmp ult i64 %22, 4 + %21 = load i64, ptr %_M_string_length.i.i.i, align 8, !tbaa !66 + %cmp3.i.i.i = icmp ult i64 %21, 4 tail call void @llvm.assume(i1 %cmp3.i.i.i) br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit if.then.i.i: ; preds = %lpad - tail call void @_ZdlPv(ptr noundef %21) #29 + tail call void @_ZdlPv(ptr noundef %20) #29 br label %_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit _ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev.exit: ; preds = %if.then.i.i, %_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv.exit.thread.i.i - resume { ptr, i32 } %20 + resume { ptr, i32 } %19 } declare i32 @__gxx_personality_v0(...) @@ -7446,8 +7445,7 @@ for.body.lr.ph: ; preds = %if.end br i1 %or.cond, label %for.body.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph - %n.mod.vf = and i64 %call.i, 7 - %n.vec = sub nuw nsw i64 %conv, %n.mod.vf + %n.vec = and i64 %call.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -7465,23 +7463,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !284 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %return, label %for.body.preheader for.body.preheader: ; preds = %middle.block, %for.body.lr.ph %indvars.iv.ph = phi i64 [ 0, %for.body.lr.ph ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i, %indvars.iv.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.prol.loopexit, label %for.body.prol for.body.prol: ; preds = %for.body.preheader, %for.body.prol %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %for.body.prol ], [ %indvars.iv.ph, %for.body.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.prol ], [ 0, %for.body.preheader ] - %arrayidx.prol = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.prol - %12 = load i32, ptr %arrayidx.prol, align 4, !tbaa !67 - %arrayidx.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.prol - store i32 %12, ptr %arrayidx.i.prol, align 4, !tbaa !67 + %arrayidx.prol = getelementptr inbounds nuw i32, ptr %c, i64 %indvars.iv.prol + %11 = load i32, ptr %arrayidx.prol, align 4, !tbaa !67 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.prol + store i32 %11, ptr %arrayidx.i.prol, align 4, !tbaa !67 %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -7489,31 +7487,31 @@ for.body.prol: ; preds = %for.body.preheader, for.body.prol.loopexit: ; preds = %for.body.prol, %for.body.preheader %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %for.body.preheader ], [ %indvars.iv.next.prol, %for.body.prol ] - %13 = sub nsw i64 %indvars.iv.ph, %conv - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %return, label %for.body + %12 = sub nsw i64 %indvars.iv.ph, %conv + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %return, label %for.body for.body: ; preds = %for.body.prol.loopexit, %for.body %indvars.iv = phi i64 [ %indvars.iv.next.3, %for.body ], [ %indvars.iv.unr, %for.body.prol.loopexit ] %arrayidx = getelementptr inbounds i32, ptr %c, i64 %indvars.iv - %15 = load i32, ptr %arrayidx, align 4, !tbaa !67 + %14 = load i32, ptr %arrayidx, align 4, !tbaa !67 %arrayidx.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv - store i32 %15, ptr %arrayidx.i, align 4, !tbaa !67 + store i32 %14, ptr %arrayidx.i, align 4, !tbaa !67 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %arrayidx.1 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next - %16 = load i32, ptr %arrayidx.1, align 4, !tbaa !67 + %15 = load i32, ptr %arrayidx.1, align 4, !tbaa !67 %arrayidx.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next - store i32 %16, ptr %arrayidx.i.1, align 4, !tbaa !67 + store i32 %15, ptr %arrayidx.i.1, align 4, !tbaa !67 %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2 %arrayidx.2 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.1 - %17 = load i32, ptr %arrayidx.2, align 4, !tbaa !67 + %16 = load i32, ptr %arrayidx.2, align 4, !tbaa !67 %arrayidx.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.1 - store i32 %17, ptr %arrayidx.i.2, align 4, !tbaa !67 + store i32 %16, ptr %arrayidx.i.2, align 4, !tbaa !67 %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3 %arrayidx.3 = getelementptr inbounds i32, ptr %c, i64 %indvars.iv.next.2 - %18 = load i32, ptr %arrayidx.3, align 4, !tbaa !67 + %17 = load i32, ptr %arrayidx.3, align 4, !tbaa !67 %arrayidx.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.2 - store i32 %18, ptr %arrayidx.i.3, align 4, !tbaa !67 + store i32 %17, ptr %arrayidx.i.3, align 4, !tbaa !67 %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4 %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %conv br i1 %exitcond.not.3, label %return, label %for.body, !llvm.loop !286 @@ -11480,8 +11478,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -11499,23 +11496,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !351 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -11523,31 +11520,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !67 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !67 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !67 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !67 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !67 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !67 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !67 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !67 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !353 @@ -11616,8 +11613,7 @@ for.body.lr.ph.i: ; preds = %if.end.i br i1 %or.cond, label %for.body.i.preheader, label %vector.ph vector.ph: ; preds = %for.body.lr.ph.i - %n.mod.vf = and i64 %call.i.i, 7 - %n.vec = sub nuw nsw i64 %conv.i, %n.mod.vf + %n.vec = and i64 %call.i.i, 4294967288 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph @@ -11635,23 +11631,23 @@ vector.body: ; preds = %vector.body, %vecto br i1 %10, label %middle.block, label %vector.body, !llvm.loop !354 middle.block: ; preds = %vector.body + %n.mod.vf = and i64 %call.i.i, 7 %cmp.n = icmp eq i64 %n.mod.vf, 0 br i1 %cmp.n, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %middle.block, %for.body.lr.ph.i %indvars.iv.i.ph = phi i64 [ 0, %for.body.lr.ph.i ], [ %n.vec, %middle.block ] - %11 = sub i64 %call.i.i, %indvars.iv.i.ph - %xtraiter = and i64 %11, 3 + %xtraiter = and i64 %call.i.i, 3 %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %for.body.i.prol.loopexit, label %for.body.i.prol for.body.i.prol: ; preds = %for.body.i.preheader, %for.body.i.prol %indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %for.body.i.prol ], [ %indvars.iv.i.ph, %for.body.i.preheader ] %prol.iter = phi i64 [ %prol.iter.next, %for.body.i.prol ], [ 0, %for.body.i.preheader ] - %arrayidx.i.prol = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i.prol - %12 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 - %arrayidx.i.i.prol = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i.prol - store i32 %12, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 + %arrayidx.i.prol = getelementptr inbounds nuw i32, ptr %text, i64 %indvars.iv.i.prol + %11 = load i32, ptr %arrayidx.i.prol, align 4, !tbaa !67 + %arrayidx.i.i.prol = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv.i.prol + store i32 %11, ptr %arrayidx.i.i.prol, align 4, !tbaa !67 %indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1 %prol.iter.next = add nuw nsw i64 %prol.iter, 1 %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter @@ -11659,31 +11655,31 @@ for.body.i.prol: ; preds = %for.body.i.preheade for.body.i.prol.loopexit: ; preds = %for.body.i.prol, %for.body.i.preheader %indvars.iv.i.unr = phi i64 [ %indvars.iv.i.ph, %for.body.i.preheader ], [ %indvars.iv.next.i.prol, %for.body.i.prol ] - %13 = sub nsw i64 %indvars.iv.i.ph, %conv.i - %14 = icmp ugt i64 %13, -4 - br i1 %14, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i + %12 = sub nsw i64 %indvars.iv.i.ph, %conv.i + %13 = icmp ugt i64 %12, -4 + br i1 %13, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i for.body.i: ; preds = %for.body.i.prol.loopexit, %for.body.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i.3, %for.body.i ], [ %indvars.iv.i.unr, %for.body.i.prol.loopexit ] %arrayidx.i = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.i - %15 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 + %14 = load i32, ptr %arrayidx.i, align 4, !tbaa !67 %arrayidx.i.i = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i - store i32 %15, ptr %arrayidx.i.i, align 4, !tbaa !67 + store i32 %14, ptr %arrayidx.i.i, align 4, !tbaa !67 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %arrayidx.i.1 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i - %16 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 + %15 = load i32, ptr %arrayidx.i.1, align 4, !tbaa !67 %arrayidx.i.i.1 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i - store i32 %16, ptr %arrayidx.i.i.1, align 4, !tbaa !67 + store i32 %15, ptr %arrayidx.i.i.1, align 4, !tbaa !67 %indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.i, 2 %arrayidx.i.2 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.1 - %17 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 + %16 = load i32, ptr %arrayidx.i.2, align 4, !tbaa !67 %arrayidx.i.i.2 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.1 - store i32 %17, ptr %arrayidx.i.i.2, align 4, !tbaa !67 + store i32 %16, ptr %arrayidx.i.i.2, align 4, !tbaa !67 %indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.i, 3 %arrayidx.i.3 = getelementptr inbounds i32, ptr %text, i64 %indvars.iv.next.i.2 - %18 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 + %17 = load i32, ptr %arrayidx.i.3, align 4, !tbaa !67 %arrayidx.i.i.3 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.next.i.2 - store i32 %18, ptr %arrayidx.i.i.3, align 4, !tbaa !67 + store i32 %17, ptr %arrayidx.i.i.3, align 4, !tbaa !67 %indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.i, 4 %exitcond.not.i.3 = icmp eq i64 %indvars.iv.next.i.3, %conv.i br i1 %exitcond.not.i.3, label %_ZN3irr4core6stringIwEaSIwEERS2_PKT_.exit, label %for.body.i, !llvm.loop !356 @@ -11928,7 +11924,7 @@ for.body.i.preheader: ; preds = %if.end.i br i1 %3, label %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, label %for.body.i.preheader.new for.body.i.preheader.new: ; preds = %for.body.i.preheader - %unroll_iter = sub nuw nsw i64 %conv.i, %xtraiter + %unroll_iter = and i64 %call.i.i, 4294967292 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.i.preheader.new @@ -11968,10 +11964,10 @@ _ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa: ; preds = %for.bod for.body.i.epil: ; preds = %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa, %for.body.i.epil %indvars.iv.i.epil = phi i64 [ %indvars.iv.next.i.epil, %for.body.i.epil ], [ %indvars.iv.i.unr, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %_ZN3irr4core6stringIcEaSIcEERS2_PKT_.exit.loopexit.unr-lcssa ] - %arrayidx.i.epil = getelementptr inbounds i8, ptr %name, i64 %indvars.iv.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw i8, ptr %name, i64 %indvars.iv.i.epil %12 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !110 %13 = load ptr, ptr %Name, align 8, !tbaa !114 - %arrayidx.i.i.epil = getelementptr inbounds i8, ptr %13, i64 %indvars.iv.i.epil + %arrayidx.i.i.epil = getelementptr inbounds nuw i8, ptr %13, i64 %indvars.iv.i.epil store i8 %12, ptr %arrayidx.i.i.epil, align 1, !tbaa !110 %indvars.iv.next.i.epil = add nuw nsw i64 %indvars.iv.i.epil, 1 %epil.iter.next = add nuw nsw i64 %epil.iter, 1 diff --git a/bench/redis/optimized/lua_struct.ll b/bench/redis/optimized/lua_struct.ll index 6031175bed..29e8d02940 100644 --- a/bench/redis/optimized/lua_struct.ll +++ b/bench/redis/optimized/lua_struct.ll @@ -158,7 +158,7 @@ for.body.preheader.i: ; preds = %for.cond.preheader. br i1 %9, label %putinteger.exit.loopexit.unr-lcssa, label %for.body.preheader.i.new for.body.preheader.i.new: ; preds = %for.body.preheader.i - %unroll_iter = sub nsw i64 %wide.trip.count.i, %xtraiter + %unroll_iter = and i64 %call5, 2147483644 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.preheader.i.new @@ -209,7 +209,7 @@ for.body.i.epil: ; preds = %putinteger.exit.loo %value.139.i.epil = phi i64 [ %shr.i.epil, %for.body.i.epil ], [ %value.139.i.unr, %putinteger.exit.loopexit.unr-lcssa ] %epil.iter = phi i64 [ %epil.iter.next, %for.body.i.epil ], [ 0, %putinteger.exit.loopexit.unr-lcssa ] %conv7.i.epil = trunc i64 %value.139.i.epil to i8 - %arrayidx.i.epil = getelementptr inbounds [32 x i8], ptr %buff.i, i64 0, i64 %indvars.iv43.i.epil + %arrayidx.i.epil = getelementptr inbounds nuw [32 x i8], ptr %buff.i, i64 0, i64 %indvars.iv43.i.epil store i8 %conv7.i.epil, ptr %arrayidx.i.epil, align 1, !tbaa !10 %shr.i.epil = lshr i64 %value.139.i.epil, 8 %indvars.iv.next44.i.epil = add nuw nsw i64 %indvars.iv43.i.epil, 1 @@ -489,7 +489,7 @@ for.body.preheader.i: ; preds = %for.cond.preheader. br i1 %11, label %if.end.i143.loopexit.unr-lcssa, label %for.body.preheader.i.new for.body.preheader.i.new: ; preds = %for.body.preheader.i - %unroll_iter = and i64 %call7, 9223372036854775804 + %unroll_iter = and i64 %call7, 2147483644 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.preheader.i.new